typedef struct Method Method; struct Method { char *name; void (*config)(Method*); int (*connect)(void); char *arg; }; enum { Statsz= 256, Nbarg= 16, }; #define dprint(...) if(debugboot) fprint(2, __VA_ARGS__); else USED(debugboot) extern void authentication(int); extern char* bootdisk; /* defined in ../$arch/boot$CONF.c */ extern char* rootdir; extern int (*cfs)(int); extern int cpuflag; extern char cputype[]; extern int debugboot; extern int fflag; extern int kflag; extern Method method[]; /* defined in ../$arch/boot$CONF.c */ extern void (*pword)(int, Method*); extern char sys[]; extern uchar hostkey[]; extern uchar statbuf[Statsz]; extern int bargc; extern char *bargv[Nbarg]; extern int pcload; extern int readparts(void); /* libc equivalent */ extern int cache(int); extern char* checkkey(Method*, char*, char*); extern void fatal(char*); extern void getpasswd(char*, int); extern void key(int, Method*); extern int outin(char*, char*, int); extern int plumb(char*, char*, int*, char*); extern int readfile(char*, char*, int); extern long readn(int, void*, long); extern void run(char *file, ...); extern int sendmsg(int, char*); extern void setenv(char*, char*); extern void settime(int, int, char*); extern void srvcreate(char*, int); extern void warning(char*); extern int writefile(char*, char*, int); extern void boot(int, char **); extern void doauthenticate(int, Method*); extern int old9p(int); extern int parsefields(char*, char**, int, char*); extern int chmod(char *file, int mode); extern int mountusbparts(void); extern int readparts(void); extern void runv(char **argv); extern void usbinit(int post); /* methods */ extern void configtcp(Method*); extern int connecttcp(void); extern void configlocal(Method*); extern int connectlocal(void); extern void configpaq(Method*); extern int connectpaq(void); extern void configembed(Method*); extern int connectembed(void); extern void configip(int, char**, int); /* hack for passing authentication address */ extern char *authaddr;