mirror of
https://github.com/wiidev/usbloadergx.git
synced 2024-07-12 12:51:49 +02:00
![giantpune](/assets/img/avatar_default.png)
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.
125 lines
2.4 KiB
C
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;
|
|
}
|
|
|
|
|
|
|
|
|