hgfs: fix metaheader offset for log
This commit is contained in:
parent
ce59d96ee3
commit
5cb6be9ce3
2 changed files with 12 additions and 6 deletions
|
@ -303,7 +303,9 @@ fsmkdir(Dir *d, int level, void *aux)
|
|||
* BUG: this is not correct. mercurial might
|
||||
* prefix the data log with random \1\n escaped
|
||||
* metadata strings (see fmetaheader()) and the flen
|
||||
* *includes* the metadata part. m(
|
||||
* *includes* the metadata part. we try to compensate
|
||||
* for this once the revision got extracted and
|
||||
* subtract the metadata header in fsstat().
|
||||
*/
|
||||
d->length = rl->map[rev].flen;
|
||||
}
|
||||
|
@ -353,6 +355,7 @@ fsattach(Req *r)
|
|||
rf->rlog = nil;
|
||||
|
||||
rf->fd = -1;
|
||||
rf->doff = 0;
|
||||
rf->buf = nil;
|
||||
|
||||
r->fid->aux = rf;
|
||||
|
@ -368,8 +371,11 @@ fsstat(Req *r)
|
|||
rf = r->fid->aux;
|
||||
if(rf->level < Qtree)
|
||||
fsmkdir(&r->d, rf->level, rf->info);
|
||||
else
|
||||
else {
|
||||
fsmkdir(&r->d, rf->level, rf->node);
|
||||
if(rf->level == Qtree)
|
||||
r->d.length -= rf->doff;
|
||||
}
|
||||
respond(r, nil);
|
||||
}
|
||||
|
||||
|
@ -686,14 +692,13 @@ fsread(Req *r)
|
|||
len = 0;
|
||||
else if((off + len) >= rf->info->loglen)
|
||||
len = rf->info->loglen - off;
|
||||
off += rf->info->logoff;
|
||||
if(rf->fd >= 0)
|
||||
goto Fdgen;
|
||||
if((rf->fd = revlogopentemp(&changelog, hashrev(&changelog, rf->info->chash))) < 0){
|
||||
responderror(r);
|
||||
return;
|
||||
}
|
||||
rf->doff = fmetaheader(rf->fd);
|
||||
rf->doff = rf->info->logoff;
|
||||
goto Fdgen;
|
||||
case Qwho:
|
||||
s = rf->info->who;
|
||||
|
|
|
@ -17,14 +17,15 @@ loadrevinfo(Revlog *changelog, int rev)
|
|||
|
||||
seek(fd, 0, 2);
|
||||
write(fd, "\n", 1);
|
||||
seek(fd, 0, 0);
|
||||
|
||||
off = fmetaheader(fd);
|
||||
seek(fd, off, 0);
|
||||
|
||||
ri = malloc(sizeof(*ri));
|
||||
memset(ri, 0, sizeof(*ri));
|
||||
|
||||
memmove(ri->chash, changelog->map[rev].hash, HASHSZ);
|
||||
|
||||
off = 0;
|
||||
line = 0;
|
||||
inmsg = 0;
|
||||
p = buf;
|
||||
|
|
Loading…
Reference in a new issue