int main() { int i; int argc = 0; int old_pipe[] = {0,1}; char **args; while(1) { printf("$ "); args = getln(&argc); if(argc > 0){ if(args != NULL && strcmp(args[0],"") && args[0] != NULL ){ for(i = 0; i < strlen(args[0]); i++){ args[0][i] = tolower(args[0][i]); } if(strcmp(args[0],"exit") == 0 || strcmp(args[0],"quit") == 0 ){ printf("exiting program\n"); exit(0); }else if(strcmp(args[0],"arg") == 0){ arg(args,argc); }else if(strcmp(args[0],"add") == 0){ add(args); }else if(strcmp(args[0],"mult") == 0){ mult(args); }else{ for(i = 0; args[i] != NULL; i++) { if(strcmp(args[i],"|") == 0){ args[i][0]=' '; creat_pipe(arg_array(args,argc,i+1),arg_array(args,i+1,0),argc-i,i+1, old_pipe); i = 0; break; }else if(strcmp(args[i],"&") == 0){ args[i][0]=' '; i = -1; break; } } if(i == -1){ make_child(args,1,argc); }else if(i != 0){ make_child(args,0, argc); } } } } } return 0; }
static COMMAND_FUNC( do_newpipe ) { const char *pipe_name; const char *cmd; const char *mode; int n; pipe_name=NAMEOF("name for pipe"); n=WHICH_ONE("read/write",N_RW_CHOICES,rw_choices); cmd=NAMEOF("command"); if( n < 0 || n >= 2 ) return; if( n == 0 ) mode="r"; else mode="w"; creat_pipe(QSP_ARG pipe_name,cmd,mode); }