summaryrefslogtreecommitdiff
path: root/daemon.c
diff options
context:
space:
mode:
authorJeff King <peff@peff.net>2014-06-18 19:49:44 (GMT)
committerJunio C Hamano <gitster@pobox.com>2014-06-20 17:45:18 (GMT)
commitd12c24d2a96f8f9aeb100b800d8fb217f28a6a2a (patch)
treeb2e8919e3bf4e902d41ee87a3f521639eca8784d /daemon.c
parent97313bef2a16eb8b3d40830204c20c34ba9d6554 (diff)
downloadgit-d12c24d2a96f8f9aeb100b800d8fb217f28a6a2a.zip
git-d12c24d2a96f8f9aeb100b800d8fb217f28a6a2a.tar.gz
git-d12c24d2a96f8f9aeb100b800d8fb217f28a6a2a.tar.bz2
daemon: use skip_prefix to avoid magic numbers
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>
Diffstat (limited to 'daemon.c')
-rw-r--r--daemon.c11
1 files changed, 6 insertions, 5 deletions
diff --git a/daemon.c b/daemon.c
index 6d25828..1eb6631 100644
--- 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);
}
}