X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=src%2Fshared%2Finstall.c;h=efbe61e874e5ca7fe0eb380647a16a27fba185ce;hb=23fbe14f503c1e98292efc4ba1238adb7dc38d80;hp=8a7f7e209437c5c886bbe628324d05b7761e7142;hpb=aedd4012f437a0b08c34f40a5bb97b6e615ac074;p=elogind.git diff --git a/src/shared/install.c b/src/shared/install.c index 8a7f7e209..efbe61e87 100644 --- a/src/shared/install.c +++ b/src/shared/install.c @@ -538,7 +538,6 @@ static int find_symlinks_in_scope( assert(scope < _UNIT_FILE_SCOPE_MAX); assert(name); - /* First look in runtime config path */ r = get_config_path(scope, true, root_dir, &path); if (r < 0) @@ -662,7 +661,7 @@ int unit_file_unmask( goto finish; STRV_FOREACH(i, files) { - char *path; + _cleanup_free_ char *path = NULL; if (!unit_name_is_valid(*i, TEMPLATE_VALID)) { if (r == 0) @@ -678,21 +677,16 @@ int unit_file_unmask( q = null_or_empty_path(path); if (q > 0) { - if (unlink(path) >= 0) { - mark_symlink_for_removal(&remove_symlinks_to, path); + if (unlink(path) < 0) + q = -errno; + else { + q = mark_symlink_for_removal(&remove_symlinks_to, path); add_file_change(changes, n_changes, UNIT_FILE_UNLINK, path, NULL); - - free(path); - continue; } - - q = -errno; } if (q != -ENOENT && r == 0) r = q; - - free(path); } @@ -1553,10 +1547,8 @@ int unit_file_add_dependency( UnitFileState state; state = unit_file_get_state(scope, root_dir, *i); - if (state < 0) { - log_error("Failed to get unit file state for %s: %s", *i, strerror(-state)); - return state; - } + if (state < 0) + return log_error_errno(state, "Failed to get unit file state for %s: %m", *i); if (state == UNIT_FILE_MASKED || state == UNIT_FILE_MASKED_RUNTIME) { log_error("Failed to enable unit: Unit %s is masked", *i);