When named file not found and not absolute use path in I18NPATH.
authordrepper <drepper>
Sun, 9 Mar 1997 06:06:56 +0000 (06:06 +0000)
committerdrepper <drepper>
Sun, 9 Mar 1997 06:06:56 +0000 (06:06 +0000)
locale/programs/locfile.c

index 4ab0425..aecc891 100644 (file)
@@ -26,6 +26,7 @@
 #include <locale.h>
 #include <malloc.h>
 #include <stdio.h>
+#include <stdlib.h>
 #include <string.h>
 #include <unistd.h>
 #include <sys/stat.h>
@@ -76,10 +77,31 @@ locfile_read (const char *filename, struct charset_t *charset)
     {
       if (filename[0] != '/')
        {
-         char path[strlen (filename) + 1 + sizeof (LOCSRCDIR)];
+         char *i18npath = __secure_getenv ("I18NPATH");
+         if (i18npath != NULL && *i18npath != '\0')
+           {
+             char path[strlen (filename) + 1 + strlen (i18npath) + 1];
+             char *next;
+             i18npath = strdupa (i18npath);
+
+
+             while (ldfile == NULL
+                    && (next = strsep (&i18npath, ":")) != NULL)
+               {
+                 stpcpy (stpcpy (stpcpy (path, next), "/"), filename);
+
+                 ldfile = lr_open (path, locfile_hash);
+               }
+           }
 
-         stpcpy (stpcpy (stpcpy (path, LOCSRCDIR), "/"), filename);
-         ldfile = lr_open (path, locfile_hash);
+         /* Test in the default directory.  */
+         if (ldfile == NULL)
+           {
+             char path[strlen (filename) + 1 + sizeof (LOCSRCDIR)];
+
+             stpcpy (stpcpy (stpcpy (path, LOCSRCDIR), "/"), filename);
+             ldfile = lr_open (path, locfile_hash);
+           }
        }
 
       if (ldfile == NULL)