8 loadrevinfo(Revlog *changelog, int rev)
10 char buf[BUFSZ], *p, *e;
11 int fd, line, eof, inmsg, n;
15 if((fd = revlogopentemp(changelog, rev)) < 0)
18 off = fmetaheader(fd);
21 ri = malloc(sizeof(*ri));
22 memset(ri, 0, sizeof(*ri));
24 memmove(ri->chash, changelog->map[rev].hash, HASHSZ);
32 if((n = read(fd, p, e - p)) < 0)
40 while((p > buf) && (e = memchr(buf, '\n', p - buf))){
45 hex2hash(buf, ri->mhash);
48 ri->who = strdup(buf);
51 ri->when = strtol(buf, nil, 10);
58 ri->loglen = off - ri->logoff;
62 n = ri->why ? strlen(ri->why) : 0;
63 ri->why = realloc(ri->why, n + strlen(buf)+2);
64 if(n > 0) ri->why[n++] = '\n';
65 strcpy(ri->why + n, buf);
71 memmove(buf, e, p - buf);