From: H. Peter Anvin Date: Sun, 04 Dec 2005 21:07:42 GMT Subject: Re: [PATCH] Add compat/setenv.c, use in git.c. Message-ID: <43935A9E.2060602@zytor.com> In-Reply-To: <28409.1133564908@lotus.CS.Berkeley.EDU> Jason Riedy wrote: > + > +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; > +} Wouldn't this be a good case for using alloca()? -hpa