tools/nolibc/stdlib: add a simple getenv() implementation
This implementation relies on an extern definition of the environ variable, that the caller must declare and initialize from envp. Signed-off-by: Willy Tarreau <w@1wt.eu> Signed-off-by: Paul E. McKenney <paulmck@kernel.org>
This commit is contained in:
parent
170b230d22
commit
077d0a3924
|
@ -60,6 +60,29 @@ int atoi(const char *s)
|
||||||
return atol(s);
|
return atol(s);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Tries to find the environment variable named <name> in the environment array
|
||||||
|
* pointed to by global variable "environ" which must be declared as a char **,
|
||||||
|
* and must be terminated by a NULL (it is recommended to set this variable to
|
||||||
|
* the "envp" argument of main()). If the requested environment variable exists
|
||||||
|
* its value is returned otherwise NULL is returned.
|
||||||
|
*/
|
||||||
|
static __attribute__((unused))
|
||||||
|
char *getenv(const char *name)
|
||||||
|
{
|
||||||
|
extern char **environ;
|
||||||
|
int idx, i;
|
||||||
|
|
||||||
|
if (environ) {
|
||||||
|
for (idx = 0; environ[idx]; idx++) {
|
||||||
|
for (i = 0; name[i] && name[i] == environ[idx][i];)
|
||||||
|
i++;
|
||||||
|
if (!name[i] && environ[idx][i] == '=')
|
||||||
|
return &environ[idx][i+1];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
/* Converts the unsigned long integer <in> to its hex representation into
|
/* Converts the unsigned long integer <in> to its hex representation into
|
||||||
* buffer <buffer>, which must be long enough to store the number and the
|
* buffer <buffer>, which must be long enough to store the number and the
|
||||||
* trailing zero (17 bytes for "ffffffffffffffff" or 9 for "ffffffff"). The
|
* trailing zero (17 bytes for "ffffffffffffffff" or 9 for "ffffffff"). The
|
||||||
|
|
Loading…
Reference in New Issue