X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=src%2Fshared%2Finstall.c;h=16504eef0fe7aee6c4306de9a8dbc7e5c7c80ef8;hb=718db96199e;hp=881f715a075976fa131c9347ca505b5e60423a80;hpb=16ed0233a5b7ae38ed4f544d6fcd5827cde695dc;p=elogind.git diff --git a/src/shared/install.c b/src/shared/install.c index 881f715a0..16504eef0 100644 --- a/src/shared/install.c +++ b/src/shared/install.c @@ -1562,6 +1562,7 @@ int unit_file_set_default( UnitFileScope scope, const char *root_dir, const char *file, + bool force, UnitFileChange **changes, unsigned *n_changes) { @@ -1599,7 +1600,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 +1639,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(path_get_file_name(tmp)); - n = strdup(path_get_file_name(tmp)); if (!n) return -ENOMEM;