123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869 |
- #include <u.h>
- #include <libc.h>
- #include <auth.h>
- #include <fcall.h>
- #include <thread.h>
- #include <9p.h>
- #include "flashfs.h"
- static void
- usage(void)
- {
- fprint(2, "usage: %s [-n nsect] [-z sectsize] file\n", argv0);
- exits("usage");
- }
- static ulong
- argval(char *arg)
- {
- long v;
- char *extra;
- if(arg == nil)
- usage();
- v = strtol(arg, &extra, 0);
- if(*extra || v <= 0)
- usage();
- return v;
- }
- void
- main(int argc, char **argv)
- {
- ulong i;
- int m, n;
- char *file;
- uchar hdr[MAXHDR];
- ARGBEGIN {
- case 'n':
- nsects = argval(ARGF());
- break;
- case 'z':
- sectsize = argval(ARGF());
- break;
- default:
- usage();
- } ARGEND
- if(argc != 1)
- usage();
- file = argv[0];
- sectbuff = emalloc9p(sectsize);
- initdata(file, 1);
- memmove(hdr, magic, MAGSIZE);
- m = putc3(&hdr[MAGSIZE], 0);
- n = putc3(&hdr[MAGSIZE + m], 0);
- clearsect(0);
- writedata(0, 0, hdr, MAGSIZE + m + n, 0);
- for(i = 1; i < nsects - 1; i++)
- clearsect(i);
- m = putc3(&hdr[MAGSIZE], 1);
- n = putc3(&hdr[MAGSIZE + m], 0);
- clearsect(nsects - 1);
- writedata(0, nsects - 1, hdr, MAGSIZE + m + n, 0);
- }
|