|
|
researchv10 Norman
#include <libc.h>
#include "sym.h"
#include "worm.h"
main(argc, argv)
char **argv;
{
Superblock s;
char buf[1024];
char *e;
Inode *i;
int c;
char *com = 0;
char *dev = "/dev/worm0";
extern char *optarg;
extern int optind;
while((c = getopt(argc, argv, "f:c:")) != -1)
switch(c)
{
case 'c': com = optarg; break;
case 'f': dev = optarg; break;
case '?': usage();
}
if(optind+2 != argc)
usage();
dev = mapdev(dev);
if((s.fd = open(dev, 2)) < 0){
perror(dev);
exit(1);
}
if(e = openinode(&s, SPIN_DOWN)){
fprint(2, "%s: %s\n", dev, e);
exit(1);
}
if(strcmp(s.vol_id, argv[optind])){
fprint(2, "vol_id mismatch: wanted %s, got %s\n", argv[optind], s.vol_id);
exit(1);
}
if(s.version != VBTREE){
fprint(2, "poot: %s must be a btree disk\n", s.vol_id);
exit(1);
}
memset(buf, sizeof buf, 0);
memset(s.vol_id, sizeof s.vol_id, 0);
strcpy(s.vol_id, argv[++optind]);
if(com){
memset(s.comment, sizeof s.comment, 0);
strcpy(s.comment, com);
}
memcpy(buf, &s, 1024);
lseek(s.fd, 0, 0);
if(write(s.fd, buf, 1024) != 1024){
perror("write of new superblock");
exit(1);
}
exit(0);
}
usage()
{
fprint(2, "Usage: poot [-fdevice] [-ccnewcomment] vol_id new_vol_id\n");
exit(1);
}
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.