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
11
connect.c
11
connect.c
@ -129,6 +129,7 @@ struct ref **get_remote_heads(int in, char *src_buf, size_t src_len,
|
||||
char *name;
|
||||
int len, name_len;
|
||||
char *buffer = packet_buffer;
|
||||
const char *arg;
|
||||
|
||||
len = packet_read(in, &src_buf, &src_len,
|
||||
packet_buffer, sizeof(packet_buffer),
|
||||
@ -140,12 +141,12 @@ struct ref **get_remote_heads(int in, char *src_buf, size_t src_len,
|
||||
if (!len)
|
||||
break;
|
||||
|
||||
if (len > 4 && starts_with(buffer, "ERR "))
|
||||
die("remote error: %s", buffer + 4);
|
||||
if (len > 4 && skip_prefix(buffer, "ERR ", &arg))
|
||||
die("remote error: %s", arg);
|
||||
|
||||
if (len == 48 && starts_with(buffer, "shallow ")) {
|
||||
if (get_sha1_hex(buffer + 8, old_sha1))
|
||||
die("protocol error: expected shallow sha-1, got '%s'", buffer + 8);
|
||||
if (len == 48 && skip_prefix(buffer, "shallow ", &arg)) {
|
||||
if (get_sha1_hex(arg, old_sha1))
|
||||
die("protocol error: expected shallow sha-1, got '%s'", arg);
|
||||
if (!shallow_points)
|
||||
die("repository on the other end cannot be shallow");
|
||||
sha1_array_append(shallow_points, old_sha1);
|
||||
|
||||
Reference in New Issue
Block a user