1
0
mirror of https://github.com/git/git.git synced 2024-09-28 08:49:45 +02:00

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>
This commit is contained in:
Jonathan Nieder 2010-11-19 18:54:45 -06:00 committed by Junio C Hamano
parent 2a48afe1c2
commit 6263c06d49

View File

@ -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);
}
}
}