From cdc8f6e887d9ab8944e3ae89dd18bf55edf080c4 Mon Sep 17 00:00:00 2001 From: Joe MacDonald Date: Fri, 20 Feb 2015 17:00:19 -0500 Subject: [PATCH] fixfiles: de-bashify Most of the bashisms in fixfiles are pretty easy to work around, the only complex one is the use of PIPESTATUS. The common solution to this is to use fifos but considering the action this script is performing, that's not necessarily the best option here. Introducing a second invocation of rpm is minimal overhead on an operation that should happen very infrequently, so we'll try that instead. Upstream-Status: Inappropriate [embedded specific] Signed-off-by: Joe MacDonald Signed-off-by: Wenzong Fan --- scripts/fixfiles | 23 ++++++++++++++--------- 1 file changed, 14 insertions(+), 9 deletions(-) diff --git a/scripts/fixfiles b/scripts/fixfiles index c72ca0e..143cc2e 100755 --- a/scripts/fixfiles +++ b/scripts/fixfiles @@ -1,4 +1,4 @@ -#!/bin/bash +#!/bin/sh # fixfiles # # Script to restore labels on a SELinux box @@ -27,7 +27,7 @@ set -o nounset # number if the current kernel version is greater than 2.6.30, a negative # number if the current is less than 2.6.30 and 0 if they are the same. # -function useseclabel { +useseclabel () { VER=`uname -r` SUP=2.6.30 expr '(' "$VER" : '\([^.]*\)' ')' '-' '(' "$SUP" : '\([^.]*\)' ')' '|' \ @@ -93,9 +93,10 @@ exclude_dirs_from_relabelling() { # skip not absolute path # skip not directory [ -z "${i}" ] && continue - [[ "${i}" =~ ^[[:blank:]]*# ]] && continue - [[ ! "${i}" =~ ^/.* ]] && continue - [[ ! -d "${i}" ]] && continue + echo "${i}" | egrep -q '^[[:space:]]*#' && continue + echo "${i}" | egrep -v '^/.*' && continue + [ ! -d "${i}" ] && continue + exclude_from_relabelling="$exclude_from_relabelling -e $i" done < /etc/selinux/fixfiles_exclude_dirs fi @@ -140,7 +141,7 @@ fi # Log directories excluded from relabelling by configuration file # LogExcluded() { -for i in ${EXCLUDEDIRS//-e / }; do +for i in `echo ${EXCLUDEDIRS} | sed -e 's/-e / /g'`; do echo "skipping the directory $i" done } @@ -203,8 +204,12 @@ fi } rpmlist() { -rpm -q --qf '[%{FILESTATES} %{FILENAMES}\n]' "$1" | grep '^0 ' | cut -f2- -d ' ' -[ ${PIPESTATUS[0]} != 0 ] && echo "$1 not found" >/dev/stderr + if rpm -q --qf '[%{FILESTATES} %{FILENAMES}\n]' "$1" >/dev/null + then + rpm -q --qf '[%{FILESTATES} %{FILENAMES}\n]' "$1" | grep '^0 ' | cut -f2- -d ' ' + else + echo "$1 not found" >/dev/stderr + fi } # @@ -295,7 +300,7 @@ relabel() { exit 1 fi - if [ $fullFlag == 1 ]; then + if [ $fullFlag = 1 ]; then fullrelabel return fi -- 2.25.1