Backport xerpi's patch

This commit is contained in:
twinaphex 2015-08-30 17:23:01 +02:00
parent 0f60388533
commit f7631c41cd
5 changed files with 57 additions and 5 deletions

View File

@ -147,11 +147,12 @@ else ifeq ($(platform), vita)
MACHDEP := -DVITA MACHDEP := -DVITA
PLATCFLAGS := -Wl,-q -Wall -O3 PLATCFLAGS := -Wl,-q -Wall -O3
LIBS += -lSceKernel_stub -lSceDisplay_stub -lSceGxm_stub \ LIBS += -lSceKernel_stub -lSceDisplay_stub -lSceGxm_stub \
-lSceSysmodule_stub -lSceCtrl_stub -lScePgf_stub \ -lSceSysmodule_stub -lSceCtrl_stub -lSceAudio_stub \
-lpng -ljpeg -lfreetype -lz -lm -lc -lSceRtc_stub -lz -lm -lc
HAVE_LIBRETRO_MANAGEMENT := 1 HAVE_LIBRETRO_MANAGEMENT := 1
HAVE_RPNG := 1 HAVE_RPNG := 1
HAVE_ZLIB := 1
HAVE_VITA2D := 1 HAVE_VITA2D := 1
endif endif

View File

@ -54,6 +54,9 @@
#include <direct.h> #include <direct.h>
#include <windows.h> #include <windows.h>
#endif #endif
#elif defined(VITA)
#include <psp2/io/fcntl.h>
#include <psp2/io/dirent.h>
#else #else
#include <sys/types.h> #include <sys/types.h>
#include <sys/stat.h> #include <sys/stat.h>

View File

@ -59,6 +59,9 @@
#include <direct.h> #include <direct.h>
#include <windows.h> #include <windows.h>
#endif #endif
#elif defined(VITA)
#include <psp2/io/fcntl.h>
#include <psp2/io/dirent.h>
#else #else
#include <sys/types.h> #include <sys/types.h>
#include <sys/stat.h> #include <sys/stat.h>

View File

@ -38,6 +38,9 @@
#include <direct.h> #include <direct.h>
#include <windows.h> #include <windows.h>
#endif #endif
#elif defined(VITA)
#include <psp2/io/fcntl.h>
#include <psp2/io/dirent.h>
#else #else
#include <sys/types.h> #include <sys/types.h>
#include <sys/stat.h> #include <sys/stat.h>
@ -96,7 +99,7 @@ void dir_list_free(struct string_list *list)
string_list_free(list); string_list_free(list);
} }
#ifndef _WIN32 #if !defined(_WIN32) && !defined(VITA)
/** /**
* *
* dirent_is_directory: * dirent_is_directory:
@ -209,9 +212,12 @@ static int parse_dir_entry(const char *name, char *file_path,
struct string_list *dir_list_new(const char *dir, struct string_list *dir_list_new(const char *dir,
const char *ext, bool include_dirs, bool include_compressed) const char *ext, bool include_dirs, bool include_compressed)
{ {
#ifdef _WIN32 #if defined(_WIN32)
WIN32_FIND_DATA ffd; WIN32_FIND_DATA ffd;
HANDLE hFind = INVALID_HANDLE_VALUE; HANDLE hFind = INVALID_HANDLE_VALUE;
#elif defined(VITA)
SceUID directory;
SceIoDirent entry;
#else #else
DIR *directory = NULL; DIR *directory = NULL;
const struct dirent *entry = NULL; const struct dirent *entry = NULL;
@ -262,6 +268,43 @@ struct string_list *dir_list_new(const char *dir,
error: error:
if (hFind != INVALID_HANDLE_VALUE) if (hFind != INVALID_HANDLE_VALUE)
FindClose(hFind); FindClose(hFind);
#elif defined(VITA)
directory = sceIoDopen(dir);
if (directory < 0)
goto error;
while (sceIoDread(directory, &entry) > 0)
{
char file_path[PATH_MAX_LENGTH];
int ret = 0;
const char *name = entry.d_name;
const char *file_ext = path_get_extension(name);
bool is_dir = false;
fill_pathname_join(file_path, dir, name, sizeof(file_path));
is_dir = PSP2_S_ISDIR(entry.d_stat.st_mode);
ret = parse_dir_entry(name, file_path, is_dir,
include_dirs, include_compressed, list, ext_list, file_ext);
if (ret == -1)
{
sceIoDclose(directory);
goto error;
}
if (ret == 1)
continue;
}
sceIoDclose(directory);
string_list_free(ext_list);
return list;
error:
#else #else
directory = opendir(dir); directory = opendir(dir);
if (!directory) if (!directory)
@ -297,7 +340,6 @@ error:
error: error:
if (directory) if (directory)
closedir(directory); closedir(directory);
#endif #endif
string_list_free(list); string_list_free(list);
string_list_free(ext_list); string_list_free(ext_list);

View File

@ -63,6 +63,9 @@
#include <direct.h> #include <direct.h>
#include <windows.h> #include <windows.h>
#endif #endif
#elif defined(VITA)
#include <psp2/io/fcntl.h>
#include <psp2/io/dirent.h>
#else #else
#include <sys/types.h> #include <sys/types.h>
#include <sys/stat.h> #include <sys/stat.h>