Subversion Repositories planix.SVN

Rev

Rev 2 | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
2 - 1
#include <u.h>
2
#include <libc.h>
3
#include <auth.h>
4
#include <fcall.h>
5
#include <thread.h>
6
#include <9p.h>
7
#include "flashfs.h"
8
 
9
static void
10
usage(void)
11
{
12
	fprint(2, "usage: %s [-n nsect] [-z sectsize] file\n", argv0);
13
	exits("usage");
14
}
15
 
16
static ulong
17
argval(char *arg)
18
{
19
	long v;
20
	char *extra;
21
 
22
	if(arg == nil)
23
		usage();
24
	v = strtol(arg, &extra, 0);
25
	if(*extra || v <= 0)
26
		usage();
27
	return v;
28
}
29
 
30
void
31
main(int argc, char **argv)
32
{
33
	ulong i;
34
	int m, n;
35
	char *file;
36
	uchar hdr[MAXHDR];
37
 
38
	ARGBEGIN {
39
	case 'n':
40
		nsects = argval(ARGF());
41
		break;
42
	case 'z':
43
		sectsize = argval(ARGF());
44
		break;
45
	default:
46
		usage();
47
	} ARGEND
48
 
49
	if(argc != 1)
50
		usage();
51
	file = argv[0];
52
 
53
	sectbuff = emalloc9p(sectsize);
54
	initdata(file, 1);
55
 
56
	memmove(hdr, magic, MAGSIZE);
57
	m = putc3(&hdr[MAGSIZE], 0);
58
	n = putc3(&hdr[MAGSIZE + m], 0);
59
	clearsect(0);
60
	writedata(0, 0, hdr, MAGSIZE + m + n, 0);
61
 
62
	for(i = 1; i < nsects - 1; i++)
63
		clearsect(i);
64
 
65
	m = putc3(&hdr[MAGSIZE], 1);
66
	n = putc3(&hdr[MAGSIZE + m], 0);
67
	clearsect(nsects - 1);
68
	writedata(0, nsects - 1, hdr, MAGSIZE + m + n, 0);
69
}