]> git.ipfire.org Git - thirdparty/git.git/commitdiff
daemon: use skip_prefix to avoid magic numbers
authorJeff King <peff@peff.net>
Wed, 18 Jun 2014 19:49:44 +0000 (15:49 -0400)
committerJunio C Hamano <gitster@pobox.com>
Fri, 20 Jun 2014 17:45:18 +0000 (10:45 -0700)
Like earlier cases, we can use skip_prefix to avoid magic
numbers that must match the length of starts_with prefixes.
However, the numbers are a little more complicated here, as
we keep parsing past the prefix. We can solve it by keeping
a running pointer as we parse; its final value is the
location we want.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
daemon.c

index 6d25828a18c91ad92b700c2516b5ff1d6fe50bf4..1eb663172338ae24ef9229594f893e80c2e52f96 100644 (file)
--- a/daemon.c
+++ b/daemon.c
@@ -626,15 +626,16 @@ static int execute(void)
 
        for (i = 0; i < ARRAY_SIZE(daemon_service); i++) {
                struct daemon_service *s = &(daemon_service[i]);
-               int namelen = strlen(s->name);
-               if (starts_with(line, "git-") &&
-                   !strncmp(s->name, line + 4, namelen) &&
-                   line[namelen + 4] == ' ') {
+               const char *arg;
+
+               if (skip_prefix(line, "git-", &arg) &&
+                   skip_prefix(arg, s->name, &arg) &&
+                   *arg++ == ' ') {
                        /*
                         * Note: The directory here is probably context sensitive,
                         * and might depend on the actual service being performed.
                         */
-                       return run_service(line + namelen + 5, s);
+                       return run_service(arg, s);
                }
        }