flag.sh - rohrpost - A commandline mail client to change the world as we see it.
(HTM) git clone git://r-36.net/rohrpost
(DIR) Log
(DIR) Files
(DIR) Refs
(DIR) README
(DIR) LICENSE
---
flag.sh (970B)
---
1 #!/bin/bash
2
3 reset="$(tput sgr0)"
4 titleformat="$(tput bold)"
5 idformat="$(tput bold)"
6 flagformat="$(tput setaf 3)"
7
8 flen=10
9 cols=$(tput cols)
10 scols=$(($cols - $flen))
11
12 first=1
13
14 while read -r line;
15 do
16 id=$(echo -n "$line" | cut -f 1 | head -c 8)
17 flags=$(echo -n "$line" | cut -f 2)
18
19 if [ $first -eq 1 ];
20 then
21 printf "${titleformat}%8s %s\n" "$id" "$flags"
22 first=0
23 else
24 printf "${idformat}%8s${reset} " "$id"
25 slen=$(utf8expr length "$flags")
26 if [ $scols -lt 1 ] || [ $scols -gt $slen ];
27 then
28 printf "${flagformat}%s${reset}\n" "$flags"
29 else
30 pos=1
31 while [ $slen -gt 0 ];
32 do
33 if [ $slen -gt $scols ];
34 then
35 sslen=$scols
36 else
37 sslen=$slen
38 fi
39
40 sstr=$(utf8expr substr "$flags" $pos \
41 $sslen | sed 's,^[[:space:]]*,,g')
42 if [ $pos -gt 1 ];
43 then
44 printf "%${flen}s" " "
45 fi
46 printf "${flagformat}%s${reset}\n" "$sstr"
47
48 pos=$(($pos + $sslen))
49 slen=$(($slen - $sslen))
50 done
51 fi
52 fi
53 done
54