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();
};
|