[prev in list] [next in list] [prev in thread] [next in thread] 

List:       rsbac
Subject:    [rsbac] Re: [diff] rsbac_menu terminal size detection fix
From:       Guillaume Destuynder <kang () rsbac ! org>
Date:       2005-02-23 18:44:42
Message-ID: 421CCF1A.7040808 () rsbac ! org
[Download RAW message or body]

>
>
>Hello,
>
>Attached is my quick fix for the terminal size detection issue, please
>test if it works fine for you. Thanks and take care!
>
>===
>
>--- old/rsbac_menu      2005-02-22 15:58:54.000000000 +0200
>+++ new/rsbac_menu      2005-02-22 15:58:54.000000000 +0200
>@@ -67,14 +67,18 @@
>   exit
> fi
> 
>-# test for LINES and COLUMNS (should be exported e.g. in /etc/profile)
>-if test -z "$LINES" ; then LINES=25 ; fi
>-if test -z "$COLUMNS" ; then COLUMNS=80 ; fi
>-export LINES
>-export COLUMNS
>-declare -i BL=$LINES-4
>-declare -i BC=$COLUMNS-4
>-declare -i MAXLINES=$LINES-10
>+set_geometry () {
>+LINES=
>+COLUMNS=
>+BL=${1:-24}
>+BC=${2:-80}
>+[ $BL = 0 ] && BL=24
>+[ $BC = 0 ] && BC=80
>+BL=$((BL-4))
>+BC=$((BC-5))
>+MAXLINES=$BL-10
>+}
>+set_geometry `stty size 2>/dev/null`
> gl () {
>   if test $1 -gt $MAXLINES
>   then echo $MAXLINES
>
>===
>
>-- 
>Best regards,
> torc                          mailto:torc at iptel.by <http://rsbac.dyndns.org/mailman/listinfo/rsbac>
>

Sorry, the patch didn't work for me :(
LINES and COLUMNS are unset after I run rsbac_menu or simply if i copy 
and execute set_geometry() which breaks my terminal size detection. I do 
not know how/why it works for you.

Also, I wonder what is:  BL=${1:-24} and the next one for, I never saw 
the syntax, can you explain me ? :)

Anyway, I modified the patch this way:

--- old/rsbac_menu 2005-02-22 15:58:54.000000000 +0200
+++ new/rsbac_menu 2005-02-22 15:58:54.000000000 +0200
@@ -67,14 +67,18 @@
exit
fi

-# test for LINES and COLUMNS (should be exported e.g. in /etc/profile)
-if test -z "$LINES" ; then LINES=25 ; fi
-if test -z "$COLUMNS" ; then COLUMNS=80 ; fi
-export LINES
-export COLUMNS
-declare -i BL=$LINES-4
-declare -i BC=$COLUMNS-4
-declare -i MAXLINES=$LINES-10
+# Get real terminal size
+if [ -f $(which stty) ]; then
+ LINES=$(stty size|awk '{print $1}')
+ COLUMNS=$(stty size|awk '{print $2}')
+
+# Else set sane default values
+else
+ if [ -z "$LINES" ]; then LINES=25; fi
+ if [ -z "$COLUMNS" ]; then COLUMNS=80; fi
+fi
+export $LINES $COLUMNS
+
+BL=$(($LINES-4))
+BC=$(($COLUMNS-4))
+MAXLINES=$(($LINES-10))
+
gl () {
if test $1 -gt $MAXLINES
then echo $MAXLINES



It works perfectly for me :)

stty gets the terminal size for you and its exported. if you don't have stty sizes are default 25:80
declare -i is not needed with expression parsing as integer checking is already done

else that's it. some awk overhead ^^


Of course, every rsbac_*menu needs this
I think a small script with all the shared code for every script would be nice.
I will try to find time to look into it if my bash doesn't looks too bad :)

kang

_______________________________________________
rsbac mailing list
rsbac@rsbac.org
http://www.rsbac.org/mailman/listinfo/rsbac
[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic