diff options
author | Jonathan Nieder <jrnieder@gmail.com> | 2010-11-19 18:54:45 -0600 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2010-11-24 14:53:58 -0800 |
commit | 6263c06d49abdf5e5defdf528c3ff67bf948ac9b (patch) | |
tree | ce95a3dd2da9ef85b4c370df4aa0e62fc3c48cd8 /vcs-svn | |
parent | 2a48afe1c256db6273a4ff99eaddc5c18dc46ffd (diff) | |
download | git-6263c06d49abdf5e5defdf528c3ff67bf948ac9b.tar.gz |
vcs-svn: Sharpen parsing of property lines
Prepare to add a new type of property line (the 'D' line) to
handle property deltas.
Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'vcs-svn')
-rw-r--r-- | vcs-svn/svndump.c | 30 |
1 files changed, 19 insertions, 11 deletions
diff --git a/vcs-svn/svndump.c b/vcs-svn/svndump.c index 5de8dadcdd..576d148e5e 100644 --- a/vcs-svn/svndump.c +++ b/vcs-svn/svndump.c @@ -134,21 +134,29 @@ static void handle_property(uint32_t key, const char *val, uint32_t len) static void read_props(void) { - uint32_t len; uint32_t key = ~0; - char *val = NULL; - char *t; + const char *t; while ((t = buffer_read_line()) && strcmp(t, "PROPS-END")) { - if (!strncmp(t, "K ", 2)) { - len = atoi(&t[2]); - key = pool_intern(buffer_read_string(len)); - buffer_read_line(); - } else if (!strncmp(t, "V ", 2)) { - len = atoi(&t[2]); - val = buffer_read_string(len); + uint32_t len; + const char *val; + const char type = t[0]; + + if (!type || t[1] != ' ') + die("invalid property line: %s\n", t); + len = atoi(&t[2]); + val = buffer_read_string(len); + buffer_skip_bytes(1); /* Discard trailing newline. */ + + switch (type) { + case 'K': + key = pool_intern(val); + continue; + case 'V': handle_property(key, val, len); key = ~0; - buffer_read_line(); + continue; + default: + die("invalid property line: %s\n", t); } } } |