diff options
| author | nakeee <nakeee@gmail.com> | 2008-11-20 13:37:57 +0000 |
|---|---|---|
| committer | nakeee <nakeee@gmail.com> | 2008-11-20 13:37:57 +0000 |
| commit | 2ad407e47754cb469f4e1e332e8ff56cdecd6215 (patch) | |
| tree | 0e0c1b1807a531f51571a9d9e7f639719e55450e /Source/Core | |
| parent | 337ff1f56b752198076a67049c85edf3a37af078 (diff) | |
added linux support for fileutils
git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@1225 8ced0084-cf51-0410-be5f-012b33b47a6e
Diffstat (limited to 'Source/Core')
| -rw-r--r-- | Source/Core/Common/Src/FileUtil.cpp | 60 |
1 files changed, 46 insertions, 14 deletions
diff --git a/Source/Core/Common/Src/FileUtil.cpp b/Source/Core/Common/Src/FileUtil.cpp index 0cb66dcdeb..c00ddc8d6c 100644 --- a/Source/Core/Common/Src/FileUtil.cpp +++ b/Source/Core/Common/Src/FileUtil.cpp @@ -25,7 +25,8 @@ #include <commdlg.h> // for GetSaveFileName
#include <io.h>
#else
-
+#include <sys/types.h>
+#include <dirent.h>
#include <sys/stat.h>
#include <errno.h>
#include <stdlib.h>
@@ -128,10 +129,10 @@ bool CreateDir(const char *path) PanicAlert("%s already exists", path);
return true;
}
- PanicAlert("Error creating directory: %i", error);
+ PanicAlert("Error creating directory %s: %i", path, error);
return false;
#else
- if (mkdir(path, 0644) == 0)
+ if (mkdir(path, 0755) == 0)
return true;
int err = errno;
@@ -142,7 +143,7 @@ bool CreateDir(const char *path) return true;
}
- PanicAlert("Error creating directory: %s", strerror(err));
+ PanicAlert("Error creating directory %s: %s", path, strerror(err));
return false;
#endif
@@ -150,16 +151,19 @@ bool CreateDir(const char *path) bool DeleteDir(const char *filename)
{
-#ifdef _WIN32
+
if (!File::IsDirectory(filename))
return false;
-
+#ifdef _WIN32
return ::RemoveDirectory (filename) ? true : false;
#else
-
- PanicAlert("File::DeleteDir() not implemented");
- return false;
-
+ if (rmdir(filename) == 0)
+ return true;
+
+ int err = errno;
+
+ PanicAlert("Error removing directory %s",strerror(err));
+ return false;
#endif
}
@@ -324,10 +328,38 @@ error_jmp: return Result;
#else
-
- PanicAlert("File::DeleteDirRecursively() not implemented");
- return false;
-
+ // taken from http://www.dreamincode.net/code/snippet2700.htm
+ DIR *pdir = NULL;
+ pdir = opendir (_Directory.c_str());
+ struct dirent *pent = NULL;
+
+ if (pdir == NULL) {
+ return false;
+ }
+
+ char file[256];
+
+ int counter = 1;
+
+ while ((pent = readdir(pdir))) {
+ if (counter > 2) {
+ for (int i = 0; i < 256; i++) file[i] = '\0';
+ strcat(file, _Directory.c_str());
+ if (pent == NULL) {
+ return false;
+ }
+ strcat(file, pent->d_name);
+ if (IsDirectory(file) == true) {
+ DeleteDir(file);
+ } else {
+ remove(file);
+ }
+ }
+ counter++;
+ }
+
+
+ return DeleteDir(_Directory.c_str());
#endif
}
|
