simplify whatnow.c/main() function
[mmh] / uip / mhsign.sh
index 66ab142..94c19f9 100755 (executable)
@@ -23,7 +23,12 @@ if [ -z "$userid" ] ; then
 fi
 if [ -z "$userid" ] ; then
        userid="`gpg --list-secret-keys --with-colons 2>/dev/null |
-                       sed -n '/^sec/{p;q;}' | cut -d: -f5`"
+                       grep '^sec' | sort -t: -k3,3nr -k 6,6nr |
+                       awk -F: '
+                               $7=="" || $7 > "'"\`date +%Y-%m-%d\`"'" {
+                                       print $5; exit;
+                               }
+                       '`"
 fi
 if [ -z "$userid" ] ; then
        echo "No secret key found" >&2
@@ -103,14 +108,17 @@ lookupkeys() {
                echo "Encryption is not supported for BCCs" >&2
                return 1
        fi
-               
-       for i in `whom -ali -tocc -nobcc "$1"` ; do
+
+       whom -ali -tocc -nobcc "$1" | while read i ; do
                case "$i" in
                '|'*)   echo "Ignoring pipe address" >&2
                        continue ;;
                *@*)    ;;
                *)      i="$i@`hostname -f`" ;;
                esac
+               # extract the actual address
+               format='%<{error}%{error}: %{text}%|%(addr{text})%>'
+               i=`%libdir%/ap -form "=$format" "$i"`
                if k=`lookupkeyfile "$i"` ; then
                        KL="$KL $k"
                elif k=`lookupkeyring "$i"` ; then