Projects
Mega:23.03
systemd
_service:tar_scm:backport-core-use-the-new-quot...
Sign Up
Log In
Username
Password
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File _service:tar_scm:backport-core-use-the-new-quoting-helper.patch of Package systemd
From 284781bcb00be27737b52ffb974b66b7d5e990d5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl> Date: Wed, 7 Jul 2021 16:28:19 +0200 Subject: [PATCH] core: use the new quoting helper (cherry picked from commit 8a62620ebe23945021075df7e1b0759102c286ae) Conflict:NA Reference:https://github.com/systemd/systemd/commit/284781bcb00be27737b52ffb974b66b7d5e990d5 --- src/core/execute.c | 64 ++++++++++------------------------------------ 1 file changed, 13 insertions(+), 51 deletions(-) diff --git a/src/core/execute.c b/src/core/execute.c index e24775c150..28efe5c36f 100644 --- a/src/core/execute.c +++ b/src/core/execute.c @@ -51,6 +51,7 @@ #include "env-file.h" #include "env-util.h" #include "errno-list.h" +#include "escape.h" #include "execute.h" #include "exit-status.h" #include "fd-util.h" @@ -3596,8 +3597,6 @@ static int compile_suggested_paths(const ExecContext *c, const ExecParameters *p return 0; } -static char *exec_command_line(char **argv); - static int exec_parameters_get_cgroup_path(const ExecParameters *params, char **ret) { bool using_subcgroup; char *p; @@ -3800,7 +3799,7 @@ static int exec_child( const char *vc = params->confirm_spawn; _cleanup_free_ char *cmdline = NULL; - cmdline = exec_command_line(command->argv); + cmdline = quote_command_line(command->argv); if (!cmdline) { *exit_status = EXIT_MEMORY; return log_oom(); @@ -4650,12 +4649,15 @@ static int exec_child( if (DEBUG_LOGGING) { _cleanup_free_ char *line = NULL; - line = exec_command_line(final_argv); - if (line) - log_unit_struct(unit, LOG_DEBUG, - "EXECUTABLE=%s", executable, - LOG_UNIT_MESSAGE(unit, "Executing: %s", line), - LOG_UNIT_INVOCATION_ID(unit)); + line = quote_command_line(final_argv); + if (!line) { + *exit_status = EXIT_MEMORY; + return log_oom(); + } + + log_unit_struct(unit, LOG_DEBUG, + "EXECUTABLE=%s", executable, + LOG_UNIT_MESSAGE(unit, "Executing: %s", line)); } if (exec_fd >= 0) { @@ -4739,7 +4741,7 @@ int exec_spawn(Unit *unit, if (r < 0) return log_unit_error_errno(unit, r, "Failed to load environment files: %m"); - line = exec_command_line(command->argv); + line = quote_command_line(command->argv); if (!line) return log_oom(); @@ -5954,46 +5956,6 @@ void exec_status_dump(const ExecStatus *s, FILE *f, const char *prefix) { prefix, s->status); } -static char *exec_command_line(char **argv) { - size_t k; - char *n, *p, **a; - bool first = true; - - assert(argv); - - k = 1; - STRV_FOREACH(a, argv) - k += strlen(*a)+3; - - n = new(char, k); - if (!n) - return NULL; - - p = n; - STRV_FOREACH(a, argv) { - - if (!first) - *(p++) = ' '; - else - first = false; - - if (strpbrk(*a, WHITESPACE)) { - *(p++) = '\''; - p = stpcpy(p, *a); - *(p++) = '\''; - } else - p = stpcpy(p, *a); - - } - - *p = 0; - - /* FIXME: this doesn't really handle arguments that have - * spaces and ticks in them */ - - return n; -} - static void exec_command_dump(ExecCommand *c, FILE *f, const char *prefix) { _cleanup_free_ char *cmd = NULL; const char *prefix2; @@ -6004,7 +5966,7 @@ static void exec_command_dump(ExecCommand *c, FILE *f, const char *prefix) { prefix = strempty(prefix); prefix2 = strjoina(prefix, "\t"); - cmd = exec_command_line(c->argv); + cmd = quote_command_line(c->argv); fprintf(f, "%sCommand Line: %s\n", prefix, cmd ? cmd : strerror_safe(ENOMEM)); -- 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