diff -ur gnupg-1.3.6.orig/g10/keyedit.c gnupg-1.3.6/g10/keyedit.c --- gnupg-1.3.6.orig/g10/keyedit.c 2004-05-22 13:26:00.000000000 +0200 +++ gnupg-1.3.6/g10/keyedit.c 2004-06-12 15:32:51.219996456 +0200 @@ -136,48 +136,68 @@ break; } if( sigrc != '?' || print_without_key ) { - tty_printf("%s%c%c %c%c%c%c%c%c %s %s", - is_rev? "rev":"sig",sigrc, - (sig->sig_class-0x10>0 && - sig->sig_class-0x10<4)?'0'+sig->sig_class-0x10:' ', - sig->flags.exportable?' ':'L', - sig->flags.revocable?' ':'R', - sig->flags.policy_url?'P':' ', - sig->flags.notation?'N':' ', - sig->flags.expired?'X':' ', - (sig->trust_depth>9)?'T': - (sig->trust_depth>0)?'0'+sig->trust_depth:' ', - keystr(sig->keyid),datestr_from_sig(sig)); - if(opt.list_options&LIST_SHOW_SIG_EXPIRE) - tty_printf(" %s",expirestr_from_sig(sig)); - tty_printf(" "); - if( sigrc == '%' ) - tty_printf("[%s] ", g10_errstr(rc) ); - else if( sigrc == '?' ) - ; - else if( *is_selfsig ) { - tty_printf( is_rev? _("[revocation]") - : _("[self-signature]") ); - } - else - { + if (opt.with_colons) { size_t n; - char *p = get_user_id( sig->keyid, &n ); - tty_print_utf8_string2( p, n, opt.screen_columns-keystrlen()-26 ); - m_free(p); - } - tty_printf("\n"); - if(sig->flags.policy_url && (opt.list_options&LIST_SHOW_POLICY_URLS)) - show_policy_url(sig,3,0); + printf("%s:%c::%d:%08lX%08lX:%s:%s:::", + is_rev? "rev":"sig", sigrc, + sig->pubkey_algo, + (ulong)sig->keyid[0], (ulong)sig->keyid[1], + colon_datestr_from_sig(sig), + colon_expirestr_from_sig(sig)); + if( sigrc != '%' && sigrc != '?') { + char *p; + p = get_user_id( sig->keyid, &n); + print_string( stdout, p, n, ':' ); + m_free(p); + }; + printf(":%02x%c:\n", + sig->sig_class,sig->flags.exportable?'x':'l' + ); + } else { + tty_printf("%s%c%c %c%c%c%c%c%c %s %s", + is_rev? "rev":"sig",sigrc, + (sig->sig_class-0x10>0 && + sig->sig_class-0x10<4)?'0'+sig->sig_class-0x10:' ', + sig->flags.exportable?' ':'L', + sig->flags.revocable?' ':'R', + sig->flags.policy_url?'P':' ', + sig->flags.notation?'N':' ', + sig->flags.expired?'X':' ', + (sig->trust_depth>9)?'T': + (sig->trust_depth>0)?'0'+sig->trust_depth:' ', + keystr(sig->keyid),datestr_from_sig(sig)); + if(opt.list_options&LIST_SHOW_SIG_EXPIRE) + tty_printf(" %s",expirestr_from_sig(sig)); + tty_printf(" "); + if( sigrc == '%' ) + tty_printf("[%s] ", g10_errstr(rc) ); + else if( sigrc == '?' ) + ; + else if( *is_selfsig ) { + tty_printf( is_rev? _("[revocation]") + : _("[self-signature]") ); + } + else + { + size_t n; + char *p = get_user_id( sig->keyid, &n ); + tty_print_utf8_string2( p, n, opt.screen_columns-keystrlen()-26 ); + m_free(p); + } + tty_printf("\n"); + + if(sig->flags.policy_url && (opt.list_options&LIST_SHOW_POLICY_URLS)) + show_policy_url(sig,3,0); - if(sig->flags.notation && (opt.list_options&LIST_SHOW_NOTATIONS)) - show_notation(sig,3,0, - ((opt.list_options&LIST_SHOW_STD_NOTATIONS)?1:0)+ - ((opt.list_options&LIST_SHOW_USER_NOTATIONS)?2:0)); + if(sig->flags.notation && (opt.list_options&LIST_SHOW_NOTATIONS)) + show_notation(sig,3,0, + ((opt.list_options&LIST_SHOW_STD_NOTATIONS)?1:0)+ + ((opt.list_options&LIST_SHOW_USER_NOTATIONS)?2:0)); - if(sig->flags.pref_ks && (opt.list_options&LIST_SHOW_KEYSERVER_URLS)) - show_keyserver_url(sig,3,0); + if(sig->flags.pref_ks && (opt.list_options&LIST_SHOW_KEYSERVER_URLS)) + show_keyserver_url(sig,3,0); + } } return (sigrc == '!'); @@ -1812,7 +1832,7 @@ else { tty_printf(" "); for(i=0; prefs[i].type; i++ ) { - tty_printf( " %c%d", prefs[i].type == PREFTYPE_SYM ? 'S' : + tty_printf( " %c%d", prefs[i].type == PREFTYPE_SYM ? 'S' : prefs[i].type == PREFTYPE_HASH ? 'H' : prefs[i].type == PREFTYPE_ZIP ? 'Z':'?', prefs[i].value); @@ -1826,6 +1846,82 @@ } +/* This shows one uid, in an easy to parse format and does not translate utf8 */ +static void +show_one_uid_colon (KBNODE node, int index, PKT_public_key *primary, int ulti_hack, int pk_version) +{ + int j; + assert ( node->pkt->pkttype == PKT_USER_ID ); + PKT_user_id *uid = node->pkt->pkt.user_id; + + if(uid->attrib_data) + printf("uat:"); + else + printf("uid:"); + + if ( uid->is_revoked ) + printf("r::::::::"); + else if ( uid->is_expired ) + printf("e::::::::"); + else if ( opt.fast_list_mode || opt.no_expensive_trust_checks ) + printf("::::::::"); + else + { + int uid_validity; + + if( primary && !ulti_hack ) + uid_validity = get_validity_info( primary, uid ); + else + uid_validity = 'u'; + printf("%c::::::::",uid_validity); + } + + if(uid->attrib_data) + printf ("%u %lu",uid->numattribs,uid->attrib_len); + else + print_string (stdout, uid->name, uid->len, ':'); + + putchar (':'); + /* signature class */ + putchar (':'); + /* capabilities */ + putchar (':'); + /* preferences */ + if (pk_version>3 || uid->selfsigversion>3) + { + const prefitem_t *prefs = uid->prefs; + + for (j=0; prefs && prefs[j].type; j++) + { + if (j) + putchar (' '); + printf ("%c%d", prefs[j].type == PREFTYPE_SYM ? 'S' : + prefs[j].type == PREFTYPE_HASH ? 'H' : + prefs[j].type == PREFTYPE_ZIP ? 'Z':'?', + prefs[j].value); + } + if (uid->mdc_feature) + printf (",mdc"); + if (!uid->ks_modify) + printf (",no-ks-modify"); + } + putchar (':'); + /* flags */ + printf ("%d,", index); + if (uid->is_primary) + putchar ('p'); + if (uid->is_revoked) + putchar ('r'); + if (uid->is_expired) + putchar ('e'); + if ((node->flag & NODFLG_SELUID)) + putchar ('s'); + if ((node->flag & NODFLG_MARK_A)) + putchar ('m'); + putchar (':'); + putchar('\n'); +} + /* This is the version of show_key_with_all_names used when opt.with_colons is used. It prints all available data in a easy to parse format and does not translate utf8 */ @@ -1905,80 +2001,12 @@ /* the user ids */ i = 0; - for (node = keyblock; node; node = node->next) + for (node = keyblock; node; node = node->next) { if ( node->pkt->pkttype == PKT_USER_ID ) { - PKT_user_id *uid = node->pkt->pkt.user_id; - ++i; - - if(uid->attrib_data) - printf("uat:"); - else - printf("uid:"); - - if ( uid->is_revoked ) - printf("r::::::::"); - else if ( uid->is_expired ) - printf("e::::::::"); - else if ( opt.fast_list_mode || opt.no_expensive_trust_checks ) - printf("::::::::"); - else - { - int uid_validity; - - if( primary && !ulti_hack ) - uid_validity = get_validity_info( primary, uid ); - else - uid_validity = 'u'; - printf("%c::::::::",uid_validity); - } - - if(uid->attrib_data) - printf ("%u %lu",uid->numattribs,uid->attrib_len); - else - print_string (stdout, uid->name, uid->len, ':'); - - putchar (':'); - /* signature class */ - putchar (':'); - /* capabilities */ - putchar (':'); - /* preferences */ - if (pk_version>3 || uid->selfsigversion>3) - { - const prefitem_t *prefs = uid->prefs; - - for (j=0; prefs && prefs[j].type; j++) - { - if (j) - putchar (' '); - printf ("%c%d", prefs[j].type == PREFTYPE_SYM ? 'S' : - prefs[j].type == PREFTYPE_HASH ? 'H' : - prefs[j].type == PREFTYPE_ZIP ? 'Z':'?', - prefs[j].value); - } - if (uid->mdc_feature) - printf (",mdc"); - if (!uid->ks_modify) - printf (",no-ks-modify"); - } - putchar (':'); - /* flags */ - printf ("%d,", i); - if (uid->is_primary) - putchar ('p'); - if (uid->is_revoked) - putchar ('r'); - if (uid->is_expired) - putchar ('e'); - if ((node->flag & NODFLG_SELUID)) - putchar ('s'); - if ((node->flag & NODFLG_MARK_A)) - putchar ('m'); - putchar (':'); - putchar('\n'); + show_one_uid_colon(node, i, primary, ulti_hack, pk_version); } } } @@ -2506,17 +2534,23 @@ KBNODE node; PKT_user_id *uid = NULL; int changed=0; + KBNODE uidnode = NULL; for( node = pub_keyblock; node; node = node->next ) { if( node->pkt->pkttype == PKT_USER_ID ) { uid = (node->flag & NODFLG_SELUID)? node->pkt->pkt.user_id : NULL; + uidnode = node; } else if( uid && node->pkt->pkttype == PKT_SIGNATURE ) { int okay, valid, selfsig, inv_sig, no_key, other_err; - tty_printf("uid "); - tty_print_utf8_string( uid->name, uid->len ); - tty_printf("\n"); + if (opt.with_colons) + show_one_uid_colon (uidnode, 0, NULL, 0, 0); /* FIXME: pk_version */ + else { + tty_printf("uid "); + tty_print_utf8_string( uid->name, uid->len ); + tty_printf("\n"); + } okay = inv_sig = no_key = other_err = 0; valid = print_and_check_one_sig( pub_keyblock, node, diff -ur gnupg-1.3.6.orig/g10/status.c gnupg-1.3.6/g10/status.c --- gnupg-1.3.6.orig/g10/status.c 2004-05-22 13:19:05.000000000 +0200 +++ gnupg-1.3.6/g10/status.c 2004-06-12 15:25:53.142553888 +0200 @@ -590,6 +590,9 @@ { char *p; + fflush(stdout); + fflush(stderr); + if( opt.command_fd != -1 ) return do_get_from_fd ( keyword, 0, 0 ); #ifdef USE_SHM_COPROCESSING @@ -607,6 +610,9 @@ { char *p; + fflush(stdout); + fflush(stderr); + if( opt.command_fd != -1 ) return do_get_from_fd ( keyword, 0, 0 ); #ifdef USE_SHM_COPROCESSING @@ -643,6 +649,9 @@ { char *p; + fflush(stdout); + fflush(stderr); + if( opt.command_fd != -1 ) return do_get_from_fd ( keyword, 1, 0 ); #ifdef USE_SHM_COPROCESSING @@ -679,6 +688,9 @@ int yes; char *p; + fflush(stdout); + fflush(stderr); + if( opt.command_fd != -1 ) return !!do_get_from_fd ( keyword, 0, 1 ); #ifdef USE_SHM_COPROCESSING @@ -707,6 +719,9 @@ int yes; char *p; + fflush(stdout); + fflush(stderr); + if( opt.command_fd != -1 ) return !!do_get_from_fd ( keyword, 0, 1 ); #ifdef USE_SHM_COPROCESSING @@ -739,6 +754,9 @@ char *answer = NULL; char *p; + fflush(stdout); + fflush(stderr); + if( opt.command_fd != -1 ) answer = do_get_from_fd ( keyword, 0, 0 ); #ifdef USE_SHM_COPROCESSING