X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~mdw/git/distorted-keys/blobdiff_plain/d8c2ee905e57705719d40cdf23e096119902e286..f00b260e7e130019fff1ad66196496cbfdbfd5c7:/cryptop.list diff --git a/cryptop.list b/cryptop.list index 538b623..96f9a65 100755 --- a/cryptop.list +++ b/cryptop.list @@ -85,7 +85,7 @@ col_label () { label=$1 case $all,$label in - nil,$USERV_USER*) plabel=${label#*/} ;; + nil,$USERV_USER/*) plabel=${label#*/} ;; t,*) plabel=${label%%/*}:${label#*/} ;; esac echo "$plabel" @@ -131,14 +131,24 @@ while getopts "HaC:u:" opt; do 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. @@ -159,11 +169,11 @@ while :; do 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 @@ -182,13 +192,6 @@ while :; do ## 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 $dir -type f -name meta | sort) - ## Work through the keys we found. while :; do @@ -209,8 +212,8 @@ 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. @@ -234,12 +237,12 @@ while :; do ## 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"