## names into explicit `NAME+0' forms. Decide whether we need a width-
## measuring pass.
calcwd=nil
-cc=$cols
-wdcols=""
+cc=$cols cols=""
while :; do
## Pick off the next column name. If none are left, leave the loop.
case "$col" in
*[:=+]*)
wd=${col#*[:=+]}
- wdcols=${wdcols:+$wdcols,}$col
+ cols=${cols:+$cols,}$col
checknumber "column width" "$wd"
;;
*)
- wdcols=${wdcols:+$wdcols,}$col+0
+ cols=${cols:+$cols,}$col+0
;;
esac
## Now iterate over the columns. If we're calculating widths, use the
## ones we worked out last time, and clear the list so we can build a new
## one as we go.
- case $calcwd in t) cols=$wdcols ;; esac
- cc=$cols wdcols="" sep=""
+ cc=$cols sep=""
+ case $calcwd in t) cols="" ;; esac
while :; do
## Pick off the next column spec.
## idea of the column width. If we're printing, work out a format.
case $calcwd,$col in
t,*[:=]*)
- wdcols=${wdcols:+$wdcols,}$col
+ cols=${cols:+$cols,}$col
;;
t,*+*)
colwd=$(( $(echo "$value" | wc -c) - 1 ))
if [ $colwd -gt $wd ]; then wd=$colwd; fi
- wdcols=${wdcols:+$wdcols,}$name+$wd
+ cols=${cols:+$cols,}$name+$wd
;;
nil,*[=+]*)
fmt="%-${wd}.${wd}s"