diff options
author | David Shaw <[email protected]> | 2005-11-18 04:25:07 +0000 |
---|---|---|
committer | David Shaw <[email protected]> | 2005-11-18 04:25:07 +0000 |
commit | eac8dbc9b7428d93413ac08aabccdc7b20fb1e2f (patch) | |
tree | 8c1a355aac69f0758ae7ce7fbb2c137ed98cd9fe /g10/keyedit.c | |
parent | * armor.c (parse_header_line): A fussy bit of 2440: header lines are (diff) | |
download | gnupg-eac8dbc9b7428d93413ac08aabccdc7b20fb1e2f.tar.gz gnupg-eac8dbc9b7428d93413ac08aabccdc7b20fb1e2f.zip |
* keyedit.c (keyedit_menu, menu_clean): Simplify clean options to just
"clean", and add "minimize".
* import.c (parse_import_options): Make help text match the export
versions of the options.
* options.h, export.c (parse_export_options, do_export_stream): Reduce
clean options to two: clean and minimize.
* trustdb.h, trustdb.c (clean_one_uid): New function that joins uid
and sig cleaning into one for a simple API outside trustdb.
Diffstat (limited to '')
-rw-r--r-- | g10/keyedit.c | 100 |
1 files changed, 29 insertions, 71 deletions
diff --git a/g10/keyedit.c b/g10/keyedit.c index b33105210..174fef90c 100644 --- a/g10/keyedit.c +++ b/g10/keyedit.c @@ -57,8 +57,7 @@ static int menu_adduid( KBNODE keyblock, KBNODE sec_keyblock, int photo, const char *photo_name ); static void menu_deluid( KBNODE pub_keyblock, KBNODE sec_keyblock ); static int menu_delsig( KBNODE pub_keyblock ); -static int menu_clean_sigs_from_uids(KBNODE keyblock,int self_only); -static int menu_clean_uids_from_key(KBNODE keyblock); +static int menu_clean(KBNODE keyblock,int self_only); static void menu_delkey( KBNODE pub_keyblock, KBNODE sec_keyblock ); static int menu_addrevoker( KBNODE pub_keyblock, KBNODE sec_keyblock, int sensitive ); @@ -1442,13 +1441,12 @@ static struct { "disable" , cmdDISABLEKEY, KEYEDIT_NOT_SK, N_("disable key") }, { "showphoto",cmdSHOWPHOTO , 0, N_("show selected photo IDs") }, { "clean", cmdCLEAN , KEYEDIT_NOT_SK, - N_("clean unusable parts from key") }, + N_("compact unusable user IDs and remove unusable signatures from key")}, { "minimize", cmdMINIMIZE , KEYEDIT_NOT_SK, - N_("clean unusable parts from key and remove all signatures") }, + N_("compact unusable user IDs and remove all signatures from key") }, { NULL, cmdNONE, 0, NULL } }; - #ifdef HAVE_LIBREADLINE /* These two functions are used by readline for command completion. */ @@ -2175,32 +2173,11 @@ keyedit_menu( const char *username, STRLIST locusr, break; case cmdCLEAN: - { - if(*arg_string) - { - if(ascii_strcasecmp(arg_string,"sigs")==0 - || ascii_strcasecmp(arg_string,"signatures")==0 - || ascii_strcasecmp(arg_string,"certs")==0 - || ascii_strcasecmp(arg_string,"certificates")==0) - modified=menu_clean_sigs_from_uids(keyblock,0); - else if(ascii_strcasecmp(arg_string,"uids")==0) - redisplay=modified=menu_clean_uids_from_key(keyblock); - else - tty_printf("Unable to clean `%s'\n",arg_string); - } - else - { - modified=menu_clean_sigs_from_uids(keyblock,0); - modified+=menu_clean_uids_from_key(keyblock); - redisplay=modified; - } - } + redisplay=modified=menu_clean(keyblock,0); break; case cmdMINIMIZE: - modified=menu_clean_sigs_from_uids(keyblock,1); - modified+=menu_clean_uids_from_key(keyblock); - redisplay=modified; + redisplay=modified=menu_clean(keyblock,1); break; case cmdQUIT: @@ -3192,73 +3169,54 @@ menu_delsig( KBNODE pub_keyblock ) } static int -menu_clean_sigs_from_uids(KBNODE keyblock,int self_only) +menu_clean(KBNODE keyblock,int self_only) { KBNODE uidnode; - int modified=0; - int select_all=!count_selected_uids(keyblock); + int modified=0,select_all=!count_selected_uids(keyblock); - for(uidnode=keyblock->next;uidnode;uidnode=uidnode->next) + for(uidnode=keyblock->next; + uidnode && uidnode->pkt->pkttype!=PKT_PUBLIC_SUBKEY; + uidnode=uidnode->next) { if(uidnode->pkt->pkttype==PKT_USER_ID && (uidnode->flag&NODFLG_SELUID || select_all)) { - int deleted; + int uids=0,sigs=0; char *user=utf8_to_native(uidnode->pkt->pkt.user_id->name, uidnode->pkt->pkt.user_id->len, 0); - deleted=clean_sigs_from_uid(keyblock,uidnode,opt.verbose,self_only); - if(deleted) - { - tty_printf(deleted==1? - "User ID \"%s\": %d signature removed.\n": - "User ID \"%s\": %d signatures removed.\n", - user,deleted); - modified=1; - } - else - tty_printf(_("User ID \"%s\": already clean.\n"),user); - - xfree(user); - } - } - - return modified; -} - -static int -menu_clean_uids_from_key(KBNODE keyblock) -{ - int modified=clean_uids_from_key(keyblock,0); - if(modified) - { - KBNODE node; - - for(node=keyblock->next;node;node=node->next) - { - if(node->pkt->pkttype==PKT_USER_ID - && node->pkt->pkt.user_id->flags.compacted) + clean_one_uid(keyblock,uidnode,opt.verbose,self_only,&uids,&sigs); + if(uids) { const char *reason; - char *user=utf8_to_native(node->pkt->pkt.user_id->name, - node->pkt->pkt.user_id->len,0); - if(node->pkt->pkt.user_id->is_revoked) + if(uidnode->pkt->pkt.user_id->is_revoked) reason=_("revoked"); - else if(node->pkt->pkt.user_id->is_expired) + else if(uidnode->pkt->pkt.user_id->is_expired) reason=_("expired"); else reason=_("invalid"); tty_printf("User ID \"%s\" compacted: %s\n",user,reason); - xfree(user); + modified=1; + } + else if(sigs) + { + tty_printf(sigs==1? + "User ID \"%s\": %d signature removed\n": + "User ID \"%s\": %d signatures removed\n", + user,sigs); + + modified=1; } + else + tty_printf(_("User ID \"%s\": already clean\n"),user); + + xfree(user); } } - else - tty_printf("No user IDs are compactable.\n"); return modified; } |