1
/* OS/2 compatibility functions.
2
Copyright (C) 2001-2002 Free Software Foundation, Inc.
4
This program is free software; you can redistribute it and/or modify it
5
under the terms of the GNU Library General Public License as published
6
by the Free Software Foundation; either version 2, or (at your option)
9
This program is distributed in the hope that it will be useful,
10
but WITHOUT ANY WARRANTY; without even the implied warranty of
11
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12
Library General Public License for more details.
14
You should have received a copy of the GNU Library General Public
15
License along with this program; if not, write to the Free Software
16
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
26
#include <sys/param.h>
28
/* A version of getenv() that works from DLLs */
29
extern unsigned long DosScanEnv (const unsigned char *pszName, unsigned char **ppszValue);
32
_nl_getenv (const char *name)
35
if (DosScanEnv (name, &value))
41
/* A fixed size buffer. */
42
char _nl_default_dirname__[MAXPATHLEN+1];
44
char *_nlos2_libdir = NULL;
45
char *_nlos2_localealiaspath = NULL;
46
char *_nlos2_localedir = NULL;
48
static __attribute__((constructor)) void
51
char *root = getenv ("UNIXROOT");
52
char *gnulocaledir = getenv ("GNULOCALEDIR");
54
_nlos2_libdir = gnulocaledir;
59
size_t sl = strlen (root);
60
_nlos2_libdir = (char *) malloc (sl + strlen (LIBDIR) + 1);
61
memcpy (_nlos2_libdir, root, sl);
62
memcpy (_nlos2_libdir + sl, LIBDIR, strlen (LIBDIR) + 1);
65
_nlos2_libdir = LIBDIR;
68
_nlos2_localealiaspath = gnulocaledir;
69
if (!_nlos2_localealiaspath)
73
size_t sl = strlen (root);
74
_nlos2_localealiaspath = (char *) malloc (sl + strlen (LOCALE_ALIAS_PATH) + 1);
75
memcpy (_nlos2_localealiaspath, root, sl);
76
memcpy (_nlos2_localealiaspath + sl, LOCALE_ALIAS_PATH, strlen (LOCALE_ALIAS_PATH) + 1);
79
_nlos2_localealiaspath = LOCALE_ALIAS_PATH;
82
_nlos2_localedir = gnulocaledir;
83
if (!_nlos2_localedir)
87
size_t sl = strlen (root);
88
_nlos2_localedir = (char *) malloc (sl + strlen (LOCALEDIR) + 1);
89
memcpy (_nlos2_localedir, root, sl);
90
memcpy (_nlos2_localedir + sl, LOCALEDIR, strlen (LOCALEDIR) + 1);
93
_nlos2_localedir = LOCALEDIR;
96
if (strlen (_nlos2_localedir) <= MAXPATHLEN)
97
strcpy (_nl_default_dirname__, _nlos2_localedir);