(PS3) Implement file_is_directory on PS3

This commit is contained in:
TwinAphex51224 2012-01-30 17:18:31 +01:00
parent b4e3786aa1
commit 734afe2058
4 changed files with 87 additions and 10 deletions

12
file.c
View File

@ -32,6 +32,10 @@
#include "sha256.h"
#endif
#ifdef __CELLOS_LV2__
#include <cell/cell_fs.h>
#endif
#if defined(_WIN32) && !defined(_XBOX)
#include <io.h>
#include <fcntl.h>
@ -939,7 +943,13 @@ bool path_is_directory(const char *path)
#ifdef _WIN32
DWORD ret = GetFileAttributes(path);
return (ret & FILE_ATTRIBUTE_DIRECTORY) && (ret != INVALID_FILE_ATTRIBUTES);
#elif defined(__CELLOS_LV2__) || defined(XENON)
#elif defined(__CELLOS_LV2__)
CellFsStat buf;
if (cellFsStat(path, &buf) < 0)
return false;
return buf.st_mode & CELL_FS_S_IFDIR;
#elif defined(XENON)
// Dummy
(void)path;
return false;

View File

@ -171,6 +171,8 @@ struct settings
struct console_settings
{
bool block_config_read;
bool default_sram_dir_enable;
bool default_savestate_dir_enable;
bool ingame_menu_enable;
bool return_to_multiman_enable;
bool screenshots_enable;

View File

@ -110,15 +110,21 @@ static void set_default_settings(void)
g_settings.video.msg_pos_y = 0.90f;
// g_console
g_console.block_config_read = true;
g_console.screenshots_enable = false;
g_console.throttle_enable = true;
g_console.triple_buffering_enable = true;
g_console.default_savestate_dir_enable = false;
g_console.default_sram_dir_enable = false;
g_console.current_resolution_id = CELL_VIDEO_OUT_RESOLUTION_UNDEFINED;
strlcpy(g_console.default_rom_startup_dir, "/", sizeof(g_console.default_rom_startup_dir));
strlcpy(g_console.default_savestate_dir, usrDirPath, sizeof(g_console.default_savestate_dir));
strlcpy(g_console.default_sram_dir, usrDirPath, sizeof(g_console.default_sram_dir));
// g_extern
g_extern.state_slot = 0;
g_extern.audio_data.mute = 0;
g_extern.verbose = true;
}
static void init_settings(void)
@ -562,8 +568,6 @@ int main(int argc, char *argv[])
ssnes_main_clear_state();
g_console.block_config_read = true;
g_extern.verbose = true;
config_set_defaults();
SSNES_LOG("Registering Callback\n");
@ -581,6 +585,7 @@ int main(int argc, char *argv[])
#endif
get_path_settings(g_console.return_to_multiman_enable);
set_default_settings();
init_settings();
@ -629,12 +634,26 @@ begin_loop:
char arg5[MAX_PATH_LENGTH];
snprintf(arg5, sizeof(arg5), SYS_CONFIG_FILE);
char *argv_[] = { arg1, arg2, arg3, arg4, arg5, NULL };
int argc = sizeof(argv_) / sizeof(argv_[0]) - 1;
int init_ret = ssnes_main_init(argc, argv_);
g_emulator_initialized = 1;
init_ssnes = 0;
if(g_console.default_sram_dir_enable)
{
char arg6[] = "-s";
char arg7[MAX_PATH_LENGTH];
snprintf(arg7, sizeof(arg7), g_console.default_sram_dir);
char *argv_[] = { arg1, arg2, arg3, arg4, arg5, arg6, arg7, NULL };
int argc = sizeof(argv_) / sizeof(argv_[0]) - 1;
int init_ret = ssnes_main_init(argc, argv_);
g_emulator_initialized = 1;
init_ssnes = 0;
}
else
{
char *argv_[] = { arg1, arg2, arg3, arg4, arg5, NULL };
int argc = sizeof(argv_) / sizeof(argv_[0]) - 1;
int init_ret = ssnes_main_init(argc, argv_);
g_emulator_initialized = 1;
init_ssnes = 0;
}
}
}
#ifdef MULTIMAN_SUPPORT

View File

@ -464,8 +464,10 @@ static void select_directory(uint32_t menu_id)
switch(menu_id)
{
case PATH_SAVESTATES_DIR_CHOICE:
strcpy(g_console.default_savestate_dir, path);
break;
case PATH_SRAM_DIR_CHOICE:
strcpy(g_console.default_sram_dir, path);
break;
case PATH_DEFAULT_ROM_DIR_CHOICE:
strcpy(g_console.default_rom_startup_dir, path);
@ -483,8 +485,10 @@ static void select_directory(uint32_t menu_id)
switch(menu_id)
{
case PATH_SAVESTATES_DIR_CHOICE:
strcpy(g_console.default_savestate_dir, path);
break;
case PATH_SRAM_DIR_CHOICE:
strcpy(g_console.default_sram_dir, path);
break;
case PATH_DEFAULT_ROM_DIR_CHOICE:
strcpy(g_console.default_rom_startup_dir, path);
@ -712,13 +716,13 @@ static void set_setting_label(menu * menu_obj, int currentsetting)
if(g_settings.rewind_enable)
{
snprintf(menu_obj->items[currentsetting].setting_text, sizeof(menu_obj->items[currentsetting].setting_text), "ON");
menu_obj->items[currentsetting].text_color = GREEN;
menu_obj->items[currentsetting].text_color = ORANGE;
snprintf(menu_obj->items[currentsetting].comment, sizeof(menu_obj->items[currentsetting].comment), "INFO - [Rewind] feature is set to 'ON'. You can rewind the game in real-time.");
}
else
{
snprintf(menu_obj->items[currentsetting].setting_text, sizeof(menu_obj->items[currentsetting].setting_text), "OFF");
menu_obj->items[currentsetting].text_color = ORANGE;
menu_obj->items[currentsetting].text_color = GREEN;
snprintf(menu_obj->items[currentsetting].comment, sizeof(menu_obj->items[currentsetting].comment), "INFO - [Rewind] feature is set to 'OFF'.");
}
break;
@ -757,8 +761,20 @@ static void set_setting_label(menu * menu_obj, int currentsetting)
snprintf(menu_obj->items[currentsetting].setting_text, sizeof(menu_obj->items[currentsetting].setting_text), g_console.default_rom_startup_dir);
break;
case SETTING_PATH_SAVESTATES_DIRECTORY:
if(!(strcmp(g_console.default_savestate_dir, usrDirPath)))
menu_obj->items[currentsetting].text_color = GREEN;
else
menu_obj->items[currentsetting].text_color = ORANGE;
snprintf(menu_obj->items[currentsetting].setting_text, sizeof(menu_obj->items[currentsetting].setting_text), g_console.default_savestate_dir);
break;
case SETTING_PATH_SRAM_DIRECTORY:
if(!(strcmp(g_console.default_sram_dir, usrDirPath)))
menu_obj->items[currentsetting].text_color = GREEN;
else
menu_obj->items[currentsetting].text_color = ORANGE;
snprintf(menu_obj->items[currentsetting].setting_text, sizeof(menu_obj->items[currentsetting].setting_text), g_console.default_sram_dir);
break;
case SETTING_PATH_CHEATS:
if(!(strcmp(g_settings.cheat_database, usrDirPath)))
@ -1169,8 +1185,29 @@ static void producesettingentry(menu * menu_obj, uint64_t switchvalue)
strcpy(g_console.default_rom_startup_dir, "/");
break;
case SETTING_PATH_SAVESTATES_DIRECTORY:
if(CTRL_LEFT(state) || CTRL_LSTICK_LEFT(state) || CTRL_RIGHT(state) || CTRL_LSTICK_RIGHT(state) || CTRL_CROSS(state))
{
menuStackindex++;
menuStack[menuStackindex] = menu_filebrowser;
menuStack[menuStackindex].enum_id = PATH_SAVESTATES_DIR_CHOICE;
set_initial_dir_tmpbrowser = true;
}
if(CTRL_START(state))
strcpy(g_console.default_savestate_dir, usrDirPath);
break;
case SETTING_PATH_SRAM_DIRECTORY:
if(CTRL_LEFT(state) || CTRL_LSTICK_LEFT(state) || CTRL_RIGHT(state) || CTRL_LSTICK_RIGHT(state) || CTRL_CROSS(state))
{
menuStackindex++;
menuStack[menuStackindex] = menu_filebrowser;
menuStack[menuStackindex].enum_id = PATH_SRAM_DIR_CHOICE;
set_initial_dir_tmpbrowser = true;
}
if(CTRL_START(state))
strcpy(g_console.default_sram_dir, "");
break;
case SETTING_PATH_CHEATS:
if(CTRL_LEFT(state) || CTRL_LSTICK_LEFT(state) || CTRL_RIGHT(state) || CTRL_LSTICK_RIGHT(state) || CTRL_CROSS(state))
@ -1185,6 +1222,15 @@ static void producesettingentry(menu * menu_obj, uint64_t switchvalue)
strcpy(g_settings.cheat_database, usrDirPath);
break;
case SETTING_PATH_DEFAULT_ALL:
if(CTRL_LEFT(state) || CTRL_LSTICK_LEFT(state) || CTRL_RIGHT(state) || CTRL_LSTICK_RIGHT(state) || CTRL_CROSS(state) || CTRL_START(state))
{
strcpy(g_console.default_rom_startup_dir, "/");
strcpy(g_console.default_savestate_dir, usrDirPath);
strcpy(g_settings.cheat_database, usrDirPath);
strcpy(g_console.default_sram_dir, "");
menu_reinit_settings();
}
break;
case SETTING_CONTROLS_SCHEME:
break;