From: Shawn Pearce Date: Sun, 05 Nov 2006 07:36:34 GMT Subject: Re: [PATCH 3/3] Remove unsupported C99 style struct initializers in git-archive. Message-ID: <20061105073634.GA4616@spearce.org> In-Reply-To: <7vd582uz5b.fsf@assigned-by-dhcp.cox.net> Junio C Hamano wrote: > "Shawn O. Pearce" 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. :-) > 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. :-) --