Merge pull request #4154 from fr500/master

review: make preset loading more robust
This commit is contained in:
Twinaphex 2016-12-04 19:40:37 +01:00 committed by GitHub
commit ea5b0bd6c9

View File

@ -116,6 +116,7 @@ static bool video_shader_parse_pass(config_file_t *conf,
struct video_shader_pass *pass, unsigned i)
{
char tmp_str[PATH_MAX_LENGTH];
char tmp_path[PATH_MAX_LENGTH];
char shader_name[64];
char filter_name_buf[64];
char wrap_name_buf[64];
@ -148,8 +149,14 @@ static bool video_shader_parse_pass(config_file_t *conf,
return false;
}
strlcpy(pass->source.path, tmp_str, sizeof(pass->source.path));
strlcpy(tmp_path, tmp_str, sizeof(tmp_path));
path_resolve_realpath(tmp_path, sizeof(tmp_path));
if (!path_file_exists(tmp_path))
strlcpy(pass->source.path, tmp_str, sizeof(pass->source.path));
else
strlcpy(pass->source.path, tmp_path, sizeof(pass->source.path));
/* Smooth */
snprintf(filter_name_buf, sizeof(filter_name_buf), "filter_linear%u", i);
@ -323,6 +330,7 @@ static bool video_shader_parse_textures(config_file_t *conf,
char textures[1024];
const char *id = NULL;
char *save = NULL;
char tmp_path[PATH_MAX_LENGTH];
textures[0] = '\0';
@ -349,6 +357,15 @@ static bool video_shader_parse_textures(config_file_t *conf,
return false;
}
strlcpy(tmp_path, shader->lut[shader->luts].path, sizeof(tmp_path));
path_resolve_realpath(tmp_path, sizeof(tmp_path));
if (path_file_exists(tmp_path))
{
strlcpy(shader->lut[shader->luts].path,
tmp_path, sizeof(shader->lut[shader->luts].path));
}
strlcpy(shader->lut[shader->luts].id, id,
sizeof(shader->lut[shader->luts].id));
@ -842,12 +859,17 @@ void video_shader_write_conf_cgp(config_file_t *conf,
for (i = 0; i < shader->passes; i++)
{
char key[64];
char tmp[PATH_MAX_LENGTH];
const struct video_shader_pass *pass = &shader->pass[i];
key[0] = '\0';
snprintf(key, sizeof(key), "shader%u", i);
config_set_string(conf, key, pass->source.path);
strlcpy(tmp, pass->source.path, sizeof(tmp));
if (!path_is_absolute(tmp))
path_resolve_realpath(tmp, sizeof(tmp));
config_set_string(conf, key, tmp);
if (pass->filter != RARCH_FILTER_UNSPEC)
{