use skip_prefix to avoid magic numbers
It's a common idiom to match a prefix and then skip past it
with a magic number, like:
if (starts_with(foo, "bar"))
foo += 3;
This is easy to get wrong, since you have to count the
prefix string yourself, and there's no compiler check if the
string changes. We can use skip_prefix to avoid the magic
numbers here.
Note that some of these conversions could be much shorter.
For example:
if (starts_with(arg, "--foo=")) {
bar = arg + 6;
continue;
}
could become:
if (skip_prefix(arg, "--foo=", &bar))
continue;
However, I have left it as:
if (skip_prefix(arg, "--foo=", &v)) {
bar = v;
continue;
}
to visually match nearby cases which need to actually
process the string. Like:
if (skip_prefix(arg, "--foo=", &v)) {
bar = atoi(v);
continue;
}
Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
committed by
Junio C Hamano
parent
21a2d4ada5
commit
ae021d8791
73
daemon.c
73
daemon.c
@ -235,8 +235,10 @@ static int service_enabled;
|
||||
|
||||
static int git_daemon_config(const char *var, const char *value, void *cb)
|
||||
{
|
||||
if (starts_with(var, "daemon.") &&
|
||||
!strcmp(var + 7, service_looking_at->config_name)) {
|
||||
const char *service;
|
||||
|
||||
if (skip_prefix(var, "daemon.", &service) &&
|
||||
!strcmp(service, service_looking_at->config_name)) {
|
||||
service_enabled = git_config_bool(var, value);
|
||||
return 0;
|
||||
}
|
||||
@ -1133,16 +1135,17 @@ int main(int argc, char **argv)
|
||||
|
||||
for (i = 1; i < argc; i++) {
|
||||
char *arg = argv[i];
|
||||
const char *v;
|
||||
|
||||
if (starts_with(arg, "--listen=")) {
|
||||
string_list_append(&listen_addr, xstrdup_tolower(arg + 9));
|
||||
if (skip_prefix(arg, "--listen=", &v)) {
|
||||
string_list_append(&listen_addr, xstrdup_tolower(v));
|
||||
continue;
|
||||
}
|
||||
if (starts_with(arg, "--port=")) {
|
||||
if (skip_prefix(arg, "--port=", &v)) {
|
||||
char *end;
|
||||
unsigned long n;
|
||||
n = strtoul(arg+7, &end, 0);
|
||||
if (arg[7] && !*end) {
|
||||
n = strtoul(v, &end, 0);
|
||||
if (*v && !*end) {
|
||||
listen_port = n;
|
||||
continue;
|
||||
}
|
||||
@ -1168,20 +1171,20 @@ int main(int argc, char **argv)
|
||||
export_all_trees = 1;
|
||||
continue;
|
||||
}
|
||||
if (starts_with(arg, "--access-hook=")) {
|
||||
access_hook = arg + 14;
|
||||
if (skip_prefix(arg, "--access-hook=", &v)) {
|
||||
access_hook = v;
|
||||
continue;
|
||||
}
|
||||
if (starts_with(arg, "--timeout=")) {
|
||||
timeout = atoi(arg+10);
|
||||
if (skip_prefix(arg, "--timeout=", &v)) {
|
||||
timeout = atoi(v);
|
||||
continue;
|
||||
}
|
||||
if (starts_with(arg, "--init-timeout=")) {
|
||||
init_timeout = atoi(arg+15);
|
||||
if (skip_prefix(arg, "--init-timeout=", &v)) {
|
||||
init_timeout = atoi(v);
|
||||
continue;
|
||||
}
|
||||
if (starts_with(arg, "--max-connections=")) {
|
||||
max_connections = atoi(arg+18);
|
||||
if (skip_prefix(arg, "--max-connections=", &v)) {
|
||||
max_connections = atoi(v);
|
||||
if (max_connections < 0)
|
||||
max_connections = 0; /* unlimited */
|
||||
continue;
|
||||
@ -1190,16 +1193,16 @@ int main(int argc, char **argv)
|
||||
strict_paths = 1;
|
||||
continue;
|
||||
}
|
||||
if (starts_with(arg, "--base-path=")) {
|
||||
base_path = arg+12;
|
||||
if (skip_prefix(arg, "--base-path=", &v)) {
|
||||
base_path = v;
|
||||
continue;
|
||||
}
|
||||
if (!strcmp(arg, "--base-path-relaxed")) {
|
||||
base_path_relaxed = 1;
|
||||
continue;
|
||||
}
|
||||
if (starts_with(arg, "--interpolated-path=")) {
|
||||
interpolated_path = arg+20;
|
||||
if (skip_prefix(arg, "--interpolated-path=", &v)) {
|
||||
interpolated_path = v;
|
||||
continue;
|
||||
}
|
||||
if (!strcmp(arg, "--reuseaddr")) {
|
||||
@ -1210,12 +1213,12 @@ int main(int argc, char **argv)
|
||||
user_path = "";
|
||||
continue;
|
||||
}
|
||||
if (starts_with(arg, "--user-path=")) {
|
||||
user_path = arg + 12;
|
||||
if (skip_prefix(arg, "--user-path=", &v)) {
|
||||
user_path = v;
|
||||
continue;
|
||||
}
|
||||
if (starts_with(arg, "--pid-file=")) {
|
||||
pid_file = arg + 11;
|
||||
if (skip_prefix(arg, "--pid-file=", &v)) {
|
||||
pid_file = v;
|
||||
continue;
|
||||
}
|
||||
if (!strcmp(arg, "--detach")) {
|
||||
@ -1223,28 +1226,28 @@ int main(int argc, char **argv)
|
||||
log_syslog = 1;
|
||||
continue;
|
||||
}
|
||||
if (starts_with(arg, "--user=")) {
|
||||
user_name = arg + 7;
|
||||
if (skip_prefix(arg, "--user=", &v)) {
|
||||
user_name = v;
|
||||
continue;
|
||||
}
|
||||
if (starts_with(arg, "--group=")) {
|
||||
group_name = arg + 8;
|
||||
if (skip_prefix(arg, "--group=", &v)) {
|
||||
group_name = v;
|
||||
continue;
|
||||
}
|
||||
if (starts_with(arg, "--enable=")) {
|
||||
enable_service(arg + 9, 1);
|
||||
if (skip_prefix(arg, "--enable=", &v)) {
|
||||
enable_service(v, 1);
|
||||
continue;
|
||||
}
|
||||
if (starts_with(arg, "--disable=")) {
|
||||
enable_service(arg + 10, 0);
|
||||
if (skip_prefix(arg, "--disable=", &v)) {
|
||||
enable_service(v, 0);
|
||||
continue;
|
||||
}
|
||||
if (starts_with(arg, "--allow-override=")) {
|
||||
make_service_overridable(arg + 17, 1);
|
||||
if (skip_prefix(arg, "--allow-override=", &v)) {
|
||||
make_service_overridable(v, 1);
|
||||
continue;
|
||||
}
|
||||
if (starts_with(arg, "--forbid-override=")) {
|
||||
make_service_overridable(arg + 18, 0);
|
||||
if (skip_prefix(arg, "--forbid-override=", &v)) {
|
||||
make_service_overridable(v, 0);
|
||||
continue;
|
||||
}
|
||||
if (!strcmp(arg, "--informative-errors")) {
|
||||
|
||||
Reference in New Issue
Block a user