diff options
Diffstat (limited to '')
-rw-r--r-- | libfonts_get_output_rendering_settings.c | 34 |
1 files changed, 20 insertions, 14 deletions
diff --git a/libfonts_get_output_rendering_settings.c b/libfonts_get_output_rendering_settings.c index aa3af95..f634550 100644 --- a/libfonts_get_output_rendering_settings.c +++ b/libfonts_get_output_rendering_settings.c @@ -17,7 +17,7 @@ getn(const char *file_part1, size_t file_part1_len, const char *file_part2, if (!path) { enomem: errno = ENOMEM; - return 0; /* TODO abort function */ + return -1; } memcpy(path, file_part1, file_part1_len); @@ -60,23 +60,29 @@ libfonts_get_output_rendering_settings(struct libfonts_rendering_settings *setti } env = libfonts_getenv__("XDG_CONFIG_HOME", ctx); - if (env && *env) - if (get(env, "/libfonts/output-rendering.conf", settings, name, ctx)) + if (env && *env) { + ret = get(env, "/libfonts/output-rendering.conf", settings, name, ctx); + if (ret) goto out; + } env = libfonts_getenv__("HOME", ctx); if (env && *env) { - if (get(env, "/.config/libfonts/output-rendering.conf", settings, name, ctx)) + ret = get(env, "/.config/libfonts/output-rendering.conf", settings, name, ctx); + if (ret) goto out; - if (get(env, "/.libfonts/output-rendering.conf", settings, name, ctx)) + ret = get(env, "/.libfonts/output-rendering.conf", settings, name, ctx); + if (ret) goto out; } home = libfonts_gethome__(ctx); if (home && *home) { - if (get(home, "/.config/libfonts/output-rendering.conf", settings, name, ctx)) + ret = get(home, "/.config/libfonts/output-rendering.conf", settings, name, ctx); + if (ret) goto out; - if (get(home, "/.libfonts/output-rendering.conf", settings, name, ctx)) + ret = get(home, "/.libfonts/output-rendering.conf", settings, name, ctx); + if (ret) goto out; } @@ -85,21 +91,21 @@ libfonts_get_output_rendering_settings(struct libfonts_rendering_settings *setti do { next = strchr(&env[1], ':'); len = next ? (size_t)(next - env) : strlen(env); - if (len) - if (getn(env, len, "/libfonts/output-rendering.conf", settings, name, ctx)) + if (len) { + ret = getn(env, len, "/libfonts/output-rendering.conf", settings, name, ctx); + if (ret) goto out; + } env += len + 1; } while (next); } - if (get("/etc", "/libfonts/output-rendering.conf", settings, name, ctx)) - goto out; - - ret = 0; + ret = get("/etc", "/libfonts/output-rendering.conf", settings, name, ctx); out: free(home); - errno = saved_errno; + if (ret >= 0) + errno = saved_errno; return ret; } |