Projects
Mega:23.03
systemd
_service:tar_scm:backport-analyze-fix-printing-...
Sign Up
Log In
Username
Password
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File _service:tar_scm:backport-analyze-fix-printing-config-when-there-is-no-main-co.patch of Package systemd
From 8621f957b6e3a7eed1c5965d332ad1c4c594f26e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl> Date: Sat, 20 Nov 2021 11:42:31 +0100 Subject: [PATCH] analyze: fix printing config when there is no main config file Since 8b8024f1c231c166f5c450905c8fd91d11704ae7 and the follow-up commits, the main config file may be located in /usr or in other paths. But the code in analyze.c was still assuming that it must be in /etc. Things mostly worked for our own config files because we usually install a comments-only file in /etc, but was not correct in the general case. This fixes in particular 'systemd-analyze cat-config systemd/zram-generator.conf'. In Fedora we distribute a config file in zram-generator-defaults.rpm that is in /usr/lib, and 'cat-config' would refuse to show it because /etc/systemd/zram-generator.conf does not exist. The main config file is optional, but let's print an informative message because this is a slightly unusual case. The file paths that we printed were missing the root prefix. (cherry picked from commit 0895e87348e5fc02f50498cad5922eb3eb172323) Conflict:NA Reference:https://github.com/systemd/systemd/commit/8621f957b6e3a7eed1c5965d332ad1c4c594f26e --- src/shared/pretty-print.c | 43 ++++++++++++++++++++++++++------------- 1 file changed, 29 insertions(+), 14 deletions(-) diff --git a/src/shared/pretty-print.c b/src/shared/pretty-print.c index 137ba77b3a..97baeda401 100644 --- a/src/shared/pretty-print.c +++ b/src/shared/pretty-print.c @@ -300,24 +300,39 @@ int conf_files_cat(const char *root, const char *name) { return log_error_errno(r, "Failed to build directory list: %m"); } - r = conf_files_list_strv(&files, extension, root, 0, (const char* const*) dirs); - if (r < 0) - return log_error_errno(r, "Failed to query file list: %m"); + if (DEBUG_LOGGING) { + log_debug("Looking for configuration in:"); + if (!is_collection) + STRV_FOREACH(prefix, prefixes) + log_debug(" %s%s%s", strempty(root), *prefix, name); + STRV_FOREACH(t, dirs) + log_debug(" %s%s/*%s", strempty(root), *t, extension); + } + + /* First locate the main config file, if any */ if (!is_collection) { - path = path_join(root, "/etc", name); + STRV_FOREACH(prefix, prefixes) { + path = path_join(root, *prefix, name); + if (!path) + return log_oom(); + if (access(path, F_OK) == 0) + break; + path = mfree(path); + } + if (!path) - return log_oom(); + printf("%s# Main configuration file %s not found%s\n", + ansi_highlight_magenta(), + name, + ansi_normal()); } - if (DEBUG_LOGGING) { - log_debug("Looking for configuration in:"); - if (path) - log_debug(" %s", path); - STRV_FOREACH(t, dirs) - log_debug(" %s/*%s", *t, extension); - } + /* Then locate the drop-ins, if any */ + r = conf_files_list_strv(&files, extension, root, 0, (const char* const*) dirs); + if (r < 0) + return log_error_errno(r, "Failed to query file list: %m"); - /* show */ - return cat_files(path, files, CAT_FLAGS_MAIN_FILE_OPTIONAL); + /* Show */ + return cat_files(path, files, 0); } -- 2.33.0
Locations
Projects
Search
Status Monitor
Help
Open Build Service
OBS Manuals
API Documentation
OBS Portal
Reporting a Bug
Contact
Mailing List
Forums
Chat (IRC)
Twitter
Open Build Service (OBS)
is an
openSUSE project
.
浙ICP备2022010568号-2