"Fossies" - the Fresh Open Source Software Archive 
Member "xterm-379/vttests/other-sgr.sh" (24 Apr 2022, 4206 Bytes) of package /linux/misc/xterm-379.tgz:
As a special service "Fossies" has tried to format the requested source page into HTML format using (guessed) Bash source code syntax highlighting (style:
standard) with prefixed line numbers and
code folding option.
Alternatively you can here
view or
download the uninterpreted source code file.
See also the last
Fossies "Diffs" side-by-side code changes report for "other-sgr.sh":
372_vs_373.
1 #!/bin/sh
2 # $XTermId: other-sgr.sh,v 1.9 2022/04/24 23:36:20 tom Exp $
3 # -----------------------------------------------------------------------------
4 # this file is part of xterm
5 #
6 # Copyright 2018-2021,2022 by Thomas E. Dickey
7 #
8 # All Rights Reserved
9 #
10 # Permission is hereby granted, free of charge, to any person obtaining a
11 # copy of this software and associated documentation files (the
12 # "Software"), to deal in the Software without restriction, including
13 # without limitation the rights to use, copy, modify, merge, publish,
14 # distribute, sublicense, and/or sell copies of the Software, and to
15 # permit persons to whom the Software is furnished to do so, subject to
16 # the following conditions:
17 #
18 # The above copyright notice and this permission notice shall be included
19 # in all copies or substantial portions of the Software.
20 #
21 # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
22 # OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
23 # MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
24 # IN NO EVENT SHALL THE ABOVE LISTED COPYRIGHT HOLDER(S) BE LIABLE FOR ANY
25 # CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
26 # TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
27 # SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
28 #
29 # Except as contained in this notice, the name(s) of the above copyright
30 # holders shall not be used in advertising or otherwise to promote the
31 # sale, use or other dealings in this Software without prior written
32 # authorization.
33 # -----------------------------------------------------------------------------
34 # Show non-VTxx SGRs combined with the conventional VT100/VT220 SGRs
35
36 ESC=""
37 CSI="${ESC}["
38 CMD='/bin/echo'
39 OPT='-n'
40 SUF=''
41 : "${TMPDIR=/tmp}"
42 TMP=`(mktemp "$TMPDIR/xterm.XXXXXXXX") 2>/dev/null` || TMP="$TMPDIR/xterm$$"
43 eval '$CMD $OPT >$TMP || echo fail >$TMP' 2>/dev/null
44 { test ! -f "$TMP" || test -s "$TMP"; } &&
45 for verb in "printf" "print" ; do
46 rm -f "$TMP"
47 eval '$verb "\c" >$TMP || echo fail >$TMP' 2>/dev/null
48 if test -f "$TMP" ; then
49 if test ! -s "$TMP" ; then
50 CMD="$verb"
51 OPT=
52 SUF='\c'
53 break
54 fi
55 fi
56 done
57 rm -f "$TMP"
58
59 trap '$CMD $OPT "${CSI}0m"; exit 1' 1 2 3 15
60 trap '$CMD $OPT "${CSI}0m"' 0
61
62 echo "${CSI}0m"
63 while true
64 do
65 # blink(5) and conceal(8) are omitted because they are distracting, but the
66 # case-statement handles those if the for-statement includes them.
67 for GRP in 0 1 4 7
68 do
69 case $GRP in
70 0) attr="normal ";;
71 1) attr="bold ";;
72 4) attr="under ";;
73 5) attr="blink ";;
74 7) attr="reverse ";;
75 8) attr="conceal ";;
76 esac
77 for NUL in "0" "21"
78 do
79 for ROW in $NUL "2" "3" "9" "2;3" "2;9" "3;9" "2;3;9"
80 do
81 case $ROW in
82 "0") rlabel="normal ";;
83 "21") rlabel="double ";;
84 "2") rlabel="dim ";;
85 "3") rlabel="italic ";;
86 "2;3") rlabel="di/it ";;
87 "9") rlabel="crossout";;
88 "2;9") rlabel="di/cr ";;
89 "3;9") rlabel="it/cr ";;
90 "2;3;9") rlabel="di/it/cr";;
91 *) rlabel="UNKNOWN ";;
92 esac
93 # video attributes from the first two columns intentionally
94 # "bleed through" to the other columns to help show some of
95 # the possible combinations of attributes.
96 $CMD $OPT "$GRP:${CSI}${GRP}m$attr${SUF}"
97 $CMD $OPT "${CSI}${ROW}m$rlabel${SUF}"
98 for COL in $NUL "3" "9" "2;3" "2;9" "3;9" "2;3;9"
99 do
100 END=""
101 case $COL in
102 "0") clabel="normal ";;
103 "21") clabel="double "; END="${CSI}24m";;
104 "2") clabel="dim "; END="${CSI}22m";;
105 "3") clabel="italic "; END="${CSI}23m";;
106 "2;3") clabel="di/it "; END="${CSI}22;23m";;
107 "9") clabel="crossout"; END="${CSI}29m";;
108 "2;9") clabel="di/cr "; END="${CSI}22;29m";;
109 "3;9") clabel="it/cr "; END="${CSI}23;29m";;
110 "2;3;9") clabel="di/it/cr"; END="${CSI}23;29m";;
111 *) clabel="UNKNOWN ";;
112 esac
113 # The remaining columns (try to) reset their respective
114 # attribute, to make the result somewhat readable.
115 $CMD $OPT "${CSI}${COL}m$clabel${END}${SUF}"
116 done
117 echo "${CSI}0m:$GRP"
118 done
119 done
120 [ -t 1 ] && sleep 3
121 done
122 [ -t 1 ] || break
123 done