#include #include #include #include #include #include #include #include #include "listfiles.h" static char alldirfiles[300][70]; char filenames[80]; bool findfile(const char * filename, const char * path) { DIR *dir; struct dirent *file; dir = opendir(path); char temp[11]; while ((file = readdir(dir))) { snprintf(temp,sizeof(temp),"%s",file->d_name); if (!strncmpi(temp,filename,11)) { closedir(dir); return true; } } closedir(dir); return false; } bool subfoldercreate(const char * fullpath) { //check forsubfolders char dir[300]; char * pch = NULL; u32 len; struct stat st; strlcpy(dir, fullpath, sizeof(dir)); len = strlen(dir); if(len && len< sizeof(dir)-2 && dir[len-1] != '/'); { dir[len++] = '/'; dir[len] = '\0'; } if (stat(dir, &st) != 0) // fullpath not exist? { while(len && dir[len-1] == '/') dir[--len] = '\0'; // remove all trailing / pch = strrchr(dir, '/'); if(pch == NULL) return false; *pch = '\0'; if(subfoldercreate(dir)) { *pch = '/'; if (mkdir(dir, 0777) == -1) return false; } else return false; } return true; } char * GetFileName(int i) { return alldirfiles[i]; } s32 filenamescmp(const void *a, const void *b) { /* Compare strings */ return stricmp((char *)a, (char *)b); } int GetAllDirFiles(char * filespath) { int countfiles = 0; struct stat st; DIR_ITER* dir; dir = diropen (filespath); if (dir == NULL) //If empty return 0; while (dirnext(dir,filenames,&st) == 0) { if ((st.st_mode & S_IFDIR) == 0) { // st.st_mode & S_IFDIR indicates a directory snprintf(alldirfiles[countfiles], 70, "%s", filenames); countfiles++; } } dirclose(dir); qsort(alldirfiles, countfiles, sizeof(char[70]), filenamescmp); return countfiles; } bool checkfile(char * path) { FILE * f; f = fopen(path,"r"); if (f) { fclose(f); return true; } return false; }