rohrpost

A commandline mail client to change the world as we see it.
git clone git://r-36.net/rohrpost
Log | Files | Refs | README | LICENSE

scan.sh (1454B)


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