mirror of
https://github.com/git/git.git
synced 2024-11-24 02:17:02 +08:00
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:
parent
5ea06e2014
commit
731043fd4d
5
Makefile
5
Makefile
@ -232,6 +232,7 @@ ifeq ($(uname_S),SunOS)
|
||||
SHELL_PATH = /bin/bash
|
||||
NO_STRCASESTR = YesPlease
|
||||
ifeq ($(uname_R),5.8)
|
||||
NO_UNSETENV = YesPlease
|
||||
NO_SETENV = YesPlease
|
||||
endif
|
||||
INSTALL = ginstall
|
||||
@ -355,6 +356,10 @@ ifdef NO_SETENV
|
||||
COMPAT_CFLAGS += -DNO_SETENV
|
||||
COMPAT_OBJS += compat/setenv.o
|
||||
endif
|
||||
ifdef NO_SETENV
|
||||
COMPAT_CFLAGS += -DNO_UNSETENV
|
||||
COMPAT_OBJS += compat/unsetenv.o
|
||||
endif
|
||||
ifdef NO_MMAP
|
||||
COMPAT_CFLAGS += -DNO_MMAP
|
||||
COMPAT_OBJS += compat/mmap.o
|
||||
|
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;
|
||||
}
|
@ -1,3 +1,4 @@
|
||||
#include "git-compat-util.h"
|
||||
#include "cache.h"
|
||||
#include "pkt-line.h"
|
||||
#include "quote.h"
|
||||
|
@ -63,6 +63,11 @@ extern int gitfakemunmap(void *start, size_t length);
|
||||
extern int gitsetenv(const char *, const char *, int);
|
||||
#endif
|
||||
|
||||
#ifdef NO_UNSETENV
|
||||
#define unsetenv gitunsetenv
|
||||
extern void gitunsetenv(const char *);
|
||||
#endif
|
||||
|
||||
#ifdef NO_STRCASESTR
|
||||
#define strcasestr gitstrcasestr
|
||||
extern char *gitstrcasestr(const char *haystack, const char *needle);
|
||||
|
Loading…
Reference in New Issue
Block a user