Cygwin: access: Fix X_OK behaviour for backup operators and admins
[newlib-cygwin.git] / newlib / libc / sys / rdos / getenv.c
blob1787769e3b8a4fda64382079b4fdfc757fefc23b
1 /*#######################################################################
2 # RDOS operating system
3 # Copyright (C) 1988-2006, Leif Ekblad
5 # This library is free software; you can redistribute it and/or modify
6 # it under the terms of the GNU Lesser General Public License as published
7 # by the Free Software Foundation; either version 2.1 of the License, or
8 # (at your option) any later version.
10 # This library is distributed in the hope that it will be useful,
11 # but WITHOUT ANY WARRANTY; without even the implied warranty of
12 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 # GNU Lesser General Public License for more details.
15 # You should have received a copy of the GNU Lesser General Public
16 # License along with this library; if not, write to the Free Software
17 # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
19 # The author of this program may be contacted at leif@rdos.net
21 # getenv.c
22 # getenv function implementation
24 ##########################################################################*/
27 FUNCTION
28 <<getenv>>---look up environment variable
30 INDEX
31 getenv
32 INDEX
33 environ
35 SYNOPSIS
36 #include <stdlib.h>
37 char *getenv(const char *<[name]>);
39 DESCRIPTION
40 <<getenv>> searches the list of environment variable names and values
41 (using the global pointer ``<<char **environ>>'') for a variable whose
42 name matches the string at <[name]>. If a variable name matches,
43 <<getenv>> returns a pointer to the associated value.
45 RETURNS
46 A pointer to the (string) value of the environment variable, or
47 <<NULL>> if there is no such environment variable.
49 PORTABILITY
50 <<getenv>> is ANSI, but the rules for properly forming names of environment
51 variables vary from one system to another.
53 This function is not thread-safe, but does it need to be??
54 There is an reentrant class that should be used if reentrance is required
58 #include <stdlib.h>
59 #include <stddef.h>
60 #include <string.h>
61 #include <rdos.h>
63 static char envbuf[256];
65 char *getenv(const char *name)
67 int handle;
68 char *ptr = 0;
70 handle = RdosOpenSysEnv();
71 if (handle)
73 if (RdosFindEnvVar(handle, name, envbuf))
74 ptr = envbuf;
76 RdosCloseEnv(handle);
77 return ptr;