diff --git a/Shorewall-core/lib.cli b/Shorewall-core/lib.cli index 66a4c0af1..e8c6030a4 100644 --- a/Shorewall-core/lib.cli +++ b/Shorewall-core/lib.cli @@ -3728,6 +3728,19 @@ get_config() { g_loopback=$(find_loopback_interfaces) + if [ -n "$PAGER" -a -t 1 ]; then + case $PAGER in + /*) + g_pager="$PAGER" + [ -f "$g_pager" ] || fatal_error "PAGER=$PAGER does not exist" + ;; + *) + g_pager=$(mywhich pager 2> /dev/null) + [ -n "$g_pager" ] || fatal_error "PAGER=$PAGER does not exist" + ;; + esac + fi + lib=$(find_file lib.cli-user) [ -f $lib ] && . $lib @@ -4223,19 +4236,6 @@ shorewall_cli() { ;; esac - if [ -t 1 ]; then - # - # Output is to a terminal -- use a pager on commands with verbose output - # - if qt mywhich less; then - g_pager='| less' - elif qt mywhich more; then - g_pager='| more' - else - g_pager='' - fi - fi - COMMAND=$1 case "$COMMAND" in diff --git a/Shorewall/Perl/Shorewall/Config.pm b/Shorewall/Perl/Shorewall/Config.pm index cad326877..747e381d2 100644 --- a/Shorewall/Perl/Shorewall/Config.pm +++ b/Shorewall/Perl/Shorewall/Config.pm @@ -4912,6 +4912,7 @@ sub update_config_file( $ ) { update_default( 'USE_DEFAULT_RT', 'No' ); update_default( 'EXPORTMODULES', 'No' ); update_default( 'RESTART', 'reload' ); + update_default( 'PAGER', '' ); my $fn; diff --git a/Shorewall/Samples/Universal/shorewall.conf b/Shorewall/Samples/Universal/shorewall.conf index f32ff204d..216fcdeec 100644 --- a/Shorewall/Samples/Universal/shorewall.conf +++ b/Shorewall/Samples/Universal/shorewall.conf @@ -17,6 +17,12 @@ STARTUP_ENABLED=Yes VERBOSITY=1 +############################################################################### +# P A G E R +############################################################################### + +PAGER=more + ############################################################################### # L O G G I N G ############################################################################### diff --git a/Shorewall/Samples/one-interface/shorewall.conf b/Shorewall/Samples/one-interface/shorewall.conf index ac80e41a5..f6ae78852 100644 --- a/Shorewall/Samples/one-interface/shorewall.conf +++ b/Shorewall/Samples/one-interface/shorewall.conf @@ -28,6 +28,12 @@ STARTUP_ENABLED=No VERBOSITY=1 +############################################################################### +# P A G E R +############################################################################### + +PAGER=more + ############################################################################### # L O G G I N G ############################################################################### diff --git a/Shorewall/Samples/three-interfaces/shorewall.conf b/Shorewall/Samples/three-interfaces/shorewall.conf index 4d5492ef8..bc204a7d0 100644 --- a/Shorewall/Samples/three-interfaces/shorewall.conf +++ b/Shorewall/Samples/three-interfaces/shorewall.conf @@ -25,6 +25,12 @@ STARTUP_ENABLED=No VERBOSITY=1 +############################################################################### +# P A G E R +############################################################################### + +PAGER=more + ############################################################################### # L O G G I N G ############################################################################### diff --git a/Shorewall/Samples/two-interfaces/shorewall.conf b/Shorewall/Samples/two-interfaces/shorewall.conf index c06e403e9..1e930d405 100644 --- a/Shorewall/Samples/two-interfaces/shorewall.conf +++ b/Shorewall/Samples/two-interfaces/shorewall.conf @@ -28,6 +28,12 @@ STARTUP_ENABLED=No VERBOSITY=1 +############################################################################### +# P A G E R +############################################################################### + +PAGER=more + ############################################################################### # L O G G I N G ############################################################################### diff --git a/Shorewall/configfiles/shorewall.conf b/Shorewall/configfiles/shorewall.conf index 7d4386a2b..d38d741bb 100644 --- a/Shorewall/configfiles/shorewall.conf +++ b/Shorewall/configfiles/shorewall.conf @@ -17,6 +17,12 @@ STARTUP_ENABLED=No VERBOSITY=1 +############################################################################### +# P A G E R +############################################################################### + +PAGER=more + ############################################################################### # L O G G I N G ############################################################################### diff --git a/Shorewall/lib.cli-std b/Shorewall/lib.cli-std index ffafebc35..c7683f21f 100644 --- a/Shorewall/lib.cli-std +++ b/Shorewall/lib.cli-std @@ -316,6 +316,21 @@ get_config() { g_loopback=$(find_loopback_interfaces) + if [ -n "$PAGER" -a -t 1 ]; then + case $PAGER in + /*) + g_pager="$PAGER" + [ -f "$g_pager" ] || fatal_error "PAGER $PAGER does not exist" + ;; + *) + g_pager=$(mywhich pager 2> /dev/null) + [ -n "$g_pager" ] || fatal_error "PAGER $PAGER not found" + ;; + esac + + [ -x "$g_pager" ] || fatal_error "PAGER $g_pager is not executable" + fi + lib=$(find_file lib.cli-user) [ -f $lib ] && . $lib diff --git a/Shorewall/manpages/shorewall.conf.xml b/Shorewall/manpages/shorewall.conf.xml index eb375662d..31c318574 100644 --- a/Shorewall/manpages/shorewall.conf.xml +++ b/Shorewall/manpages/shorewall.conf.xml @@ -1952,6 +1952,19 @@ LOG:info:,bar net fw + + PAGER=pathname + + + Added in Shorewall 5.0.6. Specifies a path name of a pager + program like less or more. + When PAGER is given, the output of verbose status + commands and the dump command are piped through + the named program when the output file is a terminal. + + + PATH=pathname[ + + PAGER=pathname + + + Added in Shorewall 5.0.6. Specifies a path name of a pager + program like less or more. + When PAGER is given, the output of verbose status + commands and the dump command are piped through + the named program when the output file is a terminal. + + + PATH=pathname[