Verzeichnisinhalt ausgeben
Verfasst: Sa Mai 31, 2014 8:19 pm
Hi
hab wieder ein Problem mit meiner Shell.
Die Methode soll bei Eingabe von ls den Inhalt des Verzeichnises indem ich mich befinde ausgeben.
Bis hier bin ich gekommen und die Methode macht was es soll.
Aber ich möchte das ganze gern mit Dynamischer Speicherverwaltung (malloc) realisieren.
hab wieder ein Problem mit meiner Shell.
Die Methode soll bei Eingabe von ls den Inhalt des Verzeichnises indem ich mich befinde ausgeben.
Bis hier bin ich gekommen und die Methode macht was es soll.
Aber ich möchte das ganze gern mit Dynamischer Speicherverwaltung (malloc) realisieren.
Code: Alles auswählen
int lsMethode(int xyz, char *lst,char cha[]){
char *ptr4vek[1000]; // DAS MÖCHTE ICH MIT MALLOC
char *ptr4,*ptr5;
// FRAGE:Gibt es hier eine andere Möglichkeit Verzeichnisinhalt anzuzeigen ?
DIR *dir;
struct dirent *dirzeiger;
char ok[]="OK";
char ko[]="KO";
int h=0,i=0;
char *a;
dir = opendir(lst); // Siehe FRAGE oben
ptr4=malloc(strlen(lst));
while ((dirzeiger=readdir(dir)) != NULL )
{
a=&dirzeiger->d_name; // Siehe FRAGE oben
ptr4 = strtok(a,"");
while(ptr4 != NULL) {
ptr4vek[h++]=ptr4; //Token in ein Array speichern
ptr4 = strtok(NULL, "\t \n");
}
}
//hier wird nur ausgegeben was nicht mit Punkt anfaengt
ptr4=malloc(sizeof(ptr4vek));
if(xyz==1) {
for(i=0;i<h;i++){
ptr5=strncmp(ptr4vek[i],".",1)? ok : ko;
if( ptr5==ok )
printf("%s\n",ptr4vek[i]);
}closedir(dir);return 1;
}
// wenn ls | grep cha hier wird nur das was im Verzeichnis mit dem String in cha übereinstimmt ausgegeben
if(xyz==0) {
for(i=0;i<h;i++){
ptr5=strncmp(ptr4vek[i],".",1)? ok : ko;
if( ptr5==ok ) {
if(strstr(ptr4vek[i],cha)!= NULL) printf("%s\n",ptr4vek[i]);
}
} closedir(dir);
return 1;
}
free(ptr4);
free(ptr5);
closedir(dir);
return 1;
}