]> git.ipfire.org Git - thirdparty/gettext.git/commitdiff
intl: Support UNIXROOT in BINDTEXTDOMAIN () on EMX
authorKO Myung-Hun <komh78@gmail.com>
Tue, 12 Jan 2016 02:35:48 +0000 (11:35 +0900)
committerDaiki Ueno <ueno@gnu.org>
Wed, 20 Jan 2016 02:38:19 +0000 (11:38 +0900)
$UNIXROOT is a drive on which a root of FHS is.

* gettext-runtime/intl/bindtextdom.c (BINDTEXTDOMAIN): Prepend
$UNIXROOT to dirname if it is started '/' or it is an empty string.

gettext-runtime/intl/bindtextdom.c

index bbb23b901818843b10136a0344f33c14b44d7397..bd82f1a1fa9ded86feac377109aa5030bcda1015 100644 (file)
@@ -317,7 +317,33 @@ set_binding_values (const char *domainname,
 char *
 BINDTEXTDOMAIN (const char *domainname, const char *dirname)
 {
+#ifdef __EMX__
+  const char *saved_dirname = dirname;
+  char dirname_with_drive[_MAX_PATH];
+
+  /* Resolve UNIXROOT into dirname if it is not resolved by os2compat.[ch]. */
+  if (dirname && (dirname[0] == '/' || dirname[0] == '\\' ))
+    {
+      const char *unixroot = getenv ("UNIXROOT");
+      size_t len = strlen (dirname) + 1;
+
+      if (unixroot
+          && unixroot[0] != '\0'
+          && unixroot[1] == ':'
+          && unixroot[2] == '\0'
+          && 2 + len <= _MAX_PATH)
+        {
+          memcpy (dirname_with_drive, unixroot, 2);
+          memcpy (dirname_with_drive + 2, dirname, len);
+
+          dirname = dirname_with_drive;
+        }
+    }
+#endif
   set_binding_values (domainname, &dirname, NULL);
+#ifdef __EMX__
+  dirname = saved_dirname;
+#endif
   return (char *) dirname;
 }