diff --git a/command.c b/command.c index f913cb3695..3a60187bd5 100644 --- a/command.c +++ b/command.c @@ -24,6 +24,7 @@ #include "general.h" #include "compat/strl.h" #include "compat/posix_string.h" +#include "file_path.h" #include #include @@ -213,15 +214,12 @@ static bool cmd_set_shader(const char *arg) return false; enum rarch_shader_type type = RARCH_SHADER_NONE; - const char *ext = strrchr(arg, '.'); + const char *ext = path_get_extension(arg); - if (ext) - { - if (strcmp(ext, ".shader") == 0) - type = RARCH_SHADER_GLSL; - else if (strcmp(ext, ".cg") == 0 || strcmp(ext, ".cgp") == 0) - type = RARCH_SHADER_CG; - } + if (strcmp(ext, "glsl") == 0 || strcmp(ext, "glslp") == 0) + type = RARCH_SHADER_GLSL; + else if (strcmp(ext, "cg") == 0 || strcmp(ext, "cgp") == 0) + type = RARCH_SHADER_CG; if (type == RARCH_SHADER_NONE) return false; diff --git a/driver.c b/driver.c index e7892f2098..06c67baa6a 100644 --- a/driver.c +++ b/driver.c @@ -1319,7 +1319,7 @@ static void init_shader_dir(void) if (!*g_settings.video.shader_dir) return; - g_extern.shader_dir.list = dir_list_new(g_settings.video.shader_dir, "shader|cg|cgp|glsl|glslp", false); + g_extern.shader_dir.list = dir_list_new(g_settings.video.shader_dir, "cg|cgp|glsl|glslp", false); if (!g_extern.shader_dir.list || g_extern.shader_dir.list->size == 0) { deinit_shader_dir(); diff --git a/gfx/shader_parse.c b/gfx/shader_parse.c index ff89a1ba99..e084ffd39e 100644 --- a/gfx/shader_parse.c +++ b/gfx/shader_parse.c @@ -605,7 +605,7 @@ enum rarch_shader_type gfx_shader_parse_type(const char *path, enum rarch_shader if (strcmp(ext, "cg") == 0 || strcmp(ext, "cgp") == 0) return RARCH_SHADER_CG; - else if (strcmp(ext, "shader") == 0 || strcmp(ext, "glslp") == 0 || strcmp(ext, "glsl") == 0) + else if (strcmp(ext, "glslp") == 0 || strcmp(ext, "glsl") == 0) return RARCH_SHADER_GLSL; return fallback; diff --git a/retroarch.c b/retroarch.c index 44820d472a..fd4e93017a 100644 --- a/retroarch.c +++ b/retroarch.c @@ -2358,14 +2358,11 @@ static void check_shader_dir(void) const char *shader = g_extern.shader_dir.list->elems[g_extern.shader_dir.ptr].data; enum rarch_shader_type type = RARCH_SHADER_NONE; - const char *ext = strrchr(shader, '.'); - if (ext) - { - if (strcmp(ext, ".shader") == 0) - type = RARCH_SHADER_GLSL; - else if (strcmp(ext, ".cg") == 0 || strcmp(ext, ".cgp") == 0) - type = RARCH_SHADER_CG; - } + const char *ext = path_get_extension(shader); + if (strcmp(ext, "glsl") == 0 || strcmp(ext, "glslp") == 0) + type = RARCH_SHADER_GLSL; + else if (strcmp(ext, "cg") == 0 || strcmp(ext, "cgp") == 0) + type = RARCH_SHADER_CG; if (type == RARCH_SHADER_NONE) return;