X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=src%2Fshared%2Finstall.c;h=17e8a7508e07a4976ab4c24fb8b62e9bfff76dd7;hb=cde93897cdefdd7c7f66c400a61e42ceee5f6a46;hp=881f715a075976fa131c9347ca505b5e60423a80;hpb=16ed0233a5b7ae38ed4f544d6fcd5827cde695dc;p=elogind.git diff --git a/src/shared/install.c b/src/shared/install.c index 881f715a0..17e8a7508 100644 --- a/src/shared/install.c +++ b/src/shared/install.c @@ -276,10 +276,10 @@ static int remove_marked_symlinks_fd( found = set_get(remove_symlinks_to, dest) || - set_get(remove_symlinks_to, path_get_file_name(dest)); + set_get(remove_symlinks_to, basename(dest)); if (unit_name_is_instance(p)) - found = found && strv_contains(files, path_get_file_name(p)); + found = found && strv_contains(files, basename(p)); if (found) { @@ -451,7 +451,7 @@ static int find_symlinks_fd( if (path_is_absolute(name)) found_dest = path_equal(dest, name); else - found_dest = streq(path_get_file_name(dest), name); + found_dest = streq(basename(dest), name); if (found_path && found_dest) { _cleanup_free_ char *t = NULL; @@ -718,7 +718,7 @@ int unit_file_link( char *fn; struct stat st; - fn = path_get_file_name(*i); + fn = basename(*i); if (!path_is_absolute(*i) || !unit_name_is_valid(fn, true)) { @@ -861,7 +861,7 @@ static int install_info_add( assert(name || path); if (!name) - name = path_get_file_name(path); + name = basename(path); if (!unit_name_is_valid(name, true)) return -EINVAL; @@ -922,6 +922,7 @@ static int config_parse_also(const char *unit, const char *filename, unsigned line, const char *section, + unsigned section_line, const char *lvalue, int ltype, const char *rvalue, @@ -957,6 +958,7 @@ static int config_parse_user(const char *unit, const char *filename, unsigned line, const char *section, + unsigned section_line, const char *lvalue, int ltype, const char *rvalue, @@ -1427,7 +1429,7 @@ static int install_context_mark_for_removal( char *unit_file; if (i->path) { - unit_file = path_get_file_name(i->path); + unit_file = basename(i->path); if (unit_name_is_instance(unit_file)) /* unit file named as instance exists, thus all symlinks @@ -1562,6 +1564,7 @@ int unit_file_set_default( UnitFileScope scope, const char *root_dir, const char *file, + bool force, UnitFileChange **changes, unsigned *n_changes) { @@ -1599,7 +1602,7 @@ int unit_file_set_default( path = strappenda(config_path, "/" SPECIAL_DEFAULT_TARGET); - r = create_symlink(i->path, path, true, changes, n_changes); + r = create_symlink(i->path, path, force, changes, n_changes); if (r < 0) return r; @@ -1638,10 +1641,14 @@ int unit_file_get_default( r = readlink_malloc(path, &tmp); if (r == -ENOENT) continue; - if (r < 0) + else if (r == -EINVAL) + /* not a symlink */ + n = strdup(SPECIAL_DEFAULT_TARGET); + else if (r < 0) return r; + else + n = strdup(basename(tmp)); - n = strdup(path_get_file_name(tmp)); if (!n) return -ENOMEM; @@ -2000,7 +2007,7 @@ int unit_file_get_list( f->state = UNIT_FILE_STATIC; found: - r = hashmap_put(h, path_get_file_name(f->path), f); + r = hashmap_put(h, basename(f->path), f); if (r < 0) return r; f = NULL; /* prevent cleanup */