*** 3000shell.c 2021-01-22 00:57:39.000000000 -0500 --- 3000shell-nofork.c 2025-02-22 02:21:21.783392717 -0500 *************** *** 27,32 **** --- 27,33 ---- #define COMM_SIZE 32 const char *proc_prefix = "/proc"; + int found = 0; void parse_args(char *buffer, char** args, size_t args_size, size_t *nargs) *************** *** 94,99 **** --- 95,101 ---- int r, stat_return; struct stat file_status; + found = 0; if (name[0] == '.' || name[0] == '/') { strncpy(fn, name, fn_size); *************** *** 124,129 **** --- 126,132 ---- stat_return = stat(fn, &file_status); if (stat_return == 0) { + found = 1; return; } *************** *** 224,229 **** --- 227,238 ---- int fd, *ret_status = NULL; char bin_fn[BUFFER_SIZE]; + find_binary(args[0], path, bin_fn, BUFFER_SIZE); + if (!found) { + fprintf(stderr, "Command not found!\n"); + return; + } + pid = fork(); if (pid) { if (background) { *************** *** 234,241 **** pid = wait(ret_status); } } else { - find_binary(args[0], path, bin_fn, BUFFER_SIZE); - if (stdout_fn != NULL) { fd = creat(stdout_fn, 0666); dup2(fd, 1); --- 243,248 ----