gpg: Add new variables to the import and export filters.
authorWerner Koch <wk@gnupg.org>
Fri, 3 Mar 2017 08:22:40 +0000 (09:22 +0100)
committerWerner Koch <wk@gnupg.org>
Fri, 3 Mar 2017 08:22:40 +0000 (09:22 +0100)
* g10/import.c (impex_filter_getval): Add new variables "expired",
"revoked", and "disabled".

Signed-off-by: Werner Koch <wk@gnupg.org>
doc/gpg.texi
g10/export.c
g10/import.c

index 20a2d12..55482b1 100644 (file)
@@ -2359,14 +2359,25 @@ The available properties are:
   @item primary
   Boolean indicating whether the user id is the primary one.  (keep-uid)
 
+  @item expired
+  Boolean indicating whether a user id (keep-uid), a key (drop-subkey), or a
+  signature (drop-sig) expired.
+
+  @item revoked
+  Boolean indicating whether a user id (keep-uid) or a key (drop-subkey) has
+  been revoked.
+
+  @item disabled
+  Boolean indicating whether a primary key is disabled. (not used)
+
   @item secret
   Boolean indicating whether a key or subkey is a secret one.
-  drop-subkey)
+  (drop-subkey)
 
   @item sig_created
   @itemx sig_created_d
   The first is the timestamp a signature packet was created.  The
-  second is the same but given as an ISO string,
+  second is the same but given as an ISO date string,
   e.g. "2016-08-17". (drop-sig)
 
   @item sig_algo
index 4138261..323bf17 100644 (file)
@@ -1377,7 +1377,7 @@ apply_drop_subkey_filter (kbnode_t keyblock, recsel_expr_t selector)
         {
           if (recsel_select (selector, impex_filter_getval, node))
             {
-              log_debug ("drop-subkey: deleting a key\n");
+              /*log_debug ("drop-subkey: deleting a key\n");*/
               /* The subkey packet and all following packets up to the
                * next subkey.  */
               delete_kbnode (node);
index 45ec07a..9fd16c8 100644 (file)
@@ -1164,7 +1164,7 @@ check_prefs (ctrl_t ctrl, kbnode_t keyblock)
 }
 
 
-/* Helper for apply_*_filter in im,port.c and export.c.  */
+/* Helper for apply_*_filter in import.c and export.c.  */
 const char *
 impex_filter_getval (void *cookie, const char *propname)
 {
@@ -1175,19 +1175,30 @@ impex_filter_getval (void *cookie, const char *propname)
 
   if (node->pkt->pkttype == PKT_USER_ID)
     {
+      PKT_user_id *uid = node->pkt->pkt.user_id;
+
       if (!strcmp (propname, "uid"))
-        result = node->pkt->pkt.user_id->name;
+        result = uid->name;
       else if (!strcmp (propname, "mbox"))
         {
-          if (!node->pkt->pkt.user_id->mbox)
+          if (!uid->mbox)
             {
-              node->pkt->pkt.user_id->mbox
-                = mailbox_from_userid (node->pkt->pkt.user_id->name);
+              uid->mbox = mailbox_from_userid (uid->name);
             }
-          result = node->pkt->pkt.user_id->mbox;
+          result = uid->mbox;
         }
       else if (!strcmp (propname, "primary"))
-        result = node->pkt->pkt.user_id->is_primary? "1":"0";
+        {
+          result = uid->is_primary? "1":"0";
+        }
+      else if (!strcmp (propname, "expired"))
+        {
+          result = uid->is_expired? "1":"0";
+        }
+      else if (!strcmp (propname, "revoked"))
+        {
+          result = uid->is_revoked? "1":"0";
+        }
       else
         result = NULL;
     }
@@ -1215,6 +1226,10 @@ impex_filter_getval (void *cookie, const char *propname)
           snprintf (numbuf, sizeof numbuf, "%d", sig->digest_algo);
           result = numbuf;
         }
+      else if (!strcmp (propname, "expired"))
+        {
+          result = sig->flags.expired? "1":"0";
+        }
       else
         result = NULL;
     }
@@ -1244,6 +1259,18 @@ impex_filter_getval (void *cookie, const char *propname)
         {
           result = datestr_from_pk (pk);
         }
+      else if (!strcmp (propname, "expired"))
+        {
+          result = pk->has_expired? "1":"0";
+        }
+      else if (!strcmp (propname, "revoked"))
+        {
+          result = pk->flags.revoked? "1":"0";
+        }
+      else if (!strcmp (propname, "disabled"))
+        {
+          result = pk_is_disabled (pk)? "1":"0";
+        }
       else
         result = NULL;
     }