Commit c2967451 authored by Vitaly Lipatov's avatar Vitaly Lipatov

rewrite set_sudo (add return status, don' fail SUDO if nofail arg is there)

parent 947aae30
...@@ -294,12 +294,17 @@ info() ...@@ -294,12 +294,17 @@ info()
fi fi
} }
SUDO_TESTED="0" # if we have not sudo, returns 1 and set SUDO variable to fatal
SUDO_CMD="sudo" SUDO_TESTED=''
SUDO_CMD='sudo'
set_sudo() set_sudo()
{ {
[ "$SUDO_TESTED" = "1" ] && return local nofail="$1"
SUDO_TESTED="1"
# cache the result
[ -n "$SUDO_TESTED" ] && return "$SUDO_TESTED"
SUDO_TESTED="0"
SUDO="" SUDO=""
# skip SUDO if disabled # skip SUDO if disabled
[ -n "$EPMNOSUDO" ] && return [ -n "$EPMNOSUDO" ] && return
...@@ -310,28 +315,32 @@ set_sudo() ...@@ -310,28 +315,32 @@ set_sudo()
EFFUID=$(id -u) EFFUID=$(id -u)
# do not need sudo # if we are root, do not need sudo
[ $EFFUID = "0" ] && return [ $EFFUID = "0" ] && return
# start error section
SUDO_TESTED="1"
if ! which $SUDO_CMD >/dev/null 2>/dev/null ; then if ! which $SUDO_CMD >/dev/null 2>/dev/null ; then
SUDO="fatal 'Can't find sudo. Please install and tune sudo ('# epm install sudo') or run epm under root.'" [ "$nofail" = "nofail" ] || SUDO="fatal 'Can't find sudo. Please install and tune sudo ('# epm install sudo') or run epm under root.'"
return return "$SUDO_TESTED"
fi fi
# if input is a console # if input is a console
if inputisatty && isatty && isatty2 ; then if inputisatty && isatty && isatty2 ; then
if ! $SUDO_CMD -l >/dev/null ; then if ! $SUDO_CMD -l >/dev/null ; then
SUDO="fatal 'Can't use sudo (only without password sudo is supported in non interactive using). Please run epm under root.'" [ "$nofail" = "nofail" ] || SUDO="fatal 'Can't use sudo (only without password sudo is supported in non interactive using). Please run epm under root.'"
return return "$SUDO_TESTED"
fi fi
else else
# use sudo if one is tuned and tuned without password # use sudo if one is tuned and tuned without password
if ! $SUDO_CMD -l -n >/dev/null 2>/dev/null ; then if ! $SUDO_CMD -l -n >/dev/null 2>/dev/null ; then
SUDO="fatal 'Can't use sudo (only without password sudo is supported). Please run epm under root.'" [ "$nofail" = "nofail" ] || SUDO="fatal 'Can't use sudo (only without password sudo is supported). Please run epm under root.'"
return return "$SUDO_TESTED"
fi fi
fi fi
SUDO_TESTED="0"
SUDO="$SUDO_CMD --" SUDO="$SUDO_CMD --"
# check for < 1.7 version which do not support -- (and --help possible too) # check for < 1.7 version which do not support -- (and --help possible too)
$SUDO_CMD -h 2>/dev/null | grep -q " --" || SUDO="$SUDO_CMD" $SUDO_CMD -h 2>/dev/null | grep -q " --" || SUDO="$SUDO_CMD"
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment