stupid big jimmy. fix bug in previous bug fix.
[monkeysphere.git] / src / common
index bb988f785e983ad5bcb90492f3390b618ce2c737..9d7deb7c6251c7ab989f53b49e29fc6e69b6971d 100644 (file)
@@ -83,6 +83,28 @@ gpg_escape() {
     sed 's/:/\\x3a/g'
 }
 
+# prompt for GPG-formatted expiration, and emit result on stdout
+get_gpg_expiration() {
+    local keyExpire=
+
+    cat >&2 <<EOF
+Please specify how long the key should be valid.
+         0 = key does not expire
+      <n>  = key expires in n days
+      <n>w = key expires in n weeks
+      <n>m = key expires in n months
+      <n>y = key expires in n years
+EOF
+    while [ -z "$keyExpire" ] ; do
+       read -p "Key is valid for? (0) " keyExpire
+       if ! test_gpg_expire ${keyExpire:=0} ; then
+           echo "invalid value" >&2
+           unset keyExpire
+       fi
+    done
+    echo "$keyExpire"
+}
+
 # remove all lines with specified string from specified file
 remove_line() {
     local file
@@ -393,29 +415,24 @@ process_user_id() {
                ;;
            'uid') # user ids
                if [ "$lastKey" != pub ] ; then
-                   log " - got a user ID after a sub key!  user IDs should only follow primary keys!"
-                   continue
-               fi
-               # don't bother with a uid if there is no valid or reasonable primary key.
-               if [ "$keyOK" != true ] ; then
+                   log " - got a user ID after a sub key?!  user IDs should only follow primary keys!"
                    continue
                fi
                # if an acceptable user ID was already found, skip
-               if [ "$uidOK" ] ; then
+               if [ "$uidOK" = 'true' ] ; then
                    continue
                fi
-               # if the user ID does not match, skip
-               if [ "$(echo "$uidfpr" | gpg_unescape)" != "$userID" ] ; then
-                   continue
-               fi
-               # if the user ID validity is not ok, skip
-               if [ "$validity" != 'u' -a "$validity" != 'f' ] ; then
+               # if the user ID does matches...
+               if [ "$(echo "$uidfpr" | gpg_unescape)" = "$userID" ] ; then
+                   # and the user ID validity is ok
+                   if [ "$validity" = 'u' -o "$validity" = 'f' ] ; then
+                       # mark user ID acceptable
+                       uidOK=true
+                   fi
+               else
                    continue
                fi
 
-               # mark user ID acceptable
-               uidOK=true
-
                # output a line for the primary key
                # 0 = ok, 1 = bad
                if [ "$keyOK" -a "$uidOK" -a "$lastKeyOK" ] ; then