Hallo Leute!
Ich möchte gerne so eine Art des Systemaufrufs "ls" nachprogrammieren, nur hab ich im Moment ein kleines Problem. Ich weiß nicht mehr weiter! Mein Code sieht zur Zeit so aus:
Bei dem Pfeil liegt der Fehler. Ich möchte nämlich zu jeder Datei in dem Verzeichnis, das ich beim Programmstart angebe, die Größe der einzelnen Dateien. So wie das "ls" eben auch macht. Nur ich bekomme immer nur die Größe des aktuellen Verzeichnisses. Ich hab schon mehr probiert, als das was dort steht, nur klappt leider nichts so wie ich das haben will. Könnte mir bitte jemand auf die Sprünge helfen?
Gruß
Buba
Ich möchte gerne so eine Art des Systemaufrufs "ls" nachprogrammieren, nur hab ich im Moment ein kleines Problem. Ich weiß nicht mehr weiter! Mein Code sieht zur Zeit so aus:
Code:
#include <stdio.h>
#include <dirent.h>
#include <sys/types.h>
#include <errno.h>
#include <stdlib.h>
#include <sys/stat.h>
#include <unistd.h>
extern int errno;
int main(int argc, char *argv[]) {
/* Variablen */
DIR *dir;
struct dirent *dirzeiger;
struct stat buf;
/* Argumente pruefen */
if (argc != 2) {
fprintf(stderr, "Benutzung: %s Directory\n", argv[0]);
return EXIT_FAILURE;
}
/* Verzeichnis oeffnen */
if ((dir = opendir(argv[1])) == NULL) {
fprintf(stderr, "Fehler bei opendir ...\n");
return EXIT_FAILURE;
}
if (stat(argv[1], &buf) == -1) {
fprintf(stderr, "Fehler bei stat ...\n");
return EXIT_FAILURE;
}
/* Das komplette Verzeichnis auslesen */
while ((dirzeiger = readdir(dir)) != NULL) {
---------------> printf("%d %s\n", buf.st_size, (*dirzeiger).d_name);
}
/* Lesezeiger wieder schliessen */
if (closedir(dir) == -1) {
printf("Fehler beim Schliessen von %s\n", argv[1]);
}
return EXIT_SUCCESS;
}
Bei dem Pfeil liegt der Fehler. Ich möchte nämlich zu jeder Datei in dem Verzeichnis, das ich beim Programmstart angebe, die Größe der einzelnen Dateien. So wie das "ls" eben auch macht. Nur ich bekomme immer nur die Größe des aktuellen Verzeichnisses. Ich hab schon mehr probiert, als das was dort steht, nur klappt leider nichts so wie ich das haben will. Könnte mir bitte jemand auf die Sprünge helfen?
Gruß
Buba