aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDavid Shaw <[email protected]>2005-09-01 20:51:13 +0000
committerDavid Shaw <[email protected]>2005-09-01 20:51:13 +0000
commitbe8543812d67b47af668d3e72b7515e2f91b0dbe (patch)
tree9d1eac14802ca684b62d6d0b090ac9005187ab03
parent* mpicoder.c (mpi_read): Fix minor bug in reading a zero-length MPI (diff)
downloadgnupg-be8543812d67b47af668d3e72b7515e2f91b0dbe.tar.gz
gnupg-be8543812d67b47af668d3e72b7515e2f91b0dbe.zip
* 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.
-rw-r--r--g10/ChangeLog8
-rw-r--r--g10/keyedit.c10
-rw-r--r--g10/photoid.c57
-rw-r--r--g10/photoid.h2
4 files changed, 52 insertions, 25 deletions
diff --git a/g10/ChangeLog b/g10/ChangeLog
index 519766d46..373965f53 100644
--- a/g10/ChangeLog
+++ b/g10/ChangeLog
@@ -1,3 +1,11 @@
+2005-09-01 David Shaw <[email protected]>
+
+ * 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 <[email protected]>
* photoid.c (generate_photo_id): Enable readline completion and
diff --git a/g10/keyedit.c b/g10/keyedit.c
index 52247233f..6e8d944c5 100644
--- a/g10/keyedit.c
+++ b/g10/keyedit.c
@@ -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,
int with_revoker, int with_fpr, int with_subkeys, int with_prefs );
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 int menu_delsig( KBNODE pub_keyblock );
static int menu_clean_sigs_from_uids(KBNODE keyblock);
@@ -1788,7 +1789,7 @@ keyedit_menu( const char *username, STRLIST locusr,
/* fall through */
case cmdADDUID:
- if( menu_adduid( keyblock, sec_keyblock, photo ) )
+ if( menu_adduid( keyblock, sec_keyblock, photo, arg_string ) )
{
update_trust = 1;
redisplay = 1;
@@ -2910,7 +2911,8 @@ no_primary_warning(KBNODE keyblock)
* Return true if there is a new user id
*/
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_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
uid = generate_user_id();
if( !uid )
diff --git a/g10/photoid.c b/g10/photoid.c
index 5dd4e436a..885bbca01 100644
--- a/g10/photoid.c
+++ b/g10/photoid.c
@@ -44,12 +44,12 @@
/* Generate a new photo id packet, or return NULL if canceled */
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;
int error=1,i;
unsigned int len;
- char *filename=NULL;
+ char *filename;
byte *photo=NULL;
byte header[16];
IOBUF file;
@@ -65,34 +65,43 @@ generate_photo_id(PKT_public_key *pk)
#define EXTRA_UID_NAME_SPACE 71
uid=xmalloc_clear(sizeof(*uid)+71);
- tty_printf(_("\nPick an image to use for your photo ID. "
- "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"));
+ if(photo_name && *photo_name)
+ filename=make_filename(photo_name,(void *)NULL);
+ else
+ {
+ tty_printf(_("\nPick an image to use for your photo ID."
+ " 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)
{
- char *tempname;
-
- tty_printf("\n");
+ if(filename==NULL)
+ {
+ char *tempname;
- xfree(filename);
+ tty_printf("\n");
- tty_enable_completion(NULL);
+ tty_enable_completion(NULL);
- tempname=cpr_get("photoid.jpeg.add",
- _("Enter JPEG filename for photo ID: "));
+ tempname=cpr_get("photoid.jpeg.add",
+ _("Enter JPEG filename for photo ID: "));
- tty_disable_completion();
+ tty_disable_completion();
- filename=make_filename(tempname,(void *)NULL);
+ filename=make_filename(tempname,(void *)NULL);
- xfree(tempname);
+ xfree(tempname);
- if(strlen(filename)==0)
- goto scram;
+ if(strlen(filename)==0)
+ goto scram;
+ }
file=iobuf_open(filename);
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"),
filename,strerror(errno));
+ xfree(filename);
+ filename=NULL;
continue;
}
@@ -116,6 +127,8 @@ generate_photo_id(PKT_public_key *pk)
_("Are you sure you want to use it? (y/N) ")))
{
iobuf_close(file);
+ xfree(filename);
+ filename=NULL;
continue;
}
}
@@ -131,6 +144,8 @@ generate_photo_id(PKT_public_key *pk)
log_error(_("`%s' is not a JPEG file\n"),filename);
xfree(photo);
photo=NULL;
+ xfree(filename);
+ filename=NULL;
continue;
}
@@ -153,6 +168,8 @@ generate_photo_id(PKT_public_key *pk)
free_attributes(uid);
xfree(photo);
photo=NULL;
+ xfree(filename);
+ filename=NULL;
continue;
}
}
diff --git a/g10/photoid.h b/g10/photoid.h
index 031c0fee6..d13669c52 100644
--- a/g10/photoid.h
+++ b/g10/photoid.h
@@ -26,7 +26,7 @@
#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);
char *image_type_to_string(byte type,int style);
void show_photos(const struct user_attribute *attrs,