/* ** Written by Dave Yearke (dgy@sigmast), September 1988. ** Portions of this program (c) Mark Williams Company. */ #include /* Needed for Cconws() and Crawcin() */ main() { char *argptr, command[130], *eargv[20], *eenv[2]; int i; Cconws("STARARGS - Utility for running Starchart "); Cconws("software from the desktop.\r\n"); Cconws("Portions of this program, copyright 1984, "); Cconws("Mark Williams Company."); for (;;) { *command = 128; /* Number of characters Cconrs() should read */ Cursconf(1, 0); /* Show cursor */ Cconws("\r\n\nPlease enter the full name of the program to be run "); Cconws("(e.g. starst.ttp)\r\n"); Cconws("and its arguments, or an empty line to quit:\r\n"); Cconrs(command); /* Read an edited string from standard input */ if (*(command + 1) == 0) /* Number of chars actually read */ exit(); Cconws("\r\n"); command[*(command + 1) + 2] = '\0'; /* Make sure it's terminated */ i = 0; argptr = command + 2; do { eargv[i] = argptr; while ((*++argptr != ' ') && (*argptr != '\0')) ; /* Browse until space or end of string */ if (*argptr == ' ') /* If we found a space */ *argptr++ = '\0'; /* End the string preceding this point */ while ((*argptr == ' ') && (*argptr != '\0')) ++argptr; /* Browse until non-space or end of string */ Cconws(eargv[i++]); Cconws(" "); } while (*argptr != '\0'); eargv[i] = eenv[1] = 0; eenv[0] = "PATH=."; /* The programs will think they're being run */ Cconws("\r\n"); /* from a shell. */ execve(eargv[0], eargv, eenv); } }