Nur in abook-0.5.2: abook.spec. diff -abBpur abook-0.5.2/database.c abook-0.5.2-pgp/database.c --- abook-0.5.2/database.c 2003-11-22 14:46:02.000000000 +0100 +++ abook-0.5.2-pgp/database.c 2004-04-13 10:29:44.920744534 +0200 @@ -14,6 +14,7 @@ #include #include "abook.h" #include +#include #include "database.h" #include "list.h" #include "misc.h" @@ -57,6 +58,9 @@ extern char *rcfile; struct abook_field abook_fields[ITEM_FIELDS] = { {"Name", "name", TAB_CONTACT},/* NAME */ + {"PGP", "pgp", TAB_CONTACT}, /* PGP */ + {"Key ID", "pgpkey", TAB_CONTACT}, /* PGPKEY */ + {"PGP/Mime", "pgpmime", TAB_CONTACT}, /* PGPSTYLE */ {"E-mails", "email", TAB_CONTACT},/* EMAIL */ {"Address", "address", TAB_ADDRESS},/* ADDRESS */ {"Address2", "address2", TAB_ADDRESS},/* ADDRESS2 */ @@ -139,6 +143,20 @@ next: return 0; } +void +normalize_pgp_data() +{ + struct db_enumerator e = init_db_enumerator(ENUM_ALL); + db_enumerate_items(e) + { + if( ! database[e.item][PGP] ) + database[e.item][PGP] = strdup( "None" ); + // Set PGP/Mime as default if not given + if( tolower( *database[e.item][PGP] ) != 'n' && ! database[e.item][PGPMIME] ){ + database[e.item][PGPMIME] = strdup( "Yes" ); + } + } +} int @@ -153,6 +171,7 @@ load_database(char *filename) return -1; parse_database(in); + normalize_pgp_data(); return (items == 0) ? 2 : 0; } Nur in abook-0.5.2-pgp: database.c.orig. diff -abBpur abook-0.5.2/database.h abook-0.5.2-pgp/database.h --- abook-0.5.2/database.h 2003-11-21 22:16:16.000000000 +0100 +++ abook-0.5.2-pgp/database.h 2004-04-13 10:29:44.921744345 +0200 @@ -9,6 +9,9 @@ enum { NAME, + PGP, + PGPKEY, + PGPMIME, EMAIL, ADDRESS, ADDRESS2, diff -abBpur abook-0.5.2/edit.c abook-0.5.2-pgp/edit.c --- abook-0.5.2/edit.c 2004-01-26 12:35:30.000000000 +0100 +++ abook-0.5.2-pgp/edit.c 2004-04-13 10:30:18.588358761 +0200 @@ -9,6 +9,7 @@ #include #include +#include #include #include "abook_curses.h" #include "ui.h" @@ -174,7 +175,7 @@ editor_print_data(int tab, int item) for(k = 0; k < MAX_EMAILS; k++) { getyx(editw, y, x); mvwprintw(editw, y+1, FIELDS_START_X, - "%c -", '2' + k); + "%c -", '5' + k); mvwprintw(editw, y +1, TAB_COLON_POS, ": %s", emails[k]); } @@ -258,6 +259,51 @@ change_name_field(char **field) } static void +change_pgp_field(char **field) +{ + const char *pgp = NULL; + + statusline_addstr( "PGP: (e)ncrypt, (s)ign, (b)oth, or (f)orget it?" ); + while( ! pgp ) + switch( getch() ) { + case 'e': + pgp = "Encrypt"; + break; + case 's': + pgp = "Sign"; + break; + case 'b': + pgp = "Encrypt and sign"; + break; + case 'f': + pgp = "None"; + break; + } + + clear_statusline(); + refresh_statusline(); + + if( *field ) + my_free( *field ); + *field = strdup( pgp ); +} + +static void +change_pgpmime_field(char **field) +{ + // Cycles between "Yes" and "No" + + if( ! *field || tolower( **field ) == 'n' ) { + if( *field ) my_free( *field ); + *field = strdup( "Yes" ); + } + else{ + my_free( *field ); + *field = strdup( "No" ); + } +} + +static void fix_email_str(char *str) { for(; *str; str++ ) @@ -271,7 +317,7 @@ edit_emails(char c, int item) char emails[MAX_EMAILS][MAX_EMAIL_LEN]; char tmp[MAX_EMAILSTR_LEN] = ""; int i, len; - int email_num = c - '2'; + int email_num = c - '5'; split_emailstr(item, emails); field = strdup(emails[email_num]); @@ -317,10 +363,18 @@ edit_field(int tab, char c, int item) switch(c) { case '1': change_name_field(&database[item][NAME]); break; - case '2': - case '3': - case '4': - case '5': edit_emails(c, item); break; + case '2': change_pgp_field(&database[item][PGP]); + break; + case '3': str = mkstr("%s: ", abook_fields[PGPKEY].name); + change_field(str, &database[item][PGPKEY]); + free(str); + break; + case '4': change_pgpmime_field(&database[item][PGPMIME]); + break; + case '5': + case '6': + case '7': + case '8': edit_emails(c, item); break; default: return 0; } return 1; Nur in abook-0.5.2-pgp: edit.c.orig. Nur in abook-0.5.2-pgp: edit.c.rej. diff -abBpur abook-0.5.2/list.c abook-0.5.2-pgp/list.c --- abook-0.5.2/list.c 2004-01-26 10:51:35.000000000 +0100 +++ abook-0.5.2-pgp/list.c 2004-04-13 10:29:44.923743966 +0200 @@ -9,6 +9,7 @@ #include #include +#include #include "abook.h" #include #include "ui.h" @@ -118,7 +119,7 @@ print_list_line(int i, int line, int hig { int extra = extra_column; char tmp[MAX_EMAILSTR_LEN]; - int real_emaillen = (extra_column > 0 || extra_alternative > 0) ? + int real_emaillen = ((extra_column > 0 && extra_column < ITEM_FIELDS) || extra_alternative > 0 ) ? EMAILLEN : COLS - EMAILPOS; scrollok(list, FALSE);