label=$1
case $all,$label in
- nil,$USERV_USER*) plabel=${label#*/} ;;
+ nil,"$user"/*) plabel=${label#*/} ;;
t,*) plabel=${label%%/*}:${label#*/} ;;
esac
echo "$plabel"
done
shift $(( $OPTIND - 1 ))
case $# in 0) set "*" ;; esac
+
+## Find where to look for keys, and check that there might be some.
+case $all in
+ t) dir=store ;;
+ nil) dir=store/$user ;;
+esac
+if [ ! -d $KEYS/$dir ]; then echo >&2 "$quis: no keys"; exit 1; fi
+
+## Find the metadata files. This tells us where the keys are.
cd $KEYS
+metas=$(find $dir -type f -name meta | sort)
+case "x$metas" in x) echo >&2 "$quis: no keys"; exit 1 ;; esac
## First pass: validate the column specifications. Translate all bare column
## 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
## passes, because it may contribute to width.)
doheader=$header
- ## Find the metadata files. This tells us where the keys are.
- case $all in
- t) dir=store ;;
- nil) dir=store/$user ;;
- esac
- metas=$(find store -type f -name meta)
-
## Work through the keys we found.
while :; do
## 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"