Fix mhsign for gpg2: Expiry date format
[mmh] / uip / mhsign.sh
index 038052b..39a3f69 100755 (executable)
@@ -9,7 +9,7 @@
 #              will be removed and any "From " line will be indented for
 #              best compatibility. Enforced for multipart messages.
 
-usage="Usage: mhsign [-encrypt] [-mime] file"
+usage="Usage: mhsign [-encrypt] [-mime] [-Version] [-help] file"
 
 # defaults
 usemime=n
@@ -22,10 +22,11 @@ if [ -z "$userid" ] ; then
        userid="`mhparam pgpkey`"
 fi
 if [ -z "$userid" ] ; then
-       userid="`gpg --list-secret-keys --with-colons 2>/dev/null |
+       userid="`gpg --list-secret-keys --with-colons --fixed-list-mode \
+                               2>/dev/null |
                        grep '^sec' | sort -t: -k3,3nr -k 6,6nr |
                        awk -F: '
-                               $7=="" || $7 > "'"\`date +%Y-%m-%d\`"'" {
+                               $7=="" || $7 > "'"\`date +%s\`"'" {
                                        print $5; exit;
                                }
                        '`"
@@ -108,8 +109,13 @@ lookupkeys() {
                echo "Encryption is not supported for BCCs" >&2
                return 1
        fi
-               
-       for i in `whom -ali -tocc -nobcc "$1"` ; do
+
+       # extract the actual address
+       format='%<{error}%{error}: %{text}%|%(addr{text})%>'
+       addresses=`whom -ali -tocc -nobcc "$1" |sed 's_$_,_'`
+       addresses=`%libdir%/ap -form "=$format" "$addresses"`
+
+       for i in $addresses ; do
                case "$i" in
                '|'*)   echo "Ignoring pipe address" >&2
                        continue ;;