From 3db7748748ebb396f0091333f4a13e6e3ab2f6e4 Mon Sep 17 00:00:00 2001 From: Jakub Adamski Date: Sun, 13 Jan 2019 12:07:28 +0100 Subject: [PATCH] dodanie poczatkow tree --- Microshell/microshell | Bin 13368 -> 13680 bytes Microshell/microshell.c | 94 ++++++++++++++++++++++++++++++++-------- Microshell/opis | 5 ++- 3 files changed, 81 insertions(+), 18 deletions(-) diff --git a/Microshell/microshell b/Microshell/microshell index 2aed7bf6eb50e393bada0991c901317f4be003c5..1806f22068fc2e5ae38cc3fd8b515141596a95c3 100755 GIT binary patch literal 13680 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 literal 13368 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 MV|0lX6}8*{59#fB4FCWD diff --git a/Microshell/microshell.c b/Microshell/microshell.c index a8982d2..69f8bcd 100644 --- a/Microshell/microshell.c +++ b/Microshell/microshell.c @@ -63,17 +63,84 @@ void spathf (char **argv, int *spath){ *spath = l; } +void help (char **argv){ + if (fork() == 0){ + execlp("less", "less", "help", NULL); + perror("execlp"); + exit(EXIT_FAILURE); + } + else + wait(NULL); +} + +void exe (char **argv){ + if (fork() == 0){ + execvp(argv[0], argv); + perror("execvp"); + exit(EXIT_FAILURE); + } + else + wait(NULL); +} + +void tree (char **argv, char * directory){ + if (argv[1] != NULL && argv[2] != NULL){ + printf("Too many arguments\nshowtree takes no arguments \nor exacly 1 argument for desired directory\n"); + return; + } + else if (argv[1] != NULL && argv[2] == NULL){ + printf("Dokladnie 1 arg\n"); + return; + } + else{ + if (fork() == 0){ + DIR *d; + struct dirent *ent; + char ndr[max], lastdir[max]; + strcpy(ndr, directory); + + while(1){ + strcpy(lastdir, ndr); + if ((d = opendir(ndr)) != NULL){ /*wchodzimy do katalogu*/ + while ((ent = readdir(d)) != NULL){ /*czytamy zawartosc*/ + char *name = ent->d_name; + if (!(!strcmp(name, ".") || !strcmp(name, ".."))){ /*jesli nazwa rozna od . lub .. */ + if (chdir(name) == 0){ /*udalo nam sie wejsc do katalogu*/ + closedir(d); + printf("Katalog: %s\n", name); + getcwd(ndr, sizeof(ndr)); /*zmieniamy directory*/ + break; /*break czytanie poprzedniego katalogu*/ + } + else + printf("Plik: %s\n", name); + } + } + } + if (!strcmp(lastdir, ndr)) + break; /*jezeli nie zmienilismy kat to wychodzimy zeby nie czytac tego samego jeszcze raz*/ + } + exit(0); + } + else{ + wait(NULL); + return; + } + } +} + int main (){ int spath = 1; using_history(); + struct passwd *p = getpwuid(getuid()); + while (1){ - char* argv[100]; + char *argv[100]; char *komenda, *prompt, directory[max]; - if (getcwd(directory, sizeof(directory)) == NULL){ + + if (getcwd(directory, sizeof(directory)) == NULL){ perror("getcwd() error"); return -1; } - struct passwd *p = getpwuid(getuid()); if (spath){ prompt = (char*)malloc(strlen(directory)+strlen(p->pw_name)+22 *sizeof(char)); @@ -109,24 +176,17 @@ int main (){ continue; } else if (!strcmp(argv[0], "help")){ - if (fork() == 0){ - execlp("less", "less", "help", NULL); - perror("execlp"); - exit(EXIT_FAILURE); - } - else - wait(NULL); + help(argv); + continue; + } + else if (!strcmp(argv[0], "showtree")){ + tree(argv, directory); + continue; } else if (!strcmp(argv[0], "exit")) break; else - if (fork() == 0){ - execvp(argv[0], argv); - perror("execvp"); - exit(EXIT_FAILURE); - } - else - wait(NULL); + exe(argv); free(komenda); free(prompt); diff --git a/Microshell/opis b/Microshell/opis index 1199c3f..70a88c1 100644 --- a/Microshell/opis +++ b/Microshell/opis @@ -15,7 +15,10 @@ nie byo ncurses instaluje apt install i dorzucam do gcc -ncurses - +!!! +dodam moja funkcje showtree ktora bedzie wyswietlac w formie drzewa strukture katalogow +oraz funkcje wyswietlajaca procesy proc +!!! z komentarzy p->pw_name