diff options
Diffstat (limited to 'src/main.c')
| -rwxr-xr-x | src/main.c | 31 |
1 files changed, 18 insertions, 13 deletions
@@ -2,19 +2,16 @@ #include <stdlib.h> #include <unistd.h> +#include "main.h" #include "helper_functions.c" #include "lsh_main_func.c" +#include "lsh_split_line.c" #include "lsh_builtins.c" -typedef struct{ - char *prompt; - char *pre_prompt; -} SHELL_OB; - -void lsh_loop(SHELL_OB *shell_obj) -{ +void lsh_loop(SHELL_OB *shell_obj){ char *line; char **args; + CMD **cmds; int status; do { @@ -25,14 +22,22 @@ void lsh_loop(SHELL_OB *shell_obj) free(pwd); printf("%s",shell_obj->prompt); line = lsh_read_line(); - args = lsh_split_line(line); - status = lsh_execute(args); + cmds = lsh_split_command(line); + int j=0; + while (cmds[j]){ + args = lsh_split_line(cmds[j]->cmd); + status = lsh_execute(args); + free(cmds[j]); + j++; + + int i=0; + while (args[i]) + free(args[i++]); + free(args); + } + free(cmds); free(line); - int i=0; - while (args[i]) - free(args[i++]); - free(args); } while (status); } |
