|
|
1.1 ! root 1: #include <libc.h> ! 2: #include "sym.h" ! 3: #include "worm.h" ! 4: ! 5: main(argc, argv) ! 6: char **argv; ! 7: { ! 8: Superblock s; ! 9: char buf[1024]; ! 10: char *e; ! 11: Inode *i; ! 12: int c; ! 13: char *com = 0; ! 14: char *dev = "/dev/worm0"; ! 15: extern char *optarg; ! 16: extern int optind; ! 17: ! 18: while((c = getopt(argc, argv, "f:c:")) != -1) ! 19: switch(c) ! 20: { ! 21: case 'c': com = optarg; break; ! 22: case 'f': dev = optarg; break; ! 23: case '?': usage(); ! 24: } ! 25: if(optind+2 != argc) ! 26: usage(); ! 27: dev = mapdev(dev); ! 28: if((s.fd = open(dev, 2)) < 0){ ! 29: perror(dev); ! 30: exit(1); ! 31: } ! 32: if(e = openinode(&s, SPIN_DOWN)){ ! 33: fprint(2, "%s: %s\n", dev, e); ! 34: exit(1); ! 35: } ! 36: if(strcmp(s.vol_id, argv[optind])){ ! 37: fprint(2, "vol_id mismatch: wanted %s, got %s\n", argv[optind], s.vol_id); ! 38: exit(1); ! 39: } ! 40: if(s.version != VBTREE){ ! 41: fprint(2, "poot: %s must be a btree disk\n", s.vol_id); ! 42: exit(1); ! 43: } ! 44: memset(buf, sizeof buf, 0); ! 45: memset(s.vol_id, sizeof s.vol_id, 0); ! 46: strcpy(s.vol_id, argv[++optind]); ! 47: if(com){ ! 48: memset(s.comment, sizeof s.comment, 0); ! 49: strcpy(s.comment, com); ! 50: } ! 51: memcpy(buf, &s, 1024); ! 52: lseek(s.fd, 0, 0); ! 53: if(write(s.fd, buf, 1024) != 1024){ ! 54: perror("write of new superblock"); ! 55: exit(1); ! 56: } ! 57: exit(0); ! 58: } ! 59: ! 60: usage() ! 61: { ! 62: fprint(2, "Usage: poot [-fdevice] [-ccnewcomment] vol_id new_vol_id\n"); ! 63: exit(1); ! 64: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.