refile: Never change the current folder
[mmh] / uip / mhsign.sh
index e6f54b3..038052b 100755 (executable)
@@ -18,12 +18,19 @@ function=sign
 
 # find out the signing key
 userid="$MMHPGPKEY"
-if [ "x$userid" = "x" ] ; then
+if [ -z "$userid" ] ; then
        userid="`mhparam pgpkey`"
 fi
-userid="`gpg --list-secret-keys --with-colons 2>/dev/null |
-               sed -n '/^sec/{p;q;}' | cut -d: -f5`"
-if [ "x$userid" = x ] ; then
+if [ -z "$userid" ] ; then
+       userid="`gpg --list-secret-keys --with-colons 2>/dev/null |
+                       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
        exit 1
 fi
@@ -89,7 +96,7 @@ lookupkeyring() {
        if [ $? != 0 ] ; then
                return 1
        fi
-       echo "$key" | sed -n '/^pub/{p;q;}' | cut -d: -f5
+       echo "$key" | sed -n '/^pub:[^idre]:/{p;q;}' | cut -d: -f5
        return 0
 }