X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=src%2Fdelta%2Fdelta.c;h=a26af02b7a21142ec3aea13fdf458b926f6ae43b;hb=6887ec4f00d7c10cd70da3e10d570684bf32d28d;hp=b3272d916e3332c3e2efabba3b444919fdcf7e7a;hpb=0b5a519c89b5fb48ec7a3cfbd9c02283ae0f23ac;p=elogind.git diff --git a/src/delta/delta.c b/src/delta/delta.c index b3272d916..a26af02b7 100644 --- a/src/delta/delta.c +++ b/src/delta/delta.c @@ -251,7 +251,7 @@ static int enumerate_dir_d(Hashmap *top, Hashmap *bottom, Hashmap *drops, const if (!p) return -ENOMEM; - k = hashmap_put(h, path_get_file_name(p), p); + k = hashmap_put(h, basename(p), p); if (k < 0) { free(p); if (k != -EEXIST) @@ -280,13 +280,13 @@ static int enumerate_dir(Hashmap *top, Hashmap *bottom, Hashmap *drops, const ch for (;;) { struct dirent *de; - union dirent_storage buf; int k; char *p; - k = readdir_r(d, &buf.de, &de); - if (k != 0) - return -k; + errno = 0; + de = readdir(d); + if (!de && errno != 0) + return -errno; if (!de) break; @@ -303,7 +303,7 @@ static int enumerate_dir(Hashmap *top, Hashmap *bottom, Hashmap *drops, const ch path_kill_slashes(p); - k = hashmap_put(top, path_get_file_name(p), p); + k = hashmap_put(top, basename(p), p); if (k >= 0) { p = strdup(p); if (!p) @@ -313,8 +313,8 @@ static int enumerate_dir(Hashmap *top, Hashmap *bottom, Hashmap *drops, const ch return k; } - free(hashmap_remove(bottom, path_get_file_name(p))); - k = hashmap_put(bottom, path_get_file_name(p), p); + free(hashmap_remove(bottom, basename(p))); + k = hashmap_put(bottom, basename(p), p); if (k < 0) { free(p); return k; @@ -431,7 +431,7 @@ static int process_suffix_chop(const char *prefixes, const char *suffix, const c return -EINVAL; } -static void help(void) { +static int help(void) { printf("%s [OPTIONS...] [SUFFIX...]\n\n" "Find overridden configuration files.\n\n" @@ -441,6 +441,8 @@ static void help(void) { " --diff[=1|0] Show a diff when overridden files differ\n" " -t --type=LIST... Only display a selected set of override types\n", program_invocation_short_name); + + return 0; } static int parse_flags(const char *flag_str, int flags) { @@ -482,7 +484,7 @@ static int parse_argv(int argc, char *argv[]) { { "no-pager", no_argument, NULL, ARG_NO_PAGER }, { "diff", optional_argument, NULL, ARG_DIFF }, { "type", required_argument, NULL, 't' }, - { NULL, 0, NULL, 0 } + {} }; int c; @@ -507,9 +509,6 @@ static int parse_argv(int argc, char *argv[]) { arg_no_pager = true; break; - case '?': - return -EINVAL; - case 't': { int f; f = parse_flags(optarg, arg_flags); @@ -538,9 +537,11 @@ static int parse_argv(int argc, char *argv[]) { } break; - default: - log_error("Unknown option code %c", c); + case '?': return -EINVAL; + + default: + assert_not_reached("Unhandled option"); } }