From: Thorsten Behrens <tbehrens@xxxxxxxx> Add more corner cases from systemd's unit_name_from_path_instance() C function. Signed-off-by: Thorsten Behrens <tbehrens@xxxxxxxx> Signed-off-by: Thomas Renninger <trenn@xxxxxxx> --- modules.d/99base/dracut-lib.sh | 24 ++++++++++++++++++------ 1 file changed, 18 insertions(+), 6 deletions(-) diff --git a/modules.d/99base/dracut-lib.sh b/modules.d/99base/dracut-lib.sh index f7cffc4..5c1504f 100755 --- a/modules.d/99base/dracut-lib.sh +++ b/modules.d/99base/dracut-lib.sh @@ -866,18 +866,30 @@ wait_for_mount() } >> "$hookdir/emergency/90-${_name}.sh" } +# get a systemd-compatible unit name from a path +# (mimicks unit_name_from_path_instance()) dev_unit_name() { + local dev="$1" + if command -v systemd-escape >/dev/null; then - systemd-escape -p "$1" + systemd-escape -p "$dev" return fi - _name="${1%%/}" - _name="${_name##/}" - _name="$(str_replace "$_name" '-' '\x2d')" - _name="$(str_replace "$_name" '/' '-')" - echo "$_name" + if [ "$dev" = "/" -o -z "$dev" ]; then + printf -- "-" + exit 0 + fi + + dev="${1%%/}" + dev="${dev##/}" + dev="$(str_replace "$dev" '\' '\x5c')" + dev="$(str_replace "$dev" '-' '\x2d')" + dev=${dev/#\./\\x2e} + dev="$(str_replace "$dev" '/' '-')" + + printf -- "%s" "$dev" } # wait_for_dev <dev> -- 1.8.5.2 -- To unsubscribe from this list: send the line "unsubscribe initramfs" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html