[arch-projects] [PATCH] rc.d: declare ENV as an array
Signed-off-by: Dave Reisner <d@falconindy.com> --- Sorry to sneak this in -- I should have noticed it earlier. This is simply a continuation of my crusade against eval, which would happily go to town with word splitting. As this conflicts with Eric's patch, one of us will need to refactor slightly. dave rc.d | 12 ++++++------ 1 files changed, 6 insertions(+), 6 deletions(-) diff --git a/rc.d b/rc.d index 55871b1..af29574 100755 --- a/rc.d +++ b/rc.d @@ -46,13 +46,13 @@ case $1 in shift # set same environment variables as init runlevel=$(/sbin/runlevel) - ENV="PATH='/bin:/usr/bin:/sbin:/usr/sbin'" - ENV+=" PREVLEVEL='${runlevel:0:1}'" - ENV+=" RUNLEVEL='${runlevel:2:1}'" - ENV+=" CONSOLE='${CONSOLE:-/dev/console}'" - ENV+=" TERM='${TERM}'" + ENV=("PATH=/bin:/usr/bin:/sbin:/usr/sbin" + "PREVLEVEL=${runlevel%% *}" + "RUNLEVEL=${runlevel##* }" + "CONSOLE=${CONSOLE:-/dev/console}" + "TERM=$TERM") for i; do - [[ -x "/etc/rc.d/$i" ]] && cd / && eval /usr/bin/env -i $ENV "/etc/rc.d/$i" "$action" + [[ -x "/etc/rc.d/$i" ]] && cd / && /usr/bin/env -i "${ENV[@]}" "/etc/rc.d/$i" "$action" (( ret += !! $? )) # clamp exit value to 0/1 done esac -- 1.7.5.2
On Fri, May 27, 2011 at 3:09 PM, Dave Reisner <d@falconindy.com> wrote:
Signed-off-by: Dave Reisner <d@falconindy.com> --- Sorry to sneak this in -- I should have noticed it earlier. This is simply a continuation of my crusade against eval, which would happily go to town with word splitting.
As this conflicts with Eric's patch, one of us will need to refactor slightly.
dave
rc.d | 12 ++++++------ 1 files changed, 6 insertions(+), 6 deletions(-)
diff --git a/rc.d b/rc.d index 55871b1..af29574 100755 --- a/rc.d +++ b/rc.d @@ -46,13 +46,13 @@ case $1 in shift # set same environment variables as init runlevel=$(/sbin/runlevel) - ENV="PATH='/bin:/usr/bin:/sbin:/usr/sbin'" - ENV+=" PREVLEVEL='${runlevel:0:1}'" - ENV+=" RUNLEVEL='${runlevel:2:1}'" - ENV+=" CONSOLE='${CONSOLE:-/dev/console}'" - ENV+=" TERM='${TERM}'" + ENV=("PATH=/bin:/usr/bin:/sbin:/usr/sbin" + "PREVLEVEL=${runlevel%% *}" + "RUNLEVEL=${runlevel##* }" + "CONSOLE=${CONSOLE:-/dev/console}" + "TERM=$TERM") for i; do - [[ -x "/etc/rc.d/$i" ]] && cd / && eval /usr/bin/env -i $ENV "/etc/rc.d/$i" "$action" + [[ -x "/etc/rc.d/$i" ]] && cd / && /usr/bin/env -i "${ENV[@]}" "/etc/rc.d/$i" "$action" (( ret += !! $? )) # clamp exit value to 0/1 done esac
looks good ! Thanks. -- Sébastien Luttringer www.seblu.net
participants (2)
-
Dave Reisner
-
Seblu