[PATCH 1/2] cli: fix notmuch top level argument parsing

Jani Nikula jani at nikula.org
Mon Dec 3 14:30:29 PST 2012


On Tue, 04 Dec 2012, Jani Nikula <jani at nikula.org> wrote:
> On Mon, 03 Dec 2012, Michal Nazarewicz <mina86 at mina86.com> wrote:
>> On Mon, Dec 03 2012, Jani Nikula wrote:
>>> Use strcmp instead of STRNCMP_LITERAL, which matches the prefix
>>> instead of the whole argument.
>>
>> Perhaps add and use this instead:
>>
>> #define STRCMP_LITERAL(var, literal) \
>>     strncmp ((var), (literal), sizeof (literal))
>
> That's broken the same way STRNCMP_LITERAL is broken in this use case:
> it matches if literal is a prefix of var.

Err, that's bollocks. Missed the missing -1 there. ;)

>> Than again, it's argument parsing so hardly a performance critical path,
>> so maybe readability is more important.

I'll go with this. And I'm not even sure strncmp is faster than strcmp,
as it has to keep track of count.


BR,
Jani.



>>
>>> ---
>>>  notmuch.c |    4 ++--
>>>  1 file changed, 2 insertions(+), 2 deletions(-)
>>>
>>> diff --git a/notmuch.c b/notmuch.c
>>> index 477a09c..4ff66e3 100644
>>> --- a/notmuch.c
>>> +++ b/notmuch.c
>>> @@ -245,10 +245,10 @@ main (int argc, char *argv[])
>>>      if (argc == 1)
>>>  	return notmuch (local);
>>>  
>>> -    if (STRNCMP_LITERAL (argv[1], "--help") == 0)
>>> +    if (strcmp (argv[1], "--help") == 0)
>>>  	return notmuch_help_command (NULL, argc - 1, &argv[1]);
>>>  
>>> -    if (STRNCMP_LITERAL (argv[1], "--version") == 0) {
>>> +    if (strcmp (argv[1], "--version") == 0) {
>>>  	printf ("notmuch " STRINGIFY(NOTMUCH_VERSION) "\n");
>>>  	return 0;
>>>      }
>>
>> -- 
>> Best regards,                                         _     _
>> .o. | Liege of Serenely Enlightened Majesty of      o' \,=./ `o
>> ..o | Computer Science,  Michał “mina86” Nazarewicz    (o o)
>> ooo +----<email/xmpp: mpn at google.com>--------------ooO--(_)--Ooo--


More information about the notmuch mailing list