summaryrefslogtreecommitdiff
path: root/appl/cmd/disk/prep/pedit.m
blob: 2b0d142d7d30bc8b8fde3c23c7570dffc45d0e60 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
Pedit: module
{
	PATH: con "/dis/disk/pedit.dis";

	Part: adt {
		name:	string;
		ctlname:	string;
		start:		big;
		end:		big;
		ctlstart:	big;
		ctlend:	big;
		changed:	int;
		tag:		int;
	};

	Maxpart: con 32;

	Edit: adt {
		disk:	ref Disks->Disk;

		ctlpart:	array of ref Part;
		part:	array of ref Part;

		# to do: replace by channels
		add:	ref fn(e: ref Edit, s: string, a, b: big): string;
		del:	ref fn(e: ref Edit, p: ref Part): string;
		ext:	ref fn(e: ref Edit, f: array of string): string;
		help:	ref fn(e: ref Edit): string;
		okname:	ref fn(e: ref Edit, s: string): string;
		sum:	ref fn(e: ref Edit, p: ref Part, a, b: big);
		write:	ref fn(e: ref Edit): string;
		printctl:	ref fn(e: ref Edit, x: ref Sys->FD);

		unit:	string;
		dot:	big;
		end:	big;

		# do not use fields below this line
		changed:	int;
		warned:	int;
		lastcmd:	int;

		mk:	fn(unit: string): ref Edit;
		getline:	fn(e: self ref Edit): string;
		runcmd:	fn(e: self ref Edit, c: string);
		findpart:	fn(e: self ref Edit, n: string): ref Part;
		addpart:	fn(e: self ref Edit, p: ref Part): string;
		delpart:	fn(e: self ref Edit, p: ref Part): string;
		ctldiff:	fn(e: self ref Edit, ctlfd: ref Sys->FD): int;
	};

	init:	fn();
};