Fix preference setting in new keys
[gnupg.git] / g10 / photoid.c
index 3676d38..3be42d2 100644 (file)
@@ -1,11 +1,11 @@
 /* photoid.c - photo ID handling code
- * Copyright (C) 2001, 2002, 2005 Free Software Foundation, Inc.
+ * Copyright (C) 2001, 2002, 2005, 2006, 2008 Free Software Foundation, Inc.
  *
  * This file is part of GnuPG.
  *
  * GnuPG is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
+ * the Free Software Foundation; either version 3 of the License, or
  * (at your option) any later version.
  *
  * GnuPG is distributed in the hope that it will be useful,
@@ -14,9 +14,7 @@
  * GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
- * USA.
+ * along with this program; if not, see <http://www.gnu.org/licenses/>.
  */
 
 #include <config.h>
@@ -29,6 +27,8 @@
 #  define VER_PLATFORM_WIN32_WINDOWS 1
 # endif
 #endif
+
+#include "gpg.h"
 #include "packet.h"
 #include "status.h"
 #include "exec.h"
 #include "util.h"
 #include "i18n.h"
 #include "iobuf.h"
-#include "memory.h"
 #include "options.h"
 #include "main.h"
 #include "photoid.h"
 #include "ttyio.h"
+#include "trustdb.h"
 
-/* Generate a new photo id packet, or return NULL if canceled */
+/* Generate a new photo id packet, or return NULL if canceled.
+   FIXME:  Should we add a duplicates check similar to generate_user_id? */
 PKT_user_id *
 generate_photo_id(PKT_public_key *pk,const char *photo_name)
 {
@@ -109,7 +110,7 @@ generate_photo_id(PKT_public_key *pk,const char *photo_name)
         {
           iobuf_close (file);
           file = NULL;
-          errno = EPERM;
+          gpg_err_set_errno (EPERM);
         }
       if(!file)
        {
@@ -160,7 +161,7 @@ generate_photo_id(PKT_public_key *pk,const char *photo_name)
          "user" may not be able to dismiss a viewer window! */
       if(opt.command_fd==-1)
        {
-         show_photos(uid->attribs,uid->numattribs,pk,NULL);
+         show_photos (uid->attribs, uid->numattribs, pk, uid);
          switch(cpr_get_answer_yes_no_quit("photoid.jpeg.okay",
                                         _("Is this photo correct (y/N/q)? ")))
            {
@@ -259,8 +260,7 @@ char *image_type_to_string(byte type,int style)
 }
 
 #if !defined(FIXED_PHOTO_VIEWER) && !defined(DISABLE_PHOTO_VIEWER)
-static const char *
-get_default_photo_command(void)
+static const char *get_default_photo_command(void)
 {
 #if defined(_WIN32)
   OSVERSIONINFO osvi;
@@ -279,20 +279,14 @@ get_default_photo_command(void)
 #elif defined(__riscos__)
   return "Filer_Run %I";
 #else
-  if(path_access("xloadimage",X_OK)==0)
-    return "xloadimage -fork -quiet -title 'KeyID 0x%k' stdin";
-  else if(path_access("eog",X_OK)==0)
-    return "eog %i";
-  else if(path_access("display",X_OK)==0)
-    return "display -title 'KeyID 0x%k' %i";
-  else
-    return "";
+  return "xloadimage -fork -quiet -title 'KeyID 0x%k' stdin";
 #endif
 }
 #endif
 
-void show_photos(const struct user_attribute *attrs,
-                int count,PKT_public_key *pk,PKT_secret_key *sk)
+void
+show_photos(const struct user_attribute *attrs, int count,
+            PKT_public_key *pk, PKT_user_id *uid)
 {
 #ifndef DISABLE_PHOTO_VIEWER
   int i;
@@ -300,14 +294,13 @@ void show_photos(const struct user_attribute *attrs,
   u32 len;
   u32 kid[2]={0,0};
 
-  memset(&args,0,sizeof(args));
-  args.pk=pk;
-  args.sk=sk;
+  memset (&args, 0, sizeof(args));
+  args.pk = pk;
+  args.validity_info = get_validity_info (pk, uid);
+  args.validity_string = get_validity_string (pk, uid);
 
-  if(pk)
-    keyid_from_pk(pk,kid);
-  else if(sk)
-    keyid_from_sk(sk,kid);
+  if (pk)
+    keyid_from_pk (pk, kid);
 
   for(i=0;i<count;i++)
     if(attrs[i].type==ATTRIB_IMAGE &&
@@ -324,12 +317,6 @@ void show_photos(const struct user_attribute *attrs,
          opt.photo_viewer=get_default_photo_command();
 #endif
 
-       if(!*opt.photo_viewer)
-         {
-           log_info(_("no photo viewer set\n"));
-           goto fail;
-         }
-
        /* make command grow */
        command=pct_expando(opt.photo_viewer,&args);
        if(!command)