etc-update: support PAGER env var for bug #384663
authorZac Medico <zmedico@gentoo.org>
Wed, 28 Sep 2011 17:47:08 +0000 (10:47 -0700)
committerZac Medico <zmedico@gentoo.org>
Wed, 28 Sep 2011 17:47:08 +0000 (10:47 -0700)
bin/etc-update
cnf/etc-update.conf

index 42518adc64d7b15dbb8b49c48f0d08c06052583e..2af04cc4ca0d6e9f169b5d86ef8bfb1c42c58417 100755 (executable)
@@ -33,6 +33,12 @@ get_config() {
                "${PORTAGE_CONFIGROOT}"etc/etc-update.conf)
 }
 
+cmd_var_is_valid() {
+       # return true if the first whitespace-separated token contained
+       # in "${1}" is an executable file, false otherwise
+       [[ -x $(type -P ${1%%[[:space:]]*}) ]]
+}
+
 diff_command() {
        local cmd=${diff_command//%file1/$1}
        ${cmd//%file2/$2}
@@ -566,7 +572,10 @@ using_editor=$(get_config using_editor)
 merge_command=$(get_config merge_command)
 declare -i mode=$(get_config mode)
 [[ -z ${mode} ]] && mode=0
-[[ -z ${pager} ]] && pager="cat"
+if ! cmd_var_is_valid "${pager}" ; then
+       pager=${PAGER}
+       cmd_var_is_valid "${pager}" || pager=cat
+fi
 
 if [ "${using_editor}" == 0 ]; then
        # Sanity check to make sure diff exists and works
index cea21739e12abf1cfaee52f41f9c7ec59cf8c5dd..970986251111912df935cf5e734126f6d058d9e3 100644 (file)
@@ -21,9 +21,9 @@ mv_opts="-i"
 # arguments used whenever cp is called
 cp_opts="-i"
 
-# pager for use with diff commands
-pager="less"
-#pager=""
+# set the pager for use with diff commands (this will
+# cause the PAGER environment variable to be ignored)
+#pager="less"
 
 # For emacs-users (see NOTE_2)
 # diff_command="eval emacs -nw --eval=\'\(ediff\ \"%file1\"\ \"%file2\"\)\'"
@@ -47,9 +47,9 @@ merge_command="sdiff -s -o %merged %orig %new"
 # pager:
 #
 # Examples of pager usage:
-#      pager=""                # don't use a pager
-#      pager="less -E" # less
-#      pager="more"    # more
+#      pager="cat"     # don't use a pager
+#      pager="less -E" # less
+#      pager="more"    # more
 #
 #
 # diff_command: