usbloadergx/source/listfiles.c
ardi@ist-einmalig.de f5e6663784 makes it possible to use a FAT-Partition on the USB WBFS-Disk
Boot-Strategy: 

- is "argv[0]" set, then the boot-device extracted from the argv. 
- if no meaningful boot device found, then looking for 
  "boot.dol"/"boot.elf" in "apps/usbloader_gx/" 
  first on "SD:/" and then on "USB:/". 
  When found, than use this Device. Otherwise use the default "SD:"
- Set all default-Paths on this Device 
- Set the Path for config-Folder, GXGlobal.cfg, GXGameSettings.cfg
  and GXGameFavorites.cfg on this Device (e.g. USB:/config and so on)
2009-06-09 23:26:03 +00:00

72 lines
1.3 KiB
C

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <gccore.h>
#include <fat.h>
#include <sys/dir.h>
#include <dirent.h>
#include <unistd.h>
#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))
{
//WindowPrompt(path, filename,"go" ,0);
closedir(dir);
return true;
}
}
closedir(dir);
return false;
}
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;
}