1 /* 2 * Modified from the MANX croot to fit the rogue requirements 3 */ 4 5 static char **Argv; 6 static int Argc; 7 8 noper() 9 { 10 return 0; 11 } 12 13 int (*cls_)() = noper; 14 15 Croot(cp, first) 16 register char *cp; 17 { 18 register char **cpp; 19 char *sbrk(); 20 21 Argv = (char **)sbrk((first+1)*sizeof(char *)); 22 Argv[0] = ""; 23 cpp = &Argv[Argc = first]; 24 for (;;) { 25 while (*cp == ' ' || *cp == '\t') 26 ++cp; 27 if (*cp == 0) 28 break; 29 { 30 *cpp++ = cp; 31 Argc++; 32 if (sbrk(sizeof(char *)) == (char *)-1) { 33 write(2, "Too many args.", 14); 34 _exit(200); 35 } 36 while (*++cp) 37 if (*cp == ' ' || *cp == '\t') { 38 *cp++ = 0; 39 break; 40 } 41 } 42 } 43 *cpp = 0; 44 main(Argc,Argv); 45 exit(0); 46 } 47 48 exit(code) 49 { 50 (*cls_)(); 51 #ifdef SDEBUG 52 ComOff(); 53 #endif 54 unsetup(); 55 _exit(code); 56 } 57 58 ÿ