Browse Source
There is no setenv() in Solaris 5.8. The trivial calls to setenv() were replaced by putenv() in a much earlier patch, but setenv() was used again in git.c. This patch just adds a compat/setenv.c. The rule for building git$(X) also needs to include compat. objects and compiler flags. Those are now in makefile vars COMPAT_OBJS and COMPAT_CFLAGS. Signed-off-by: E. Jason Riedy <ejr@cs.berkeley.edu> Signed-off-by: Junio C Hamano <junkio@cox.net>maint
Jason Riedy
19 years ago
committed by
Junio C Hamano
3 changed files with 53 additions and 9 deletions
@ -0,0 +1,31 @@
@@ -0,0 +1,31 @@
|
||||
#include <stdlib.h> |
||||
#include <string.h> |
||||
|
||||
int gitsetenv(const char *name, const char *value, int replace) |
||||
{ |
||||
int out; |
||||
size_t namelen, valuelen; |
||||
char *envstr; |
||||
|
||||
if (!name || !value) return -1; |
||||
if (!replace) { |
||||
char *oldval = NULL; |
||||
oldval = getenv(name); |
||||
if (oldval) return 0; |
||||
} |
||||
|
||||
namelen = strlen(name); |
||||
valuelen = strlen(value); |
||||
envstr = malloc((namelen + valuelen + 2) * sizeof(char)); |
||||
if (!envstr) return -1; |
||||
|
||||
memcpy(envstr, name, namelen); |
||||
envstr[namelen] = '='; |
||||
memcpy(envstr + namelen + 1, value, valuelen); |
||||
envstr[namelen + valuelen + 1] = 0; |
||||
|
||||
out = putenv(envstr); |
||||
|
||||
free(envstr); |
||||
return out; |
||||
} |
Loading…
Reference in new issue