diff options
Diffstat (limited to 'gettext-runtime/intl/bindtextdom.c')
-rw-r--r-- | gettext-runtime/intl/bindtextdom.c | 28 |
1 files changed, 27 insertions, 1 deletions
diff --git a/gettext-runtime/intl/bindtextdom.c b/gettext-runtime/intl/bindtextdom.c index 887393c..bd82f1a 100644 --- a/gettext-runtime/intl/bindtextdom.c +++ b/gettext-runtime/intl/bindtextdom.c @@ -1,5 +1,5 @@ /* Implementation of the bindtextdomain(3) function - Copyright (C) 1995-2015 Free Software Foundation, Inc. + Copyright (C) 1995-2016 Free Software Foundation, Inc. This program is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by @@ -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; } |