#include #include #include <../boot/boot.h> static char *paqfile; void configembed(Method *m) { if(*sys == '/' || *sys == '#'){ /* * if the user specifies the disk in the boot cmd or * 'root is from' prompt, use it */ paqfile = sys; } else if(m->arg){ /* * a default is supplied when the kernel is made */ paqfile = m->arg; } } int connectembed(void) { int i, p[2]; Dir *dir; char **arg, **argp; dir = dirstat("/boot/paqfs"); if(dir == nil) return -1; free(dir); dir = dirstat(paqfile); if(dir == nil || dir->mode & DMDIR) return -1; free(dir); print("paqfs..."); if(bind("#c", "/dev", MREPL) < 0) fatal("bind #c"); if(bind("#p", "/proc", MREPL) < 0) fatal("bind #p"); if(pipe(p)<0) fatal("pipe"); switch(fork()){ case -1: fatal("fork"); case 0: arg = malloc((bargc+5)*sizeof(char*)); argp = arg; *argp++ = "/boot/paqfs"; *argp++ = "-iv"; *argp++ = paqfile; for(i=1; i