You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
98 lines
2.8 KiB
98 lines
2.8 KiB
/* OS/2 compatibility functions. |
|
Copyright (C) 2001-2002 Free Software Foundation, Inc. |
|
|
|
This program is free software; you can redistribute it and/or modify it |
|
under the terms of the GNU Library General Public License as published |
|
by the Free Software Foundation; either version 2, or (at your option) |
|
any later version. |
|
|
|
This program is distributed in the hope that it will be useful, |
|
but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
|
Library General Public License for more details. |
|
|
|
You should have received a copy of the GNU Library General Public |
|
License along with this program; if not, write to the Free Software |
|
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
|
USA. */ |
|
|
|
#define OS2_AWARE |
|
#ifdef HAVE_CONFIG_H |
|
#include <config.h> |
|
#endif |
|
|
|
#include <stdlib.h> |
|
#include <string.h> |
|
#include <sys/param.h> |
|
|
|
/* A version of getenv() that works from DLLs */ |
|
extern unsigned long DosScanEnv (const unsigned char *pszName, unsigned char **ppszValue); |
|
|
|
char * |
|
_nl_getenv (const char *name) |
|
{ |
|
unsigned char *value; |
|
if (DosScanEnv (name, &value)) |
|
return NULL; |
|
else |
|
return value; |
|
} |
|
|
|
/* A fixed size buffer. */ |
|
char libintl_nl_default_dirname[MAXPATHLEN+1]; |
|
|
|
char *_nlos2_libdir = NULL; |
|
char *_nlos2_localealiaspath = NULL; |
|
char *_nlos2_localedir = NULL; |
|
|
|
static __attribute__((constructor)) void |
|
nlos2_initialize () |
|
{ |
|
char *root = getenv ("UNIXROOT"); |
|
char *gnulocaledir = getenv ("GNULOCALEDIR"); |
|
|
|
_nlos2_libdir = gnulocaledir; |
|
if (!_nlos2_libdir) |
|
{ |
|
if (root) |
|
{ |
|
size_t sl = strlen (root); |
|
_nlos2_libdir = (char *) malloc (sl + strlen (LIBDIR) + 1); |
|
memcpy (_nlos2_libdir, root, sl); |
|
memcpy (_nlos2_libdir + sl, LIBDIR, strlen (LIBDIR) + 1); |
|
} |
|
else |
|
_nlos2_libdir = LIBDIR; |
|
} |
|
|
|
_nlos2_localealiaspath = gnulocaledir; |
|
if (!_nlos2_localealiaspath) |
|
{ |
|
if (root) |
|
{ |
|
size_t sl = strlen (root); |
|
_nlos2_localealiaspath = (char *) malloc (sl + strlen (LOCALE_ALIAS_PATH) + 1); |
|
memcpy (_nlos2_localealiaspath, root, sl); |
|
memcpy (_nlos2_localealiaspath + sl, LOCALE_ALIAS_PATH, strlen (LOCALE_ALIAS_PATH) + 1); |
|
} |
|
else |
|
_nlos2_localealiaspath = LOCALE_ALIAS_PATH; |
|
} |
|
|
|
_nlos2_localedir = gnulocaledir; |
|
if (!_nlos2_localedir) |
|
{ |
|
if (root) |
|
{ |
|
size_t sl = strlen (root); |
|
_nlos2_localedir = (char *) malloc (sl + strlen (LOCALEDIR) + 1); |
|
memcpy (_nlos2_localedir, root, sl); |
|
memcpy (_nlos2_localedir + sl, LOCALEDIR, strlen (LOCALEDIR) + 1); |
|
} |
|
else |
|
_nlos2_localedir = LOCALEDIR; |
|
} |
|
|
|
if (strlen (_nlos2_localedir) <= MAXPATHLEN) |
|
strcpy (libintl_nl_default_dirname, _nlos2_localedir); |
|
}
|
|
|