1 typedef struct Part Part; 2 struct Part { 3 char *name; 4 char *ctlname; 5 vlong start; 6 vlong end; 7 vlong ctlstart; 8 vlong ctlend; 9 int changed; 10 }; 11 12 enum { 13 Maxpart = 32 14 }; 15 16 typedef struct Edit Edit; 17 struct Edit { 18 Disk *disk; 19 20 Part *ctlpart[Maxpart]; 21 int nctlpart; 22 23 Part *part[Maxpart]; 24 int npart; 25 26 char *(*add)(Edit*, char*, vlong, vlong); 27 char *(*del)(Edit*, Part*); 28 char *(*ext)(Edit*, int, char**); 29 char *(*help)(Edit*); 30 char *(*okname)(Edit*, char*); 31 void (*sum)(Edit*, Part*, vlong, vlong); 32 char *(*write)(Edit*); 33 void (*printctl)(Edit*, int); 34 35 char *unit; 36 void *aux; 37 vlong dot; 38 vlong end; 39 40 /* do not use fields below this line */ 41 int changed; 42 int warned; 43 int lastcmd; 44 }; 45 46 char *getline(Edit*); 47 void runcmd(Edit*, char*); 48 Part *findpart(Edit*, char*); 49 char *addpart(Edit*, Part*); 50 char *delpart(Edit*, Part*); 51 char *parseexpr(char *s, vlong xdot, vlong xdollar, vlong xsize, vlong *result); 52 int ctldiff(Edit *edit, int ctlfd); 53 void *emalloc(ulong); 54 char *estrdup(char*); 55