[svn] GnuPG - r5148 - in trunk: doc g10

svn author wk cvs at cvs.gnupg.org
Fri Sep 4 13:52:04 CEST 2009


Author: wk
Date: 2009-09-04 13:52:03 +0200 (Fri, 04 Sep 2009)
New Revision: 5148

Modified:
   trunk/doc/gpg.texi
   trunk/g10/ChangeLog
   trunk/g10/keyedit.c
Log:
Allow uid sand key election using a '*'.


Modified: trunk/g10/ChangeLog
===================================================================
--- trunk/g10/ChangeLog	2009-09-03 20:51:55 UTC (rev 5147)
+++ trunk/g10/ChangeLog	2009-09-04 11:52:03 UTC (rev 5148)
@@ -1,3 +1,9 @@
+2009-09-04  Werner Koch  <wk at g10code.com>
+
+	* keyedit.c (menu_select_uid): Use IDX ==-1 t select all.
+	(menu_select_key): Ditto.
+	(keyedit_menu) <cmdSELKEY, cmdSELUID>: Allow '*' to select all.
+
 2009-09-03  Werner Koch  <wk at g10code.com>
 
 	* keyedit.c (menu_adduid): Pass keyblock to generate_user_id.

Modified: trunk/doc/gpg.texi
===================================================================
--- trunk/doc/gpg.texi	2009-09-03 20:51:55 UTC (rev 5147)
+++ trunk/doc/gpg.texi	2009-09-04 11:52:03 UTC (rev 5148)
@@ -592,12 +592,12 @@
 @item uid @code{n}
 @opindex keyedit:uid
 Toggle selection of user ID or photographic user ID with index @code{n}.
-Use 0 to deselect all.
+Use @code{*} to select all and @code{0} to deselect all.
 
 @item key @code{n}
 @opindex keyedit:key
 Toggle selection of subkey with index @code{n}.
-Use 0 to deselect all.
+Use @code{*} to select all and @code{0} to deselect all.
 
 @item sign
 @opindex keyedit:sign

Modified: trunk/g10/keyedit.c
===================================================================
--- trunk/g10/keyedit.c	2009-09-03 20:51:55 UTC (rev 5147)
+++ trunk/g10/keyedit.c	2009-09-04 11:52:03 UTC (rev 5148)
@@ -1,6 +1,6 @@
 /* keyedit.c - keyedit stuff
  * Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007,
- *               2008 Free Software Foundation, Inc.
+ *               2008, 2009 Free Software Foundation, Inc.
  *
  * This file is part of GnuPG.
  *
@@ -1743,12 +1743,22 @@
 	    if(strlen(arg_string)==NAMEHASH_LEN*2)
 	      redisplay=menu_select_uid_namehash(cur_keyblock,arg_string);
 	    else
-	      redisplay=menu_select_uid(cur_keyblock,arg_number);
+              {
+                if (*arg_string == '*' 
+                    && (!arg_string[1] || spacep (arg_string+1)))
+                  arg_number = -1; /* Select all. */
+                redisplay = menu_select_uid (cur_keyblock, arg_number);
+              }
 	    break;
 
 	  case cmdSELKEY:
-	    if( menu_select_key( cur_keyblock, arg_number ) )
+            {
+              if (*arg_string == '*' 
+                  && (!arg_string[1] || spacep (arg_string+1)))
+                arg_number = -1; /* Select all. */
+              if (menu_select_key( cur_keyblock, arg_number))
 		redisplay = 1;
+            }
 	    break;
 
 	  case cmdCHECK:
@@ -4437,51 +4447,62 @@
 }
 
 
-/****************
- * Select one user id or remove all selection if index is 0.
- * Returns: True if the selection changed;
+/*
+ * Select one user id or remove all selection if IDX is 0 or select
+ * all if IDX is -1.  Returns: True if the selection changed.
  */
 static int
-menu_select_uid( KBNODE keyblock, int idx )
+menu_select_uid (KBNODE keyblock, int idx)
 {
-    KBNODE node;
-    int i;
-
-    /* first check that the index is valid */
-    if( idx ) {
-	for( i=0, node = keyblock; node; node = node->next ) {
-	    if( node->pkt->pkttype == PKT_USER_ID ) {
-		if( ++i == idx )
-		    break;
-	    }
+  KBNODE node;
+  int i;
+  
+  if (idx == -1) /* Select all. */
+    { 
+      for (node = keyblock; node; node = node->next) 
+        if (node->pkt->pkttype == PKT_USER_ID)
+          node->flag |= NODFLG_SELUID;
+      return 1;
+    }
+  else if (idx) /* Toggle.  */
+    {
+      for (i=0, node = keyblock; node; node = node->next)
+        {
+          if (node->pkt->pkttype == PKT_USER_ID)
+            if (++i == idx)
+              break;
 	}
-	if( !node ) {
-	    tty_printf(_("No user ID with index %d\n"), idx );
-	    return 0;
+      if (!node)
+        {
+          tty_printf (_("No user ID with index %d\n"), idx );
+          return 0;
 	}
+
+      for (i=0, node = keyblock; node; node = node->next)
+        {
+          if (node->pkt->pkttype == PKT_USER_ID)
+            {
+              if (++i == idx)
+                {
+                  if ((node->flag & NODFLG_SELUID))
+                    node->flag &= ~NODFLG_SELUID;
+                  else
+                    node->flag |= NODFLG_SELUID;
+                }
+            }
+        }
     }
-    else { /* reset all */
-	for (node = keyblock; node; node = node->next) {
-	    if( node->pkt->pkttype == PKT_USER_ID )
-		node->flag &= ~NODFLG_SELUID;
-	}
-	return 1;
+  else /* Unselect all */
+    {
+      for (node = keyblock; node; node = node->next)
+        if (node->pkt->pkttype == PKT_USER_ID)
+          node->flag &= ~NODFLG_SELUID;
     }
-    /* and toggle the new index */
-    for( i=0, node = keyblock; node; node = node->next ) {
-	if( node->pkt->pkttype == PKT_USER_ID ) {
-	    if( ++i == idx ) {
-		if( (node->flag & NODFLG_SELUID) )
-		    node->flag &= ~NODFLG_SELUID;
-		else
-		    node->flag |= NODFLG_SELUID;
-	    }
-	}
-    }
-
-    return 1;
+  
+  return 1;
 }
 
+
 /* Search in the keyblock for a uid that matches namehash */
 static int
 menu_select_uid_namehash( KBNODE keyblock, const char *namehash )
@@ -4523,50 +4544,58 @@
 
 /****************
  * Select secondary keys
- * Returns: True if the selection changed;
+ * Returns: True if the selection changed.
  */
 static int
-menu_select_key( KBNODE keyblock, int idx )
+menu_select_key (KBNODE keyblock, int idx)
 {
-    KBNODE node;
-    int i;
+  KBNODE node;
+  int i;
 
-    /* first check that the index is valid */
-    if( idx ) {
-	for( i=0, node = keyblock; node; node = node->next ) {
-	    if( node->pkt->pkttype == PKT_PUBLIC_SUBKEY
-		|| node->pkt->pkttype == PKT_SECRET_SUBKEY ) {
-		if( ++i == idx )
-		    break;
-	    }
-	}
-	if( !node ) {
-	    tty_printf(_("No subkey with index %d\n"), idx );
-	    return 0;
-	}
+  if (idx == -1) /* Select all.  */
+    {
+      for (node = keyblock; node; node = node->next)
+        if (node->pkt->pkttype == PKT_PUBLIC_SUBKEY
+            || node->pkt->pkttype == PKT_SECRET_SUBKEY)
+          node->flag |= NODFLG_SELKEY;
     }
-    else { /* reset all */
-	for ( node = keyblock; node; node = node->next ) {
-	    if( node->pkt->pkttype == PKT_PUBLIC_SUBKEY
-		|| node->pkt->pkttype == PKT_SECRET_SUBKEY )
-		node->flag &= ~NODFLG_SELKEY;
-	}
-	return 1;
+  else if (idx) /* Toggle selection.  */
+    {
+      for (i=0, node = keyblock; node; node = node->next)
+        {
+          if (node->pkt->pkttype == PKT_PUBLIC_SUBKEY
+              || node->pkt->pkttype == PKT_SECRET_SUBKEY)
+            if (++i == idx)
+              break;
+        }
+      if (!node)
+        {
+          tty_printf (_("No subkey with index %d\n"), idx );
+          return 0;
+        }
+
+      for (i=0, node = keyblock; node; node = node->next)
+        {
+          if( node->pkt->pkttype == PKT_PUBLIC_SUBKEY
+              || node->pkt->pkttype == PKT_SECRET_SUBKEY )
+            if (++i == idx) 
+              {
+                if ((node->flag & NODFLG_SELKEY))
+                  node->flag &= ~NODFLG_SELKEY;
+                else
+                  node->flag |= NODFLG_SELKEY;
+              }
+        }
     }
-    /* and set the new index */
-    for( i=0, node = keyblock; node; node = node->next ) {
-	if( node->pkt->pkttype == PKT_PUBLIC_SUBKEY
-	    || node->pkt->pkttype == PKT_SECRET_SUBKEY ) {
-	    if( ++i == idx ) {
-		if( (node->flag & NODFLG_SELKEY) )
-		    node->flag &= ~NODFLG_SELKEY;
-		else
-		    node->flag |= NODFLG_SELKEY;
-	    }
-	}
+  else /* Unselect all. */
+    {
+      for (node = keyblock; node; node = node->next)
+        if (node->pkt->pkttype == PKT_PUBLIC_SUBKEY
+            || node->pkt->pkttype == PKT_SECRET_SUBKEY)
+          node->flag &= ~NODFLG_SELKEY;
     }
 
-    return 1;
+  return 1;
 }
 
 




More information about the Gnupg-commits mailing list