dodanie poczatkow tree
This commit is contained in:
parent
672691d576
commit
3db7748748
Binary file not shown.
@ -63,17 +63,84 @@ void spathf (char **argv, int *spath){
|
|||||||
*spath = l;
|
*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 main (){
|
||||||
int spath = 1;
|
int spath = 1;
|
||||||
using_history();
|
using_history();
|
||||||
|
struct passwd *p = getpwuid(getuid());
|
||||||
|
|
||||||
while (1){
|
while (1){
|
||||||
char *argv[100];
|
char *argv[100];
|
||||||
char *komenda, *prompt, directory[max];
|
char *komenda, *prompt, directory[max];
|
||||||
|
|
||||||
if (getcwd(directory, sizeof(directory)) == NULL){
|
if (getcwd(directory, sizeof(directory)) == NULL){
|
||||||
perror("getcwd() error");
|
perror("getcwd() error");
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
struct passwd *p = getpwuid(getuid());
|
|
||||||
|
|
||||||
if (spath){
|
if (spath){
|
||||||
prompt = (char*)malloc(strlen(directory)+strlen(p->pw_name)+22 *sizeof(char));
|
prompt = (char*)malloc(strlen(directory)+strlen(p->pw_name)+22 *sizeof(char));
|
||||||
@ -109,24 +176,17 @@ int main (){
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
else if (!strcmp(argv[0], "help")){
|
else if (!strcmp(argv[0], "help")){
|
||||||
if (fork() == 0){
|
help(argv);
|
||||||
execlp("less", "less", "help", NULL);
|
continue;
|
||||||
perror("execlp");
|
|
||||||
exit(EXIT_FAILURE);
|
|
||||||
}
|
}
|
||||||
else
|
else if (!strcmp(argv[0], "showtree")){
|
||||||
wait(NULL);
|
tree(argv, directory);
|
||||||
|
continue;
|
||||||
}
|
}
|
||||||
else if (!strcmp(argv[0], "exit"))
|
else if (!strcmp(argv[0], "exit"))
|
||||||
break;
|
break;
|
||||||
else
|
else
|
||||||
if (fork() == 0){
|
exe(argv);
|
||||||
execvp(argv[0], argv);
|
|
||||||
perror("execvp");
|
|
||||||
exit(EXIT_FAILURE);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
wait(NULL);
|
|
||||||
|
|
||||||
free(komenda);
|
free(komenda);
|
||||||
free(prompt);
|
free(prompt);
|
||||||
|
@ -15,7 +15,10 @@ nie byo ncurses
|
|||||||
instaluje apt install
|
instaluje apt install
|
||||||
i dorzucam do gcc -ncurses
|
i dorzucam do gcc -ncurses
|
||||||
|
|
||||||
|
!!!
|
||||||
|
dodam moja funkcje showtree ktora bedzie wyswietlac w formie drzewa strukture katalogow
|
||||||
|
oraz funkcje wyswietlajaca procesy proc
|
||||||
|
!!!
|
||||||
|
|
||||||
z komentarzy
|
z komentarzy
|
||||||
p->pw_name
|
p->pw_name
|
||||||
|
Loading…
Reference in New Issue
Block a user