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

Re: [PATCH 3/3] Remove unsupported C99 style struct initializers in git-archive.

From
Shawn Pearce <spearce@spearce.org>
Date
Nov 5, 2006, 07:36 UTC
Message-ID
<20061105073634.GA4616@spearce.org>
In-Reply-To
<7vd582uz5b.fsf@assigned-by-dhcp.cox.net>
Junio C Hamano <junkio@cox.net> wrote:
Show 15 quoted lines
> "Shawn O. Pearce" <spearce@spearce.org> writes:
> 
> > +static struct archiver_desc
> > +{
> > +	const char *name;
> > +	write_archive_fn_t write_archive;
> > +	parse_extra_args_fn_t parse_extra;
> > +} archivers[] = {
> > +	{ "tar", write_tar_archive, NULL },
> > +	{ "zip", write_zip_archive, parse_extra_zip_args },
> >  };
> 
> If this were a struct with bazillions of fields I might have had
> trouble swallowing the change, but this is so small that it is
> no brainer.
Right; if it was larger I would have been in trouble.  :-)
Show 15 quoted lines
> I think this actually is an improvement.
> 
> >  static int run_remote_archiver(const char *remote, int argc,
> > @@ -88,7 +86,10 @@ static int init_archiver(const char *nam
> >  
> >  	for (i = 0; i < ARRAY_SIZE(archivers); i++) {
> >  		if (!strcmp(name, archivers[i].name)) {
> > -			memcpy(ar, &archivers[i], sizeof(struct archiver));
> > +			memset(ar, 0, sizeof(*ar));
> > +			ar->name = archivers[i].name;
> > +			ar->write_archive = archivers[i].write_archive;
> > +			ar->parse_extra = archivers[i].parse_extra;
> 
> But is this change really needed?  Shouldn't a structure
> assignment just work?
No, they are different structs...

Which I did to reduce the size of the initializer (see above) so that it was a no brainer for you to swallow. :-)

Previous: Junio C Hamano
Message 3 of 3 in “Remove unsupported C99 style struct initializers in git-archive.”
  1. 3/3 Remove unsupported C99 style struct initializers in git-archive.Shawn O. Pearce, Nov 5, 2006
  2. Junio C HamanoNov 5, 2006
  3. Shawn PearceNov 5, 2006

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.