diff --git a/Makefile.common b/Makefile.common index 3b5f26f78d..f7f962214f 100644 --- a/Makefile.common +++ b/Makefile.common @@ -165,7 +165,6 @@ OBJ += frontend/frontend.o \ ui/drivers/null/ui_null_msg_window.o \ ui/drivers/null/ui_null_application.o \ retroarch.o \ - dirs.o \ paths.o \ command.o \ msg_hash.o \ diff --git a/command.c b/command.c index 30145ecf3d..771e031aae 100755 --- a/command.c +++ b/command.c @@ -81,7 +81,6 @@ #include "performance_counters.h" #include "dynamic.h" #include "content.h" -#include "dirs.h" #include "paths.h" #include "msg_hash.h" #include "retroarch.h" diff --git a/configuration.c b/configuration.c index 1cdd385049..7033e743bc 100644 --- a/configuration.c +++ b/configuration.c @@ -43,7 +43,6 @@ #include "led/led_defines.h" #include "defaults.h" #include "core.h" -#include "dirs.h" #include "paths.h" #include "retroarch.h" #include "verbosity.h" diff --git a/dirs.c b/dirs.c deleted file mode 100644 index fc372a862c..0000000000 --- a/dirs.c +++ /dev/null @@ -1,324 +0,0 @@ -/* RetroArch - A frontend for libretro. - * Copyright (C) 2011-2017 - Daniel De Matteis - * - * RetroArch is free software: you can redistribute it and/or modify it under the terms - * of the GNU General Public License as published by the Free Software Found- - * ation, either version 3 of the License, or (at your option) any later version. - * - * RetroArch is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; - * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR - * PURPOSE. See the GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License along with RetroArch. - * If not, see . - */ - -#include -#include -#include -#include -#include -#include -#include -#include - -#include "dirs.h" -#include "command.h" -#include "configuration.h" -#include "defaults.h" -#include "list_special.h" -#include "file_path_special.h" -#include "msg_hash.h" -#include "paths.h" -#include "content.h" -#include "retroarch.h" -#include "verbosity.h" - -struct rarch_dir_list -{ - struct string_list *list; - size_t ptr; -}; - -static struct rarch_dir_list dir_shader_list; - -static char dir_system[PATH_MAX_LENGTH] = {0}; -static char dir_savefile[PATH_MAX_LENGTH] = {0}; -static char current_savefile_dir[PATH_MAX_LENGTH] = {0}; -static char current_savestate_dir[PATH_MAX_LENGTH] = {0}; -static char dir_savestate[PATH_MAX_LENGTH] = {0}; - -/* init functions */ - -bool dir_init_shader(void) -{ - unsigned i; - struct rarch_dir_list *dir_list = (struct rarch_dir_list*)&dir_shader_list; - settings_t *settings = config_get_ptr(); - - if (!settings || !*settings->paths.directory_video_shader) - return false; - - dir_list->list = dir_list_new_special( - settings->paths.directory_video_shader, DIR_LIST_SHADERS, NULL); - - if (!dir_list->list || dir_list->list->size == 0) - { - command_event(CMD_EVENT_SHADER_DIR_DEINIT, NULL); - return false; - } - - dir_list->ptr = 0; - dir_list_sort(dir_list->list, false); - - for (i = 0; i < dir_list->list->size; i++) - RARCH_LOG("%s \"%s\"\n", - msg_hash_to_str(MSG_FOUND_SHADER), - dir_list->list->elems[i].data); - return true; -} - -/* free functions */ - -bool dir_free_shader(void) -{ - struct rarch_dir_list *dir_list = - (struct rarch_dir_list*)&dir_shader_list; - - dir_list_free(dir_list->list); - dir_list->list = NULL; - dir_list->ptr = 0; - - return true; -} - -/* check functions */ - -/** - * dir_check_shader: - * @pressed_next : was next shader key pressed? - * @pressed_previous : was previous shader key pressed? - * - * Checks if any one of the shader keys has been pressed for this frame: - * a) Next shader index. - * b) Previous shader index. - * - * Will also immediately apply the shader. - **/ -void dir_check_shader(bool pressed_next, bool pressed_prev) -{ - struct rarch_dir_list *dir_list = (struct rarch_dir_list*)&dir_shader_list; - static bool change_triggered = false; - - if (!dir_list || !dir_list->list) - return; - - if (pressed_next) - { - if (change_triggered) - dir_list->ptr = (dir_list->ptr + 1) % - dir_list->list->size; - } - else if (pressed_prev) - { - if (dir_list->ptr == 0) - dir_list->ptr = dir_list->list->size - 1; - else - dir_list->ptr--; - } - else - return; - change_triggered = true; - - command_set_shader(dir_list->list->elems[dir_list->ptr].data); -} - -/* empty functions */ - -bool dir_is_empty(enum rarch_dir_type type) -{ - switch (type) - { - case RARCH_DIR_SYSTEM: - return string_is_empty(dir_system); - case RARCH_DIR_SAVEFILE: - return string_is_empty(dir_savefile); - case RARCH_DIR_CURRENT_SAVEFILE: - return string_is_empty(current_savefile_dir); - case RARCH_DIR_SAVESTATE: - return string_is_empty(dir_savestate); - case RARCH_DIR_CURRENT_SAVESTATE: - return string_is_empty(current_savestate_dir); - case RARCH_DIR_NONE: - break; - } - - return false; -} - -/* get size functions */ - -size_t dir_get_size(enum rarch_dir_type type) -{ - switch (type) - { - case RARCH_DIR_SYSTEM: - return sizeof(dir_system); - case RARCH_DIR_SAVESTATE: - return sizeof(dir_savestate); - case RARCH_DIR_CURRENT_SAVESTATE: - return sizeof(current_savestate_dir); - case RARCH_DIR_SAVEFILE: - return sizeof(dir_savefile); - case RARCH_DIR_CURRENT_SAVEFILE: - return sizeof(current_savefile_dir); - case RARCH_DIR_NONE: - break; - } - - return 0; -} - -/* clear functions */ - -void dir_clear(enum rarch_dir_type type) -{ - switch (type) - { - case RARCH_DIR_SAVEFILE: - *dir_savefile = '\0'; - break; - case RARCH_DIR_CURRENT_SAVEFILE: - *current_savefile_dir = '\0'; - break; - case RARCH_DIR_SAVESTATE: - *dir_savestate = '\0'; - break; - case RARCH_DIR_CURRENT_SAVESTATE: - *current_savestate_dir = '\0'; - break; - case RARCH_DIR_SYSTEM: - *dir_system = '\0'; - break; - case RARCH_DIR_NONE: - break; - } -} - -void dir_clear_all(void) -{ - dir_clear(RARCH_DIR_SYSTEM); - dir_clear(RARCH_DIR_SAVEFILE); - dir_clear(RARCH_DIR_SAVESTATE); -} - -/* get ptr functions */ - -char *dir_get_ptr(enum rarch_dir_type type) -{ - switch (type) - { - case RARCH_DIR_SAVEFILE: - return dir_savefile; - case RARCH_DIR_CURRENT_SAVEFILE: - return current_savefile_dir; - case RARCH_DIR_SAVESTATE: - return dir_savestate; - case RARCH_DIR_CURRENT_SAVESTATE: - return current_savestate_dir; - case RARCH_DIR_SYSTEM: - return dir_system; - case RARCH_DIR_NONE: - break; - } - - return NULL; -} - -const char *dir_get(enum rarch_dir_type type) -{ - switch (type) - { - case RARCH_DIR_SAVEFILE: - return dir_savefile; - case RARCH_DIR_CURRENT_SAVEFILE: - return current_savefile_dir; - case RARCH_DIR_SAVESTATE: - return dir_savestate; - case RARCH_DIR_CURRENT_SAVESTATE: - return current_savestate_dir; - case RARCH_DIR_SYSTEM: - return dir_system; - case RARCH_DIR_NONE: - break; - } - - return NULL; -} - -void dir_set(enum rarch_dir_type type, const char *path) -{ - switch (type) - { - case RARCH_DIR_CURRENT_SAVEFILE: - strlcpy(current_savefile_dir, path, - sizeof(current_savefile_dir)); - break; - case RARCH_DIR_SAVEFILE: - strlcpy(dir_savefile, path, - sizeof(dir_savefile)); - break; - case RARCH_DIR_CURRENT_SAVESTATE: - strlcpy(current_savestate_dir, path, - sizeof(current_savestate_dir)); - break; - case RARCH_DIR_SAVESTATE: - strlcpy(dir_savestate, path, - sizeof(dir_savestate)); - break; - case RARCH_DIR_SYSTEM: - strlcpy(dir_system, path, - sizeof(dir_system)); - break; - case RARCH_DIR_NONE: - break; - } -} - -void dir_check_defaults(void) -{ - unsigned i; - /* early return for people with a custom folder setup - so it doesn't create unnecessary directories - */ -#if defined(ORBIS) || defined(ANDROID) - if (path_is_valid("host0:app/custom.ini")) -#else - if (path_is_valid("custom.ini")) -#endif - return; - - for (i = 0; i < DEFAULT_DIR_LAST; i++) - { - char *new_path = NULL; - const char *dir_path = g_defaults.dirs[i]; - - if (string_is_empty(dir_path)) - continue; - - new_path = (char*)malloc(PATH_MAX_LENGTH * sizeof(char)); - - if (!new_path) - continue; - - new_path[0] = '\0'; - fill_pathname_expand_special(new_path, - dir_path, - PATH_MAX_LENGTH * sizeof(char)); - - if (!path_is_directory(new_path)) - path_mkdir(new_path); - - free(new_path); - } -} diff --git a/dirs.h b/dirs.h deleted file mode 100644 index e9bc186c69..0000000000 --- a/dirs.h +++ /dev/null @@ -1,58 +0,0 @@ -/* RetroArch - A frontend for libretro. - * Copyright (C) 2011-2017 - Daniel De Matteis - * - * RetroArch is free software: you can redistribute it and/or modify it under the terms - * of the GNU General Public License as published by the Free Software Found- - * ation, either version 3 of the License, or (at your option) any later version. - * - * RetroArch is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; - * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR - * PURPOSE. See the GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License along with RetroArch. - * If not, see . - */ - -#ifndef __DIRS_H -#define __DIRS_H - -#include -#include - -RETRO_BEGIN_DECLS - -enum rarch_dir_type -{ - RARCH_DIR_NONE = 0, - RARCH_DIR_SAVEFILE, - RARCH_DIR_SAVESTATE, - RARCH_DIR_CURRENT_SAVEFILE, - RARCH_DIR_CURRENT_SAVESTATE, - RARCH_DIR_SYSTEM -}; - -bool dir_init_shader(void); - -bool dir_free_shader(void); - -void dir_check_shader(bool pressed_next, bool pressed_prev); - -bool dir_is_empty(enum rarch_dir_type type); - -void dir_clear(enum rarch_dir_type type); - -void dir_clear_all(void); - -size_t dir_get_size(enum rarch_dir_type type); - -char *dir_get_ptr(enum rarch_dir_type type); - -const char *dir_get(enum rarch_dir_type type); - -void dir_set(enum rarch_dir_type type, const char *path); - -void dir_check_defaults(void); - -RETRO_END_DECLS - -#endif diff --git a/dynamic.c b/dynamic.c index 82c491d023..ce8f081f4f 100644 --- a/dynamic.c +++ b/dynamic.c @@ -59,7 +59,6 @@ #include "cores/internal_cores.h" #include "content.h" -#include "dirs.h" #include "paths.h" #include "retroarch.h" #include "configuration.h" diff --git a/griffin/griffin.c b/griffin/griffin.c index 0522676daa..4767fe42f0 100644 --- a/griffin/griffin.c +++ b/griffin/griffin.c @@ -1071,7 +1071,6 @@ GIT RETROARCH ============================================================ */ #include "../retroarch.c" -#include "../dirs.c" #include "../paths.c" #include "../libretro-common/queues/task_queue.c" diff --git a/menu/menu_setting.c b/menu/menu_setting.c index def1fadba8..2b90e4e0cc 100644 --- a/menu/menu_setting.c +++ b/menu/menu_setting.c @@ -70,7 +70,6 @@ #include "../msg_hash.h" #include "../defaults.h" #include "../driver.h" -#include "../dirs.h" #include "../paths.h" #include "../dynamic.h" #include "../list_special.h" diff --git a/paths.c b/paths.c index 06317987c0..e5e2b6ab06 100644 --- a/paths.c +++ b/paths.c @@ -1,5 +1,5 @@ /* RetroArch - A frontend for libretro. - * Copyright (C) 2011-2017 - Daniel De Matteis + * Copyright (C) 2011-2019 - Daniel De Matteis * Copyright (C) 2017-2019 - Andrés Suárez * * RetroArch is free software: you can redistribute it and/or modify it under the terms @@ -17,8 +17,10 @@ #include #include #include +#include #include #include +#include #include #ifdef HAVE_CONFIG_H @@ -29,14 +31,15 @@ #include "network/netplay/netplay.h" #endif -#include "dirs.h" #include "paths.h" #include "configuration.h" #include "command.h" #include "content.h" #include "dynamic.h" +#include "defaults.h" #include "file_path_special.h" +#include "list_special.h" #include "core.h" #include "msg_hash.h" @@ -46,6 +49,12 @@ #define MENU_VALUE_NO_CORE 0x7d5472cbU +struct rarch_dir_list +{ + struct string_list *list; + size_t ptr; +}; + static struct string_list *subsystem_fullpaths = NULL; static char subsystem_path[PATH_MAX_LENGTH] = {0}; @@ -57,6 +66,15 @@ static char path_config_file[PATH_MAX_LENGTH] = {0}; static char path_config_append_file[PATH_MAX_LENGTH] = {0}; static char path_core_options_file[PATH_MAX_LENGTH] = {0}; +static struct rarch_dir_list dir_shader_list; + +static char dir_system[PATH_MAX_LENGTH] = {0}; +static char dir_savefile[PATH_MAX_LENGTH] = {0}; +static char current_savefile_dir[PATH_MAX_LENGTH] = {0}; +static char current_savestate_dir[PATH_MAX_LENGTH] = {0}; +static char dir_savestate[PATH_MAX_LENGTH] = {0}; + + void path_set_redirect(void) { size_t path_size = PATH_MAX_LENGTH * sizeof(char); @@ -787,3 +805,276 @@ void path_deinit_subsystem(void) string_list_free(subsystem_fullpaths); subsystem_fullpaths = NULL; } + +bool dir_init_shader(void) +{ + unsigned i; + struct rarch_dir_list *dir_list = (struct rarch_dir_list*)&dir_shader_list; + settings_t *settings = config_get_ptr(); + + if (!settings || !*settings->paths.directory_video_shader) + return false; + + dir_list->list = dir_list_new_special( + settings->paths.directory_video_shader, DIR_LIST_SHADERS, NULL); + + if (!dir_list->list || dir_list->list->size == 0) + { + command_event(CMD_EVENT_SHADER_DIR_DEINIT, NULL); + return false; + } + + dir_list->ptr = 0; + dir_list_sort(dir_list->list, false); + + for (i = 0; i < dir_list->list->size; i++) + RARCH_LOG("%s \"%s\"\n", + msg_hash_to_str(MSG_FOUND_SHADER), + dir_list->list->elems[i].data); + return true; +} + +/* free functions */ + +bool dir_free_shader(void) +{ + struct rarch_dir_list *dir_list = + (struct rarch_dir_list*)&dir_shader_list; + + dir_list_free(dir_list->list); + dir_list->list = NULL; + dir_list->ptr = 0; + + return true; +} + +/* check functions */ + +/** + * dir_check_shader: + * @pressed_next : was next shader key pressed? + * @pressed_previous : was previous shader key pressed? + * + * Checks if any one of the shader keys has been pressed for this frame: + * a) Next shader index. + * b) Previous shader index. + * + * Will also immediately apply the shader. + **/ +void dir_check_shader(bool pressed_next, bool pressed_prev) +{ + struct rarch_dir_list *dir_list = (struct rarch_dir_list*)&dir_shader_list; + static bool change_triggered = false; + + if (!dir_list || !dir_list->list) + return; + + if (pressed_next) + { + if (change_triggered) + dir_list->ptr = (dir_list->ptr + 1) % + dir_list->list->size; + } + else if (pressed_prev) + { + if (dir_list->ptr == 0) + dir_list->ptr = dir_list->list->size - 1; + else + dir_list->ptr--; + } + else + return; + change_triggered = true; + + command_set_shader(dir_list->list->elems[dir_list->ptr].data); +} + +/* empty functions */ + +bool dir_is_empty(enum rarch_dir_type type) +{ + switch (type) + { + case RARCH_DIR_SYSTEM: + return string_is_empty(dir_system); + case RARCH_DIR_SAVEFILE: + return string_is_empty(dir_savefile); + case RARCH_DIR_CURRENT_SAVEFILE: + return string_is_empty(current_savefile_dir); + case RARCH_DIR_SAVESTATE: + return string_is_empty(dir_savestate); + case RARCH_DIR_CURRENT_SAVESTATE: + return string_is_empty(current_savestate_dir); + case RARCH_DIR_NONE: + break; + } + + return false; +} + +/* get size functions */ + +size_t dir_get_size(enum rarch_dir_type type) +{ + switch (type) + { + case RARCH_DIR_SYSTEM: + return sizeof(dir_system); + case RARCH_DIR_SAVESTATE: + return sizeof(dir_savestate); + case RARCH_DIR_CURRENT_SAVESTATE: + return sizeof(current_savestate_dir); + case RARCH_DIR_SAVEFILE: + return sizeof(dir_savefile); + case RARCH_DIR_CURRENT_SAVEFILE: + return sizeof(current_savefile_dir); + case RARCH_DIR_NONE: + break; + } + + return 0; +} + +/* clear functions */ + +void dir_clear(enum rarch_dir_type type) +{ + switch (type) + { + case RARCH_DIR_SAVEFILE: + *dir_savefile = '\0'; + break; + case RARCH_DIR_CURRENT_SAVEFILE: + *current_savefile_dir = '\0'; + break; + case RARCH_DIR_SAVESTATE: + *dir_savestate = '\0'; + break; + case RARCH_DIR_CURRENT_SAVESTATE: + *current_savestate_dir = '\0'; + break; + case RARCH_DIR_SYSTEM: + *dir_system = '\0'; + break; + case RARCH_DIR_NONE: + break; + } +} + +void dir_clear_all(void) +{ + dir_clear(RARCH_DIR_SYSTEM); + dir_clear(RARCH_DIR_SAVEFILE); + dir_clear(RARCH_DIR_SAVESTATE); +} + +/* get ptr functions */ + +char *dir_get_ptr(enum rarch_dir_type type) +{ + switch (type) + { + case RARCH_DIR_SAVEFILE: + return dir_savefile; + case RARCH_DIR_CURRENT_SAVEFILE: + return current_savefile_dir; + case RARCH_DIR_SAVESTATE: + return dir_savestate; + case RARCH_DIR_CURRENT_SAVESTATE: + return current_savestate_dir; + case RARCH_DIR_SYSTEM: + return dir_system; + case RARCH_DIR_NONE: + break; + } + + return NULL; +} + +const char *dir_get(enum rarch_dir_type type) +{ + switch (type) + { + case RARCH_DIR_SAVEFILE: + return dir_savefile; + case RARCH_DIR_CURRENT_SAVEFILE: + return current_savefile_dir; + case RARCH_DIR_SAVESTATE: + return dir_savestate; + case RARCH_DIR_CURRENT_SAVESTATE: + return current_savestate_dir; + case RARCH_DIR_SYSTEM: + return dir_system; + case RARCH_DIR_NONE: + break; + } + + return NULL; +} + +void dir_set(enum rarch_dir_type type, const char *path) +{ + switch (type) + { + case RARCH_DIR_CURRENT_SAVEFILE: + strlcpy(current_savefile_dir, path, + sizeof(current_savefile_dir)); + break; + case RARCH_DIR_SAVEFILE: + strlcpy(dir_savefile, path, + sizeof(dir_savefile)); + break; + case RARCH_DIR_CURRENT_SAVESTATE: + strlcpy(current_savestate_dir, path, + sizeof(current_savestate_dir)); + break; + case RARCH_DIR_SAVESTATE: + strlcpy(dir_savestate, path, + sizeof(dir_savestate)); + break; + case RARCH_DIR_SYSTEM: + strlcpy(dir_system, path, + sizeof(dir_system)); + break; + case RARCH_DIR_NONE: + break; + } +} + +void dir_check_defaults(void) +{ + unsigned i; + /* early return for people with a custom folder setup + so it doesn't create unnecessary directories + */ +#if defined(ORBIS) || defined(ANDROID) + if (path_is_valid("host0:app/custom.ini")) +#else + if (path_is_valid("custom.ini")) +#endif + return; + + for (i = 0; i < DEFAULT_DIR_LAST; i++) + { + char *new_path = NULL; + const char *dir_path = g_defaults.dirs[i]; + + if (string_is_empty(dir_path)) + continue; + + new_path = (char*)malloc(PATH_MAX_LENGTH * sizeof(char)); + + if (!new_path) + continue; + + new_path[0] = '\0'; + fill_pathname_expand_special(new_path, + dir_path, + PATH_MAX_LENGTH * sizeof(char)); + + if (!path_is_directory(new_path)) + path_mkdir(new_path); + + free(new_path); + } +} diff --git a/paths.h b/paths.h index 15c49fa511..fbb043630e 100644 --- a/paths.h +++ b/paths.h @@ -1,5 +1,5 @@ /* RetroArch - A frontend for libretro. - * Copyright (C) 2011-2017 - Daniel De Matteis + * Copyright (C) 2011-2019 - Daniel De Matteis * * RetroArch is free software: you can redistribute it and/or modify it under the terms * of the GNU General Public License as published by the Free Software Found- @@ -23,6 +23,16 @@ RETRO_BEGIN_DECLS +enum rarch_dir_type +{ + RARCH_DIR_NONE = 0, + RARCH_DIR_SAVEFILE, + RARCH_DIR_SAVESTATE, + RARCH_DIR_CURRENT_SAVEFILE, + RARCH_DIR_CURRENT_SAVESTATE, + RARCH_DIR_SYSTEM +}; + enum rarch_content_type { RARCH_CONTENT_NONE = 0, @@ -46,6 +56,29 @@ enum rarch_path_type RARCH_PATH_SUBSYSTEM }; + +bool dir_init_shader(void); + +bool dir_free_shader(void); + +void dir_check_shader(bool pressed_next, bool pressed_prev); + +bool dir_is_empty(enum rarch_dir_type type); + +void dir_clear(enum rarch_dir_type type); + +void dir_clear_all(void); + +size_t dir_get_size(enum rarch_dir_type type); + +char *dir_get_ptr(enum rarch_dir_type type); + +const char *dir_get(enum rarch_dir_type type); + +void dir_set(enum rarch_dir_type type, const char *path); + +void dir_check_defaults(void); + void path_deinit_subsystem(void); void path_deinit_savefile(void); diff --git a/retroarch.c b/retroarch.c index c029d1c33d..3509514052 100644 --- a/retroarch.c +++ b/retroarch.c @@ -133,7 +133,6 @@ #include "driver.h" #include "input/input_driver.h" #include "msg_hash.h" -#include "dirs.h" #include "paths.h" #include "file_path_special.h" #include "ui/ui_companion_driver.h" diff --git a/runtime_file.c b/runtime_file.c index baed4252b7..6f48caa7cd 100644 --- a/runtime_file.c +++ b/runtime_file.c @@ -32,7 +32,7 @@ #include #include "file_path_special.h" -#include "dirs.h" +#include "paths.h" #include "core_info.h" #include "configuration.h" #include "verbosity.h" diff --git a/tasks/task_content.c b/tasks/task_content.c index 1eb3e2f045..80381f5107 100644 --- a/tasks/task_content.c +++ b/tasks/task_content.c @@ -94,7 +94,6 @@ #include "../retroarch.h" #include "../file_path_special.h" #include "../core.h" -#include "../dirs.h" #include "../paths.h" #include "../verbosity.h"