#ifdef COMPIL_MS // Microsoft only
#include <io.h>
#elseif COMPIL_LINUX // Linux only
#include <dirent.h>
#endif
.
.
.
char* szDir[MAX_DIR_LEN]; // directory to be searched
char* szFileName[MAX_FILE_NAME]; // can be used
char* szSearchCriteria[MAX_LEN]; // search criteria
#ifdef COMPIL_MS // Microsoft only
struct _finddata_t FindResult;
long hFileSearch;
#elseif COMPIL_LINUX // Linux only
DIR* pDir;
struct dirent* pDirEntry;
struct stat Status;
#endif
#ifdef COMPIL_MS // MICROSOFT compilation
chdir(szDir);
hFileSearch = _findfirst( SearchCriteria, &FindResult );
while ( _findnext( hFileSearch, &FindResult ) != -1 ) // search directory for matching files
{
printf("%s %ld\n", FindResult.name, FindResult.size);
}
_findclose( hFileSearch );
#elseif COMPIL_LINUX // LINUX compilation
pDir = opendir(szDir);
if (pDir == NULL)
return FCT_RET_ERROR;
for (pDirEntry = readdir(pDir); pDirEntry != NULL; pDirEntry = readdir(pDir)) // search directory for file entries
{
if (stat(pDirEntry->d_name, &Status) < 0)
fprintf("File not found\n" );
else
printf("%s %ld\n", szFileName = pDirEntry->d_name, Status.st_size);
}
#endif
****************************************************
Si tu veux faire une recherche recursive, tu dois ajouter un test sur le FindResult.attrib = _A_SUBDIR sous MS, et sous Linux tu peux ajouter un stat(szFileName, &Status) (szFileName contenant le nom du fichier) et tester avec S_ISDIR(Status.st_mode) qui renverra 1 si l'entree est un repertoire.
Et pis remplace les printf() par ce que tu veux pour construire ta liste (ecriture dans un fichier, dans un tableau en memoire, etc)
Vala je pense que ca devrait suffir
[edtdd]--Message édité par Kaz Ander--[/edtdd]