Add compat/unsetenv.c .
Implement a (slow) unsetenv() for older systems. Signed-off-by: Jason Riedy <ejr@cs.berkeley.edu> Signed-off-by: Junio C Hamano <junkio@cox.net>
This commit is contained in:

committed by
Junio C Hamano

parent
5ea06e2014
commit
731043fd4d
26
compat/unsetenv.c
Normal file
26
compat/unsetenv.c
Normal file
@ -0,0 +1,26 @@
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
|
||||
void gitunsetenv (const char *name)
|
||||
{
|
||||
extern char **environ;
|
||||
int src, dst;
|
||||
size_t nmln;
|
||||
|
||||
nmln = strlen(name);
|
||||
|
||||
for (src = dst = 0; environ[src]; ++src) {
|
||||
size_t enln;
|
||||
enln = strlen(environ[src]);
|
||||
if (enln > nmln) {
|
||||
/* might match, and can test for '=' safely */
|
||||
if (0 == strncmp (environ[src], name, nmln)
|
||||
&& '=' == environ[src][nmln])
|
||||
/* matches, so skip */
|
||||
continue;
|
||||
}
|
||||
environ[dst] = environ[src];
|
||||
++dst;
|
||||
}
|
||||
environ[dst] = NULL;
|
||||
}
|
Reference in New Issue
Block a user