Files
seta75D 7c4988eac0 Init
2021-10-11 19:38:01 -03:00

66 lines
1.3 KiB
C
Executable File

/* Copyright (c) 1988 AT&T */
/* All Rights Reserved */
/* THIS IS UNPUBLISHED PROPRIETARY SOURCE CODE OF AT&T */
/* The copyright notice above does not evidence any */
/* actual or intended publication of such source code. */
#ident "@(#)getenv.c 1.11 93/09/13 SMI" /* SVr4.0 1.8 */
/*LINTLIBRARY*/
/*
* getenv(name)
* returns ptr to value associated with name, if any, else NULL
*/
#define NULL 0
#include "synonyms.h"
#include "shlib.h"
#include <thread.h>
#include <synch.h>
#include <mtlib.h>
extern char **environ;
static char *nvmatch();
#ifdef _REENTRANT
extern mutex_t __environ_lock;
#endif _REENTRANT
char *
getenv(name)
register const char *name;
{
register char *v = NULL, **p;
_mutex_lock(&__environ_lock);
p = environ;
if (p == NULL) {
_mutex_unlock(&__environ_lock);
return (NULL);
}
while (*p != NULL)
if ((v = nvmatch(name, *p++)) != NULL)
break;
_mutex_unlock(&__environ_lock);
return (v);
}
/*
* s1 is either name, or name=value
* s2 is name=value
* if names match, return value of s2, else NULL
* used for environment searching: see getenv
*/
static char *
nvmatch(s1, s2)
register char *s1, *s2;
{
while (*s1 == *s2++)
if (*s1++ == '=')
return (s2);
if (*s1 == '\0' && *(s2-1) == '=')
return (s2);
return (NULL);
}