version 1.71, 2007/01/27 18:53:16 |
version 1.72, 2007/02/04 06:09:31 |
|
|
struct cvs_ent *ent; |
struct cvs_ent *ent; |
char *fields[CVS_ENTRIES_NFIELDS], *buf, *sp, *dp; |
char *fields[CVS_ENTRIES_NFIELDS], *buf, *sp, *dp; |
|
|
buf = xstrdup(entry); |
buf = sp = xstrdup(entry); |
sp = buf; |
|
i = 0; |
i = 0; |
do { |
do { |
dp = strchr(sp, CVS_ENTRIES_DELIM); |
dp = strchr(sp, CVS_ENTRIES_DELIM); |
|
|
if (i < CVS_ENTRIES_NFIELDS) |
if (i < CVS_ENTRIES_NFIELDS) |
fatal("missing fields in entry line '%s'", entry); |
fatal("missing fields in entry line '%s'", entry); |
|
|
ent = (struct cvs_ent *)xmalloc(sizeof(*ent)); |
ent = xmalloc(sizeof(*ent)); |
ent->ce_buf = buf; |
ent->ce_buf = buf; |
|
|
if (*fields[0] == '\0') |
if (*fields[0] == '\0') |
|
|
if ((ent->ce_rev = rcsnum_parse(sp)) == NULL) |
if ((ent->ce_rev = rcsnum_parse(sp)) == NULL) |
fatal("failed to parse entry revision '%s'", entry); |
fatal("failed to parse entry revision '%s'", entry); |
|
|
if (strcmp(fields[3], CVS_DATE_DUMMY) == 0 || |
if (fields[3][0] == '\0' || |
|
strcmp(fields[3], CVS_DATE_DUMMY) == 0 || |
strncmp(fields[3], "Initial ", 8) == 0 || |
strncmp(fields[3], "Initial ", 8) == 0 || |
strncmp(fields[3], "Result of merge", 15) == 0) |
strncmp(fields[3], "Result of merge", 15) == 0) |
ent->ce_mtime = CVS_DATE_DMSEC; |
ent->ce_mtime = CVS_DATE_DMSEC; |
else { |
else { |
strptime(fields[3], "%a %b %d %T %Y", &t); |
if (strptime(fields[3], "%a %b %d %T %Y", &t) == NULL) |
|
fatal("'%s' is not a valid date", fields[3]); |
t.tm_isdst = 0; |
t.tm_isdst = 0; |
t.tm_gmtoff = 0; |
t.tm_gmtoff = 0; |
ent->ce_mtime = mktime(&t); |
ent->ce_mtime = mktime(&t); |