mirror of
https://github.com/git/git.git
synced 2024-12-14 20:33:46 +08:00
85023577a8
This is a mechanical clean-up of the way *.c files include system header files. (1) sources under compat/, platform sha-1 implementations, and xdelta code are exempt from the following rules; (2) the first #include must be "git-compat-util.h" or one of our own header file that includes it first (e.g. config.h, builtin.h, pkt-line.h); (3) system headers that are included in "git-compat-util.h" need not be included in individual C source files. (4) "git-compat-util.h" does not have to include subsystem specific header files (e.g. expat.h). Signed-off-by: Junio C Hamano <junkio@cox.net>
35 lines
786 B
C
35 lines
786 B
C
#include "../git-compat-util.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));
|
|
if (!envstr) return -1;
|
|
|
|
memcpy(envstr, name, namelen);
|
|
envstr[namelen] = '=';
|
|
memcpy(envstr + namelen + 1, value, valuelen);
|
|
envstr[namelen + valuelen + 1] = 0;
|
|
|
|
out = putenv(envstr);
|
|
/* putenv(3) makes the argument string part of the environment,
|
|
* and changing that string modifies the environment --- which
|
|
* means we do not own that storage anymore. Do not free
|
|
* envstr.
|
|
*/
|
|
|
|
return out;
|
|
}
|