B
Blackvirus
Hi!
Ich möchte alle dateien eines bestimmten typs aus ordnern und unterordnern auslesen u. desen "daten" (pfad, typ, ...) in eine eigenen struktur schreiben.
Da ich auch alle dateien aus den unterordner haben möchte, muss ich mit dateiattributen arbeiten u. dort habe ich ein Problem!
Ordner prüfe ich mit "attribut.st_mode & S_IFREG", wobei S_IFREG bei "zutreffen" 1 zurückliefern sollte, was es aber nicht tut, sonder es liefert etwas um die 30000 zurück!
Auch attribut.st_mode hat glaub ich auch den falschen wert, nämlich 0.
Woran kann das liegen, lese ich falsch aus oder ist es was anderes?
Hier das Prog:
Und noch die Definition von der struktur FILES:
Vielen Dank für die Hilfe im Voraus
MfG
Blackvirus
Ich möchte alle dateien eines bestimmten typs aus ordnern und unterordnern auslesen u. desen "daten" (pfad, typ, ...) in eine eigenen struktur schreiben.
Da ich auch alle dateien aus den unterordner haben möchte, muss ich mit dateiattributen arbeiten u. dort habe ich ein Problem!
Ordner prüfe ich mit "attribut.st_mode & S_IFREG", wobei S_IFREG bei "zutreffen" 1 zurückliefern sollte, was es aber nicht tut, sonder es liefert etwas um die 30000 zurück!
Auch attribut.st_mode hat glaub ich auch den falschen wert, nämlich 0.
Woran kann das liegen, lese ich falsch aus oder ist es was anderes?
Hier das Prog:
Code:
#include <sys/types.h>
#include <sys/stat.h>
#include <dirent.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "FileSearch.h"
int FileSearch(FILES *searchfiles, char sPath[], char sFileType[], int iSubdirectory);
int CmpType(char sFileName[], char sFileType[]);
int main()
{
DIR *dir;
struct dirent *dirzeiger;
char sPath[30];
FILES *files;
printf("Pfad: ");
gets(sPath);
FileSearch(files, sPath, "mp3", 0);
while(files->next != NULL)
{
printf("Datei: %s\n",files->sFileName);
files = files->next;
}
fflush(stdin);
getch();
return 0;
}
int FileSearch(FILES *searchfiles, char sPath[], char sFileType[], int iSubdirectory)
{
DIR *dir;
struct dirent *directory;
struct stat attribut;
char sPathTmp[30];
int FileSearchReV = 0;
int number=1;
dir = opendir(sPath);
while(((directory=readdir(dir)) != NULL) /*&& FileSearchReV == 0*/)
{
stat(directory->d_name, &attribut);
printf("%i - %i\n",S_IFREG, attribut.st_mode);
if((attribut.st_mode & S_IFREG))
{
strcpy(searchfiles->sFileName,directory->d_name);
strcpy(searchfiles->sPath,sPath);
strcpy(searchfiles->sFileType,sFileType);
searchfiles->next = malloc(sizeof(FILES));
searchfiles = searchfiles->next;
searchfiles->next = NULL;
}
else if((attribut.st_mode & S_IFDIR) && iSubdirectory == 1 && (directory->d_name != ".." && directory->d_name != "."))
{
FileSearchReV = FileSearch(searchfiles, sPath, sFileType, iSubdirectory);
}
}
if(closedir(dir) == -1)
FileSearchReV = 1;
return FileSearchReV;
}
Und noch die Definition von der struktur FILES:
Code:
typedef struct FILEINFORMATION
{
char sFileName[20]; // Name of the file, which has been found
char sPath[50]; // Path of the file, which has been found
char sFileType[4]; // Type of the file, which has been found
struct FILES *next; // Pointer of the next file
}FILES;
Vielen Dank für die Hilfe im Voraus
MfG
Blackvirus