From 86cd2fe0c0de518bf893001d816f033d5c84b01b Mon Sep 17 00:00:00 2001 From: Jakub Adamski Date: Thu, 10 Jan 2019 13:13:37 +0100 Subject: [PATCH] funkcja cut --- Microshell/microshell.c | 97 +++++++++++++++++------------------------ 1 file changed, 41 insertions(+), 56 deletions(-) diff --git a/Microshell/microshell.c b/Microshell/microshell.c index 6cf3abb..6b089b7 100644 --- a/Microshell/microshell.c +++ b/Microshell/microshell.c @@ -5,64 +5,49 @@ const int max = 1000; -int cut(char **argv, char *command){ - int i=0; - return i; +void cut(char **argv, char *command){ + int i = 0, w = 0, x = 0; + char argument[100]; + while (1){ + if(command[i] == 10){ + argv[w] = NULL; + break; + } + else if (command[i] == 32){ + i+=1; + x=0; + continue; + } + else{ + while(command[i] != 32 && command[i]!=10){ + argument[x]=command[i]; + x+=1; + i+=1; + } + argument[x] = '\0'; + argv[w]=malloc(x+1 * sizeof(char)); + strcpy(argv[w], argument); + w+=1; + } + } } int main (){ - while (1){ - char komenda[max], directory[max]; - if (getcwd(directory, sizeof(directory)) == NULL){ - perror("getcwd() error"); - return 1; - } - printf("[%s]$ ", directory); - fgets(komenda, max, stdin); - if (!strcmp(komenda, "exit\n")) - break; + char* argv[100]; + while (1){ + char komenda[max], directory[max]; + if (getcwd(directory, sizeof(directory)) == NULL){ + perror("getcwd() error"); + return 1; + } + printf("[%s]$ ", directory); + fgets(komenda, max, stdin); - else{ - int i = 0, z, w = 0, x = 0; - char polecenie[100], argument[100]; - char* argv[100]; - while (1){ - if(komenda[i] == 10){ - argv[w] = NULL; - execvp(polecenie, argv); - break; - } - else if (komenda[i] == 32){ - i+=1; - x=0; - continue; - } - else if(w==0){ - w=1; - while(komenda[i] != 32 && komenda[i]!=10){ - polecenie[x]=komenda[i]; - i+=1; - x+=1; - } - polecenie[x] = '\0'; - printf("%s\n", polecenie); - argv[w-1]=malloc(x+1 * sizeof(char)); - strcpy(argv[w-1], polecenie); - continue; - } - else{ - while(komenda[i] != 32 && komenda[i]!=10){ - argument[x]=komenda[i]; - x+=1; - i+=1; - } - argument[x] = '\0'; - argv[w]=malloc(x+1 * sizeof(char)); - strcpy(argv[w], argument); - w+=1; - } - } - } -} - return 0; + if (!strcmp(komenda, "exit\n")) + break; + else + cut(argv, komenda); + execvp(argv[0], argv); + } + return 0; }