usbloadergx/source/listfiles.c
giantpune 83f5dc29de add filesize function to get size of dols.
change homebrew icon image and move it a bit.

hide the homebrew button if godmode!=1

maybe fix issue 722.  i don't have a spare drive to test it.

fix grammatical error in the settings.

fix long game name overflow on the gameinfo screen

switch the homebrew buttons to use the new HBCwindowprompt().  none of the meta.xml data is passed yet so the prompt looks pretty naked.
2009-07-20 07:23:30 +00:00

125 lines
2.4 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))
{
closedir(dir);
return true;
}
}
closedir(dir);
return false;
}
bool subfoldercreate(char * fullpath) {
//check forsubfolders
char dircheck[300];
char dirnoslash[300];
char * pch = NULL;
u32 cnt = 0;
struct stat st;
snprintf(dirnoslash, strlen(fullpath), "%s", fullpath);
if(stat(fullpath, &st) != 0) {
pch = strrchr(dirnoslash, '/');
cnt = pch-dirnoslash;
snprintf(dircheck, cnt+2, "%s", dirnoslash);
subfoldercreate(dircheck);
};
if (mkdir(dirnoslash, 0777) == -1) {
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;
}
/****************************************************************************
* FileSize
*
* Get filesize in bytes. u64 for files bigger than 4GB
***************************************************************************/
u64 FileSize(const char * filepath)
{
struct stat filestat;
if (stat(filepath, &filestat) != 0)
return 0;
return filestat.st_size;
}