Projects
Mega:23.03
systemd
_service:tar_scm:backport-basic-env-util-correc...
Sign Up
Log In
Username
Password
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File _service:tar_scm:backport-basic-env-util-correctly-parse-extended-vars-after-n.patch of Package systemd
From 74583cad5a3bf4051b879b8b1ac53934027ef485 Mon Sep 17 00:00:00 2001 From: Andrew Soutar <andrew@andrewsoutar.com> Date: Tue, 5 Oct 2021 22:55:27 -0400 Subject: [PATCH] basic/env-util: correctly parse extended vars after non-extended vars (#20941) (cherry picked from commit 5ef97a712236f0ddddec52665c0aea7d4e6d3c13) Conflict:NA Reference:https://github.com/systemd/systemd/commit/74583cad5a3bf4051b879b8b1ac53934027ef485 --- src/basic/env-util.c | 1 + src/test/test-env-util.c | 5 ++++- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/src/basic/env-util.c b/src/basic/env-util.c index 81b1e3f10e..1ca445dab4 100644 --- a/src/basic/env-util.c +++ b/src/basic/env-util.c @@ -577,6 +577,7 @@ char *replace_env_n(const char *format, size_t n, char **env, unsigned flags) { word = e+1; state = WORD; + nest--; } else if (*e == ':') { if (flags & REPLACE_ENV_ALLOW_EXTENDED) { len = e - word - 2; diff --git a/src/test/test-env-util.c b/src/test/test-env-util.c index ed4580e4af..3d5951c46e 100644 --- a/src/test/test-env-util.c +++ b/src/test/test-env-util.c @@ -198,7 +198,7 @@ static void test_replace_env2(bool extended) { "BAR=bar", NULL }; - _cleanup_free_ char *t = NULL, *s = NULL, *q = NULL, *r = NULL, *p = NULL, *x = NULL; + _cleanup_free_ char *t = NULL, *s = NULL, *q = NULL, *r = NULL, *p = NULL, *x = NULL, *y = NULL; unsigned flags = REPLACE_ENV_ALLOW_EXTENDED*extended; t = replace_env("FOO=${FOO:-${BAR}}", (char**) env, flags); @@ -218,6 +218,9 @@ static void test_replace_env2(bool extended) { x = replace_env("XXX=${XXX:+${BAR}post}", (char**) env, flags); assert_se(streq(x, extended ? "XXX=" : "XXX=${XXX:+barpost}")); + + y = replace_env("FOO=${FOO}between${BAR:-baz}", (char**) env, flags); + assert_se(streq(y, extended ? "FOO=foobetweenbar" : "FOO=foobetween${BAR:-baz}")); } static void test_replace_env_argv(void) { -- 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