1 /* hg debug stuff, just dumps dirstate database right now */
12 main(int argc, char *argv[])
21 if(getdothg(dothg, *argv) < 0)
22 sysfatal("can't find .hg: %r");
24 snprint(buf, sizeof(buf), "%s/dirstate", dothg);
25 if((fd = open(buf, OREAD)) < 0)
26 sysfatal("can't open dirstate: %r");
28 if(seek(fd, 0x28LL, 0) != 0x28LL)
29 sysfatal("can't seek dirstate: %r");
37 if((n = read(fd, hdr, sizeof(hdr))) == 0)
40 sysfatal("read error: %r");
42 sysfatal("dirstate truncated");
45 mode = hdr[4] | hdr[3]<<8 | hdr[2]<<16 | hdr[1]<<24;
46 size = hdr[8] | hdr[7]<<8 | hdr[6]<<16 | hdr[5]<<24;
47 mtime = hdr[12] | hdr[11]<<8 | hdr[10]<<16 | hdr[9]<<24;
48 len = hdr[16] | hdr[15]<<8 | hdr[14]<<16 | hdr[13]<<24;
51 if(len >= sizeof(buf))
52 sysfatal("invalid name length %d", len);
54 n = read(fd, buf, len);
56 sysfatal("read error: %r");
58 sysfatal("dirstate name truncated");
62 print("%c\t%o\t%lld\t%s\n", state, mode, size, buf);