git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: [PATCH] Add compat/setenv.c, use in git.c.

From
HAH. Peter Anvin <hpa@zytor.com>
Date
Dec 4, 2005, 21:07 UTC
Message-ID
<43935A9E.2060602@zytor.com>
In-Reply-To
<28409.1133564908@lotus.CS.Berkeley.EDU>
Jason Riedy wrote:
Show 29 quoted lines
> +
> +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
Previous: Junio C HamanoNext: Junio C Hamano
Message 3 of 15 in “Add compat/setenv.c, use in git.c.”
  1. Add compat/setenv.c, use in git.c.Jason Riedy, Dec 2, 2005
  2. Junio C HamanoDec 4, 2005
  3. H. Peter AnvinDec 4, 2005
  4. Junio C HamanoDec 4, 2005
  5. Junio C HamanoDec 4, 2005
  6. H. Peter AnvinDec 4, 2005
  7. Jason RiedyDec 5, 2005
  8. H. Peter AnvinDec 5, 2005
  9. Junio C HamanoDec 6, 2005
  10. Jason RiedyDec 6, 2005
  11. Morten WelinderDec 6, 2005
  12. Junio C HamanoDec 6, 2005
  13. Jason RiedyDec 6, 2005
  14. Morten WelinderDec 7, 2005
  15. compat/setenv: do not free what we fed putenv(3).Junio C Hamano, Dec 4, 2005

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.