1
0
mirror of git://git.gnupg.org/gnupg.git synced 2025-01-10 13:04:23 +01:00

* photoid.h, photoid.c (generate_photo_id): Allow passing in a

suggested filename.

* keyedit.c (keyedit_menu, menu_adduid): Call it here so "addphoto
filename" works.
This commit is contained in:
David Shaw 2005-09-01 20:51:13 +00:00
parent 516ec53e02
commit be8543812d
4 changed files with 52 additions and 25 deletions

View File

@ -1,3 +1,11 @@
2005-09-01 David Shaw <dshaw@jabberwocky.com>
* photoid.h, photoid.c (generate_photo_id): Allow passing in a
suggested filename.
* keyedit.c (keyedit_menu, menu_adduid): Call it here so "addphoto
filename" works.
2005-08-31 David Shaw <dshaw@jabberwocky.com> 2005-08-31 David Shaw <dshaw@jabberwocky.com>
* photoid.c (generate_photo_id): Enable readline completion and * photoid.c (generate_photo_id): Enable readline completion and

View File

@ -51,7 +51,8 @@ static void show_prefs( PKT_user_id *uid, PKT_signature *selfsig, int verbose);
static void show_key_with_all_names( KBNODE keyblock, int only_marked, static void show_key_with_all_names( KBNODE keyblock, int only_marked,
int with_revoker, int with_fpr, int with_subkeys, int with_prefs ); int with_revoker, int with_fpr, int with_subkeys, int with_prefs );
static void show_key_and_fingerprint( KBNODE keyblock ); static void show_key_and_fingerprint( KBNODE keyblock );
static int menu_adduid( KBNODE keyblock, KBNODE sec_keyblock, int photo ); 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 void menu_deluid( KBNODE pub_keyblock, KBNODE sec_keyblock );
static int menu_delsig( KBNODE pub_keyblock ); static int menu_delsig( KBNODE pub_keyblock );
static int menu_clean_sigs_from_uids(KBNODE keyblock); static int menu_clean_sigs_from_uids(KBNODE keyblock);
@ -1788,7 +1789,7 @@ keyedit_menu( const char *username, STRLIST locusr,
/* fall through */ /* fall through */
case cmdADDUID: case cmdADDUID:
if( menu_adduid( keyblock, sec_keyblock, photo ) ) if( menu_adduid( keyblock, sec_keyblock, photo, arg_string ) )
{ {
update_trust = 1; update_trust = 1;
redisplay = 1; redisplay = 1;
@ -2910,7 +2911,8 @@ no_primary_warning(KBNODE keyblock)
* Return true if there is a new user id * Return true if there is a new user id
*/ */
static int static int
menu_adduid( KBNODE pub_keyblock, KBNODE sec_keyblock, int photo) menu_adduid( KBNODE pub_keyblock, KBNODE sec_keyblock,
int photo, const char *photo_name)
{ {
PKT_user_id *uid; PKT_user_id *uid;
PKT_public_key *pk=NULL; PKT_public_key *pk=NULL;
@ -2976,7 +2978,7 @@ menu_adduid( KBNODE pub_keyblock, KBNODE sec_keyblock, int photo)
} }
} }
uid = generate_photo_id(pk); uid = generate_photo_id(pk,photo_name);
} else } else
uid = generate_user_id(); uid = generate_user_id();
if( !uid ) if( !uid )

View File

@ -44,12 +44,12 @@
/* Generate a new photo id packet, or return NULL if canceled */ /* Generate a new photo id packet, or return NULL if canceled */
PKT_user_id * PKT_user_id *
generate_photo_id(PKT_public_key *pk) generate_photo_id(PKT_public_key *pk,const char *photo_name)
{ {
PKT_user_id *uid; PKT_user_id *uid;
int error=1,i; int error=1,i;
unsigned int len; unsigned int len;
char *filename=NULL; char *filename;
byte *photo=NULL; byte *photo=NULL;
byte header[16]; byte header[16];
IOBUF file; IOBUF file;
@ -65,21 +65,29 @@ generate_photo_id(PKT_public_key *pk)
#define EXTRA_UID_NAME_SPACE 71 #define EXTRA_UID_NAME_SPACE 71
uid=xmalloc_clear(sizeof(*uid)+71); uid=xmalloc_clear(sizeof(*uid)+71);
tty_printf(_("\nPick an image to use for your photo ID. " if(photo_name && *photo_name)
"The image must be a JPEG file.\n" filename=make_filename(photo_name,(void *)NULL);
"Remember that the image is stored within your public key. " else
"If you use a\n" {
"very large picture, your key will become very large as well!\n" tty_printf(_("\nPick an image to use for your photo ID."
"Keeping the image close to 240x288 is a good size to use.\n")); " The image must be a JPEG file.\n"
"Remember that the image is stored within your public key."
" If you use a\n"
"very large picture, your key will become very large"
" as well!\n"
"Keeping the image close to 240x288 is a good size"
" to use.\n"));
filename=NULL;
}
while(photo==NULL) while(photo==NULL)
{
if(filename==NULL)
{ {
char *tempname; char *tempname;
tty_printf("\n"); tty_printf("\n");
xfree(filename);
tty_enable_completion(NULL); tty_enable_completion(NULL);
tempname=cpr_get("photoid.jpeg.add", tempname=cpr_get("photoid.jpeg.add",
@ -93,6 +101,7 @@ generate_photo_id(PKT_public_key *pk)
if(strlen(filename)==0) if(strlen(filename)==0)
goto scram; goto scram;
}
file=iobuf_open(filename); file=iobuf_open(filename);
if (file && is_secured_file (iobuf_get_fd (file))) if (file && is_secured_file (iobuf_get_fd (file)))
@ -105,6 +114,8 @@ generate_photo_id(PKT_public_key *pk)
{ {
log_error(_("unable to open JPEG file `%s': %s\n"), log_error(_("unable to open JPEG file `%s': %s\n"),
filename,strerror(errno)); filename,strerror(errno));
xfree(filename);
filename=NULL;
continue; continue;
} }
@ -116,6 +127,8 @@ generate_photo_id(PKT_public_key *pk)
_("Are you sure you want to use it? (y/N) "))) _("Are you sure you want to use it? (y/N) ")))
{ {
iobuf_close(file); iobuf_close(file);
xfree(filename);
filename=NULL;
continue; continue;
} }
} }
@ -131,6 +144,8 @@ generate_photo_id(PKT_public_key *pk)
log_error(_("`%s' is not a JPEG file\n"),filename); log_error(_("`%s' is not a JPEG file\n"),filename);
xfree(photo); xfree(photo);
photo=NULL; photo=NULL;
xfree(filename);
filename=NULL;
continue; continue;
} }
@ -153,6 +168,8 @@ generate_photo_id(PKT_public_key *pk)
free_attributes(uid); free_attributes(uid);
xfree(photo); xfree(photo);
photo=NULL; photo=NULL;
xfree(filename);
filename=NULL;
continue; continue;
} }
} }

View File

@ -26,7 +26,7 @@
#include "packet.h" #include "packet.h"
PKT_user_id *generate_photo_id(PKT_public_key *pk); PKT_user_id *generate_photo_id(PKT_public_key *pk,const char *filename);
int parse_image_header(const struct user_attribute *attr,byte *type,u32 *len); int parse_image_header(const struct user_attribute *attr,byte *type,u32 *len);
char *image_type_to_string(byte type,int style); char *image_type_to_string(byte type,int style);
void show_photos(const struct user_attribute *attrs, void show_photos(const struct user_attribute *attrs,