RE: [PATCH] string-list.h: Add STRING_LIST_INIT macro and make use of it.

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



> -----Original Message-----
> From: git-owner@xxxxxxxxxxxxxxx [mailto:git-owner@xxxxxxxxxxxxxxx] On
> Behalf Of Junio C Hamano
> Sent: den 29 juni 2010 07:43
> To: Alex Riesen
> Cc: Thiago Farina; git@xxxxxxxxxxxxxxx; jrnieder@xxxxxxxxx;
> srabbelier@xxxxxxxxx
> Subject: Re: [PATCH] string-list.h: Add STRING_LIST_INIT macro and make
> use of it.
> 
> Alex Riesen <raa.lkml@xxxxxxxxx> writes:
> 
> >> But I wonder if this is worth it (not this "more complete", but 
> >> your patch). We convert 16 or so instances of initialization for
> >> "no strdup" list, but there are about the same number of "strdup" 
> >> instances still spelled out:
> >>
> >>    $ git grep -e 'struct string_list [^ ]* = {.*'
> >>    $ git grep -e 'struct string_list [^ ]* = {.*1'
> >>
> >> Wouldn't it be more sensible to use this instead?
> >>
> >>    #define STRING_LIST_INIT(pleasedup) { NULL, 0, 0, (pleasedup) }
> >
> > This begs for using strdup(string-to-dup) in the macro argument,
> > which will not compile with ancient compilers which don't allow 
> > code in an initializer.
> 
> Err, one of us must be confused.
> 
> I was suggesting to rewrite things like these, found in
> builtin/remote.c (add and rm):
> 
> 	struct string_list track = { NULL, 0, 0, 0 };
> 	struct string_list branches = { NULL, 0, 0, 1 };
> 
> like so:
> 
> 	#define STRING_LIST_INIT(pleasedup) { NULL, 0, 0, (pleasedup) }
> 	struct string_list track = STRING_LIST_INIT(0);
>         struct string_list branches = STRING_LIST_INIT(1);
> 
> I don't see strdup in macro argument anywhere.
> 
> The original patch in this thread proposed to do this instead:
> 
> 	#define STRING_LIST_INIT { NULL, 0, 0, 0 }
> 	struct string_list track = STRING_LIST_INIT;
>         struct string_list branches = { NULL, 0, 0, 1 };
> 
> converting about half of initializers to the macro, and leaving the
> other half spelled out.

How about using two macros instead:

#define STRING_LIST_INIT { NULL, 0, 0, 0 }
#define STRING_LIST_INIT_DUP { NULL, 0, 0, 1 }

That way there is less confusion to what the 0/1 argument
to STRING_LIST_INIT() means. (I guess STRING_LIST_INIT could 
be STRING_LIST_INIT_NODUP instead if one wants more clarity.)

//Peter

--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [Linux Kernel Development]     [Gcc Help]     [IETF Annouce]     [DCCP]     [Netdev]     [Networking]     [Security]     [V4L]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]     [Fedora Users]