Subversion Repositories SvarDOS

Rev

Rev 1301 | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 1301 Rev 1306
Line 20... Line 20...
20
 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
20
 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
21
 * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
21
 * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
22
 * DEALINGS IN THE SOFTWARE.
22
 * DEALINGS IN THE SOFTWARE.
23
 */
23
 */
24
 
24
 
25
#include <stdlib.h>  /* getenv(), NULL */
-
 
26
#include "svarlang.h"
25
#include "svarlang.h"
27
 
26
 
28
 
27
 
29
int svarlang_autoload_nlspath(const char *progname) {
28
int svarlang_autoload_pathlist(const char *progname, const char *pathlist, const char *lang) {
30
  const char *lang;
-
 
31
  const char *nlspath;
-
 
32
  char buff[128];
29
  char buff[128];
33
  unsigned short i, ii;
30
  unsigned short i, ii;
34
 
31
 
35
  /* read and validate LANG */
32
  /* read and validate LANG and pathlist */
36
  lang = getenv("LANG");
-
 
37
  if ((lang == NULL) || (lang[0] == 0)) return(-1);
33
  if ((!lang) || (lang[0] == 0) || (!pathlist)) return(-1);
38
 
-
 
39
  /* read and validate NLSPATH */
-
 
40
  nlspath = getenv("NLSPATH");
-
 
41
  if (nlspath == NULL) return(-2);
-
 
42
 
34
 
43
  /* look into every path in NLSPATH */
35
  /* look into every path in NLSPATH */
44
  while (*nlspath != 0) {
36
  while (*pathlist != 0) {
45
 
37
 
46
    /* skip any leading ';' separators */
38
    /* skip any leading ';' separators */
47
    while (*nlspath == ';') nlspath++;
39
    while (*pathlist == ';') pathlist++;
48
 
40
 
49
    if (*nlspath == 0) return(-3);
41
    if (*pathlist == 0) return(-3);
50
 
42
 
51
    /* copy nlspath to buff and remember len */
43
    /* copy nlspath to buff and remember len */
52
    for (i = 0; (nlspath[i] != 0) && (nlspath[i] != ';'); i++) buff[i] = nlspath[i];
44
    for (i = 0; (pathlist[i] != 0) && (pathlist[i] != ';'); i++) buff[i] = pathlist[i];
53
    nlspath += i;
45
    pathlist += i;
54
 
46
 
55
    /* add a trailing backslash if there is none (non-empty paths empty) */
47
    /* add a trailing backslash if there is none (non-empty paths empty) */
56
    if ((i > 0) && (buff[i - 1] != '\\')) buff[i++] = '\\';
48
    if ((i > 0) && (buff[i - 1] != '\\')) buff[i++] = '\\';
57
 
49
 
58
    /* append progname + ".LNG" to the path */
50
    /* append progname + ".LNG" to the path */