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;
 }