On Tue, 04 Dec 2012, Jani Nikula <jani@nikula.org> wrote: > On Mon, 03 Dec 2012, Michal Nazarewicz <mina86@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@google.com>--------------ooO--(_)--Ooo--