news.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
---
news.sh (1279B)
---
1 #!/bin/bash
2
3 reset="$(tput sgr0)"
4 titleformat="$(tput bold)"
5 idformat="$(tput bold)"
6 dateformat="$(tput setaf 3)"
7 subjectformat="$reset"
8
9 first=1
10
11 cols=$(tput cols)
12
13 while read -r line;
14 do
15 id=$(echo -n "$line" | cut -f 1 | sed 's,^rp:,rpo:,')
16 date=$(echo -n "$line" | cut -f 2 | head -c 10)
17 subject=$(echo -n "$line" | cut -f 4)
18
19 if [ $first -eq 1 ];
20 then
21 #printf "${titleformat}%8s %10s %s\n" "$id" "$date" \
22 # "$subject"
23 first=0
24 else
25 ostr="$(printf "${dateformat}%10s${reset}" "$date")"
26 flen=$(($(utf8expr length "$date") + 2))
27 ostr="${ostr} $(printf "${idformat}%s${reset}" "$id")"
28 flen=$(($flen + $(utf8expr length "$id") + 2))
29 scols=$(($cols - $flen))
30
31 printf "%s " "${ostr}"
32 slen=$(utf8expr length "$subject")
33 if [ $scols -lt 1 ] || [ $scols -gt $slen ];
34 then
35 printf "${subjectformat}%s${reset}\n" "$subject"
36 else
37 pos=1
38 while [ $slen -gt 0 ];
39 do
40 if [ $slen -gt $scols ];
41 then
42 sslen=$scols
43 else
44 sslen=$slen
45 fi
46
47 sstr=$(utf8expr substr "$subject" $pos \
48 $sslen | sed 's,^[[:space:]]*,,g')
49 if [ $pos -gt 1 ];
50 then
51 printf "%${flen}s" " "
52 fi
53 printf "${subjectformat}%s${reset}\n" \
54 "$sstr"
55
56 pos=$(($pos + $sslen))
57 slen=$(($slen - $sslen))
58 done
59 fi
60 fi
61 done
62