X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?p=elogind.git;a=blobdiff_plain;f=src%2Fdelta%2Fdelta.c;h=cc3420829ae2d1e9615606cd6ca52b7a0d135c88;hp=eef6536b01f0897d9d182bc50d0f0f01b00e6b2c;hb=e26970a82cf810fd1cad5361e1963040640405ba;hpb=b7def684941808600c344f0be7a2b9fcdda97e0f diff --git a/src/delta/delta.c b/src/delta/delta.c index eef6536b0..cc3420829 100644 --- a/src/delta/delta.c +++ b/src/delta/delta.c @@ -47,24 +47,17 @@ static enum { } arg_flags = 0; static int equivalent(const char *a, const char *b) { - char *x, *y; - int r; + _cleanup_free_ char *x = NULL, *y = NULL; x = canonicalize_file_name(a); if (!x) return -errno; y = canonicalize_file_name(b); - if (!y) { - free(x); + if (!y) return -errno; - } - - r = path_equal(x, y); - free(x); - free(y); - return r; + return path_equal(x, y); } static int notify_override_masked(const char *top, const char *bottom) { @@ -108,7 +101,7 @@ static int notify_override_unchanged(const char *f) { } static int found_override(const char *top, const char *bottom) { - char *dest; + _cleanup_free_ char *dest = NULL; int k; pid_t pid; @@ -117,7 +110,7 @@ static int found_override(const char *top, const char *bottom) { if (null_or_empty_path(top) > 0) { notify_override_masked(top, bottom); - goto finish; + return 0; } k = readlink_malloc(top, &dest); @@ -127,13 +120,12 @@ static int found_override(const char *top, const char *bottom) { else notify_override_redirected(top, bottom); - free(dest); - goto finish; + return 0; } notify_override_overridden(top, bottom); if (!arg_diff) - goto finish; + return 0; putchar('\n'); @@ -153,14 +145,11 @@ static int found_override(const char *top, const char *bottom) { putchar('\n'); -finish: - return 0; } static int enumerate_dir(Hashmap *top, Hashmap *bottom, const char *path) { - DIR *d; - int r = 0; + _cleanup_closedir_ DIR *d; assert(top); assert(bottom); @@ -176,15 +165,14 @@ static int enumerate_dir(Hashmap *top, Hashmap *bottom, const char *path) { } for (;;) { - struct dirent *de, buf; + struct dirent *de; + union dirent_storage buf; int k; char *p; - k = readdir_r(d, &buf, &de); - if (k != 0) { - r = -k; - goto finish; - } + k = readdir_r(d, &buf.de, &de); + if (k != 0) + return -k; if (!de) break; @@ -193,39 +181,30 @@ static int enumerate_dir(Hashmap *top, Hashmap *bottom, const char *path) { continue; p = strjoin(path, "/", de->d_name, NULL); - if (!p) { - r = -ENOMEM; - goto finish; - } + if (!p) + return -ENOMEM; path_kill_slashes(p); k = hashmap_put(top, path_get_file_name(p), p); if (k >= 0) { p = strdup(p); - if (!p) { - r = -ENOMEM; - goto finish; - } + if (!p) + return -ENOMEM; } else if (k != -EEXIST) { free(p); - r = k; - goto finish; + return k; } free(hashmap_remove(bottom, path_get_file_name(p))); k = hashmap_put(bottom, path_get_file_name(p), p); if (k < 0) { free(p); - r = k; - goto finish; + return k; } } -finish: - closedir(d); - - return r; + return 0; } static int process_suffix(const char *prefixes, const char *suffix) { @@ -252,7 +231,7 @@ static int process_suffix(const char *prefixes, const char *suffix) { } NULSTR_FOREACH(p, prefixes) { - char *t; + _cleanup_free_ char *t = NULL; t = strjoin(p, "/", suffix, NULL); if (!t) { @@ -265,7 +244,6 @@ static int process_suffix(const char *prefixes, const char *suffix) { r = k; log_debug("Looking at %s", t); - free(t); } HASHMAP_FOREACH(f, top, i) { @@ -307,7 +285,7 @@ static int process_suffix_chop(const char *prefixes, const char *suffix) { /* Strip prefix from the suffix */ NULSTR_FOREACH(p, prefixes) { if (startswith(suffix, p)) { - suffix += strlen(p);; + suffix += strlen(p); suffix += strspn(suffix, "/"); return process_suffix(prefixes, suffix); }