mirror of
https://github.com/Fledge68/WiiFlow_Lite.git
synced 2024-11-27 13:44:15 +01:00
-fixed codedump when trying to install or copy
gamecube games to partitions without games folder on it, dumping to ntfs was not broken it just havent created the folder properly :)
This commit is contained in:
parent
152bde2c36
commit
f557b7241e
@ -15,7 +15,6 @@ en exposed s_fsop fsop structure can be used by callback to update operation sta
|
|||||||
|
|
||||||
#include <dirent.h>
|
#include <dirent.h>
|
||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
#include <sys/stat.h> //for mkdir
|
|
||||||
#include <sys/statvfs.h>
|
#include <sys/statvfs.h>
|
||||||
|
|
||||||
#include "fileOps.h"
|
#include "fileOps.h"
|
||||||
@ -203,16 +202,6 @@ bool fsop_CopyFile (char *source, char *target, progress_callback_t spinner, voi
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
|
||||||
Semplified folder make
|
|
||||||
*/
|
|
||||||
int fsop_MakeFolder (char *path)
|
|
||||||
{
|
|
||||||
if (mkdir(path, S_IREAD | S_IWRITE) == 0) return true;
|
|
||||||
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
Recursive copyfolder
|
Recursive copyfolder
|
||||||
*/
|
*/
|
||||||
@ -224,9 +213,9 @@ static bool doCopyFolder (char *source, char *target, progress_callback_t spinne
|
|||||||
bool ret = true;
|
bool ret = true;
|
||||||
|
|
||||||
// If target folder doesn't exist, create it !
|
// If target folder doesn't exist, create it !
|
||||||
if (!fsop_DirExist (target))
|
if (!fsop_DirExist(target))
|
||||||
{
|
{
|
||||||
fsop_MakeFolder (target);
|
makedir(target);
|
||||||
}
|
}
|
||||||
|
|
||||||
pdir=opendir(source);
|
pdir=opendir(source);
|
||||||
@ -241,14 +230,14 @@ static bool doCopyFolder (char *source, char *target, progress_callback_t spinne
|
|||||||
sprintf (newTarget, "%s/%s", target, pent->d_name);
|
sprintf (newTarget, "%s/%s", target, pent->d_name);
|
||||||
|
|
||||||
// If it is a folder... recurse...
|
// If it is a folder... recurse...
|
||||||
if (fsop_DirExist (newSource))
|
if (fsop_DirExist(newSource))
|
||||||
{
|
{
|
||||||
ret = doCopyFolder (newSource, newTarget, spinner, spinner_data);
|
ret = doCopyFolder(newSource, newTarget, spinner, spinner_data);
|
||||||
}
|
}
|
||||||
else // It is a file !
|
else // It is a file !
|
||||||
{
|
{
|
||||||
strcpy (fsop.op, pent->d_name);
|
strcpy(fsop.op, pent->d_name);
|
||||||
ret = fsop_CopyFile (newSource, newTarget, spinner, spinner_data);
|
ret = fsop_CopyFile(newSource, newTarget, spinner, spinner_data);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -36,7 +36,6 @@ u32 fsop_GetFolderKb (char *source);
|
|||||||
u32 fsop_GetFreeSpaceKb (char *path);
|
u32 fsop_GetFreeSpaceKb (char *path);
|
||||||
bool fsop_DirExist (char *path);
|
bool fsop_DirExist (char *path);
|
||||||
bool fsop_CopyFile (char *source, char *target, progress_callback_t spinner, void *spinner_data);
|
bool fsop_CopyFile (char *source, char *target, progress_callback_t spinner, void *spinner_data);
|
||||||
int fsop_MakeFolder (char *path);
|
|
||||||
bool fsop_CopyFolder (char *source, char *target, progress_callback_t spinner, void *spinner_data);
|
bool fsop_CopyFolder (char *source, char *target, progress_callback_t spinner, void *spinner_data);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@ -39,6 +39,7 @@
|
|||||||
#include "text.hpp"
|
#include "text.hpp"
|
||||||
#include "gecko.h"
|
#include "gecko.h"
|
||||||
#include "fileOps.h"
|
#include "fileOps.h"
|
||||||
|
#include "defines.h"
|
||||||
|
|
||||||
using namespace std;
|
using namespace std;
|
||||||
|
|
||||||
@ -164,12 +165,12 @@ s32 GCDump::DumpGame(progress_callback_t spinner, message_callback_t message, vo
|
|||||||
s32 ret = Disc_ReadGCHeader(&gcheader);
|
s32 ret = Disc_ReadGCHeader(&gcheader);
|
||||||
Asciify2(gcheader.title);
|
Asciify2(gcheader.title);
|
||||||
|
|
||||||
snprintf(folder, sizeof(folder), "%s:/games/", gamepartition);
|
snprintf(folder, sizeof(folder), DML_DIR, gamepartition);
|
||||||
if(!fsop_DirExist(folder))
|
if(!fsop_DirExist(folder))
|
||||||
fsop_MakeFolder(folder);
|
makedir(folder);
|
||||||
snprintf(folder, sizeof(folder), "%s:/games/%s [%.06s]%s", gamepartition, gcheader.title, (char *)gcheader.id, j ? "2" : "");
|
snprintf(folder, sizeof(folder), "%s:/games/%s [%.06s]%s", gamepartition, gcheader.title, (char *)gcheader.id, j ? "2" : "");
|
||||||
if(!fsop_DirExist(folder))
|
if(!fsop_DirExist(folder))
|
||||||
fsop_MakeFolder(folder);
|
makedir(folder);
|
||||||
|
|
||||||
ret = __DiscReadRaw(ReadBuffer, 0, 0x440);
|
ret = __DiscReadRaw(ReadBuffer, 0, 0x440);
|
||||||
if(ret > 0)
|
if(ret > 0)
|
||||||
@ -230,7 +231,7 @@ s32 GCDump::DumpGame(progress_callback_t spinner, message_callback_t message, vo
|
|||||||
{
|
{
|
||||||
snprintf(folder, sizeof(folder), "%s:/games/%s [%.06s]%s/sys", gamepartition, gcheader.title, (char *)gcheader.id, j ? "2" : "");
|
snprintf(folder, sizeof(folder), "%s:/games/%s [%.06s]%s/sys", gamepartition, gcheader.title, (char *)gcheader.id, j ? "2" : "");
|
||||||
if(!fsop_DirExist(folder))
|
if(!fsop_DirExist(folder))
|
||||||
fsop_MakeFolder(folder);
|
makedir(folder);
|
||||||
|
|
||||||
gprintf("Writing %s/boot.bin\n", folder);
|
gprintf("Writing %s/boot.bin\n", folder);
|
||||||
snprintf(gamepath, sizeof(gamepath), "%s/boot.bin", folder);
|
snprintf(gamepath, sizeof(gamepath), "%s/boot.bin", folder);
|
||||||
|
@ -7,6 +7,7 @@
|
|||||||
#include "fileOps.h"
|
#include "fileOps.h"
|
||||||
#include "music/SoundHandler.hpp"
|
#include "music/SoundHandler.hpp"
|
||||||
#include "channel/nand.hpp"
|
#include "channel/nand.hpp"
|
||||||
|
#include "defines.h"
|
||||||
|
|
||||||
using namespace std;
|
using namespace std;
|
||||||
|
|
||||||
@ -224,8 +225,10 @@ int CMenu::_GCcopyGame(void *obj)
|
|||||||
{
|
{
|
||||||
LWP_MutexLock(m.m_mutex);
|
LWP_MutexLock(m.m_mutex);
|
||||||
m._setThrdMsg(L"", 0);
|
m._setThrdMsg(L"", 0);
|
||||||
if (!fsop_DirExist((char*)"sd:/games"))
|
char folder[MAX_FAT_PATH];
|
||||||
fsop_MakeFolder((char*)"sd:/games");
|
snprintf(folder, sizeof(folder), DML_DIR, DeviceName[SD]);
|
||||||
|
if (!fsop_DirExist(folder))
|
||||||
|
makedir(folder);
|
||||||
char source[MAX_FAT_PATH];
|
char source[MAX_FAT_PATH];
|
||||||
char target[MAX_FAT_PATH];
|
char target[MAX_FAT_PATH];
|
||||||
sprintf(source, "%s:/games/%s", DeviceName[currentPartition], m.m_cf.getHdr()->path);
|
sprintf(source, "%s:/games/%s", DeviceName[currentPartition], m.m_cf.getHdr()->path);
|
||||||
|
Loading…
Reference in New Issue
Block a user