summaryrefslogtreecommitdiff
path: root/src/shared/conf-parser.c
diff options
context:
space:
mode:
authorDan Nicholson <nicholson@endlessm.com>2016-04-17 19:52:45 -0700
committerZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>2016-04-17 22:52:45 -0400
commitb047c62e6663f2c52e7c6dba6b013bcf97431ff9 (patch)
tree0e4b35cf0094b9d9fa727c7fdcae530a08ec82c9 /src/shared/conf-parser.c
parent6f7202cfd512d18f561af6708fe0823c9545f674 (diff)
conf-parser: Set EXTRACT_RETAIN_ESCAPE when extracting words (#2917)
If you reference another unit with an escaped name, the escaped characters should remain in the extracted word. This used to work correctly prior to commit 34f253f0. The problem can be seen when units with escaped names are referenced. $ cat "/usr/lib/systemd/system/dev-disk-by\x2dlabel-eos\x2dswap.swap" [Swap] What=/dev/disk/by-label/eos-swap [Install] WantedBy=dev-disk-by\x2dlabel-eos\x2dswap.device $ systemctl enable "dev-disk-by\x2dlabel-eos\x2dswap.swap" Created symlink /etc/systemd/system/dev-disk-byx2dlabel-eosx2dswap.device.wants/dev-disk-by\x2dlabel-eos\x2dswap.swap, pointing to /usr/lib/systemd/system/dev-disk-by\x2dlabel-eos\x2dswap.swap. The wants directory should be created with the x2ds escaped with \.
Diffstat (limited to 'src/shared/conf-parser.c')
-rw-r--r--src/shared/conf-parser.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/src/shared/conf-parser.c b/src/shared/conf-parser.c
index bd0a1f483b..1141f9964f 100644
--- a/src/shared/conf-parser.c
+++ b/src/shared/conf-parser.c
@@ -732,7 +732,7 @@ int config_parse_strv(const char *unit,
for (;;) {
char *word = NULL;
int r;
- r = extract_first_word(&rvalue, &word, WHITESPACE, EXTRACT_QUOTES);
+ r = extract_first_word(&rvalue, &word, WHITESPACE, EXTRACT_QUOTES|EXTRACT_RETAIN_ESCAPE);
if (r == 0)
break;
if (r == -ENOMEM)