conf-parser: Set EXTRACT_RETAIN_ESCAPE when extracting words (#2917)
authorDan Nicholson <nicholson@endlessm.com>
Mon, 18 Apr 2016 02:52:45 +0000 (19:52 -0700)
committerZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>
Mon, 18 Apr 2016 02:52:45 +0000 (22:52 -0400)
commitb047c62e6663f2c52e7c6dba6b013bcf97431ff9
tree0e4b35cf0094b9d9fa727c7fdcae530a08ec82c9
parent6f7202cfd512d18f561af6708fe0823c9545f674
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 \.
src/shared/conf-parser.c