venti updates

This commit is contained in:
rsc 2005-07-24 20:15:44 +00:00
parent 7ba8aa0c70
commit 23fb2edb22
13 changed files with 166 additions and 48 deletions

View file

@ -30,7 +30,7 @@ threadmain(int argc, char *argv[])
host = EARGF(usage());
break;
case 't':
type = atoi(argv[1]);
type = atoi(EARGF(usage()));
break;
default:
usage();
@ -62,10 +62,9 @@ threadmain(int argc, char *argv[])
break;
}
}
}else{
type = atoi(argv[1]);
}else
n = vtread(z, score, type, buf, VtMaxLumpSize);
}
vthangup(z);
if(n < 0)
sysfatal("could not read block: %r");

72
src/cmd/venti/root.c Normal file
View file

@ -0,0 +1,72 @@
#include <u.h>
#include <libc.h>
#include <venti.h>
#include <libsec.h>
#include <thread.h>
void
usage(void)
{
fprint(2, "usage: root [-h host] score\n");
threadexitsall("usage");
}
void
threadmain(int argc, char *argv[])
{
int i, n;
uchar score[VtScoreSize];
uchar *buf;
VtConn *z;
char *host;
VtRoot root;
fmtinstall('F', vtfcallfmt);
fmtinstall('V', vtscorefmt);
quotefmtinstall();
host = nil;
ARGBEGIN{
case 'h':
host = EARGF(usage());
break;
default:
usage();
break;
}ARGEND
if(argc == 0)
usage();
buf = vtmallocz(VtMaxLumpSize);
z = vtdial(host);
if(z == nil)
sysfatal("could not connect to server: %r");
if(vtconnect(z) < 0)
sysfatal("vtconnect: %r");
for(i=0; i<argc; i++){
if(vtparsescore(argv[i], nil, score) < 0){
fprint(2, "cannot parse score '%s': %r\n", argv[i]);
continue;
}
n = vtread(z, score, VtRootType, buf, VtMaxLumpSize);
if(n < 0){
fprint(2, "could not read block %V: %r\n", score);
continue;
}
if(n != VtRootSize){
fprint(2, "block %V is wrong size %d != 300\n", score, n);
continue;
}
if(vtrootunpack(&root, buf) < 0){
fprint(2, "unpacking block %V: %r\n", score);
continue;
}
print("%V: %q %q %V %d %V\n", score, root.name, root.type, root.score, root.blocksize, root.prev);
}
vthangup(z);
threadexitsall(0);
}

View file

@ -119,6 +119,7 @@ threadmain(int argc, char *argv[])
zero = 1;
bcmem = 0;
ventifmtinstall();
ARGBEGIN{
case 'B':
bcmem = unittoull(ARGF());

View file

@ -190,14 +190,14 @@ threadmain(int argc, char *argv[])
if(arena == nil)
sysfatal("initarena: %r");
if(host && strcmp(host, "/dev/null") != 0){
z = nil;
if(host==nil || strcmp(host, "/dev/null") != 0){
z = vtdial(host);
if(z == nil)
sysfatal("could not connect to server: %r");
if(vtconnect(z) < 0)
sysfatal("vtconnect: %r");
}else
z = nil;
}
c = chancreate(sizeof(ZClump), 0);
for(i=0; i<12; i++)