#include #include #include #include "../../etc/etc.h" #include "ostool.h" #include "commun.h" static char **tbstr; static int dirtype; static int maxstr; static int nbstr; static int fct( const FILEINFO *info, const char *path, const char *add, int ) { if (info->type == dirtype && nbstr < maxstr){ char fpath[100]; path_make (path,add,fpath); path_make (fpath,info->name,fpath); path_simplifie (fpath,fpath); tbstr[nbstr] = strdup (fpath); nbstr++; } return 1; } /* Obtient la liste triee des fichiers repondant au critere select Retourne nombre de fichier trouve, chaque fichier est accumule dans tbstr. l'espace pour chaque entree de tbstr est alloue dynamiquement L'appelant est responsable de liberee l'espace (free). Conserve le path dans le mˆme format que celui propos‚ par fpath (le path n'est pas convertie en absolue). */ export int dir_getlist ( const char *path, const char *select, /* wildcard */ int nbsub, /* nombre de niveau de sous-directory */ char *tb_str[], int max_str) /* limite de tbstr */ { tbstr = tb_str; maxstr = max_str; dirtype = FILETYPE_REG; nbstr = 0; dir (path,select,nbsub,fct); tbstr_sort (tbstr,nbstr); return nbstr; } /* Obtient la liste triee des fichiers definit par fpath Retourne nombre de fichier trouve, chaque fichier est accumule dans tbstr. l'espace pour chaque entree de tbstr est alloue dynamiquement */ export int dir_getlistp ( const char *fpath, int nbsub, char *tb_str[], int maxstr) { char path[MAXSIZ_PATH]; char file[MAXSIZ_PATH]; path_splitlex (fpath,path,file); return dir_getlist (path,file,nbsub,tb_str,maxstr); } /* Obtient la liste triee des repertoire repondant au critere select Retourne nombre de repertoire trouve, chaque path de repertoire est accumule dans tbstr. l'espace pour chaque entree de tbstr est alloue dynamiquement. L'appelant est responsable de liberee l'espace (free). */ export int dir_getlistd ( const char *path, const char *select, /* wildcard */ int nbsub, /* nombre de niveau de sous-directory */ char *tb_str[], int max_str) /* limite de tbstr */ { tbstr = tb_str; maxstr = max_str; dirtype = FILETYPE_DIR; nbstr = 0; dir (path,select,nbsub,fct); tbstr_sort (tbstr,nbstr); return nbstr; } /* Obtient la liste triee des repertoires definit par fpath Retourne nombre de repertoire trouve, chaque repertoire est accumule dans tbstr. l'espace pour chaque entree de tbstr est alloue dynamiquement */ export int dir_getlistdp ( const char *fpath, int nbsub, char *tb_str[], int maxstr) { char path[100]; char file[20]; path_splitlex (fpath,path,file); return dir_getlistd (path,file,nbsub,tb_str,maxstr); } #ifdef TEST int main (int argc, char *argv[]) { char *tbstr[200]; int nbstr = dir_getlist ("","*.c",0,tbstr,200); int i; printf ("nbstr = %d\n",nbstr); for (i=0; i