mirror of
https://gitlab.freedesktop.org/NetworkManager/NetworkManager
synced 2024-10-15 12:34:55 +00:00
30 lines
699 B
Bash
30 lines
699 B
Bash
|
#!/bin/bash
|
||
|
|
||
|
CMD="$1"
|
||
|
shift;
|
||
|
|
||
|
# convert the libtool internal path
|
||
|
resolve_cmd() {
|
||
|
local C="$1"
|
||
|
|
||
|
local C2="$(echo "$C" | sed 's#^\(.*/\)\.libs/lt-\([^/]\+\)$#\1\2#')"
|
||
|
if [[ "$C2" != "$C" && ! -x "$C2" ]]; then
|
||
|
# such a file does not exist... back to $C
|
||
|
C2="$C"
|
||
|
fi
|
||
|
echo "$C2"
|
||
|
}
|
||
|
|
||
|
if [[ $UID == 0 ]]; then
|
||
|
# we are already root. Execute directly.
|
||
|
exec "$(resolve_cmd "$CMD")" "$@"
|
||
|
elif [[ "$NMTST_SUDO_NO_CALL_SELF" != "" ]]; then
|
||
|
# when setting $NMTST_SUDO_NO_CALL_SELF, pass the (resolved) command
|
||
|
# directly to sudo.
|
||
|
exec sudo "$(resolve_cmd "$CMD")" "$@"
|
||
|
else
|
||
|
# by default, call self again with sudo.
|
||
|
exec sudo -E "$0" "$CMD" "$@"
|
||
|
fi
|
||
|
|