* misc.c (setup_pinentry_env): New.
authorWerner Koch <wk@gnupg.org>
Tue, 13 Apr 2004 09:45:35 +0000 (09:45 +0000)
committerWerner Koch <wk@gnupg.org>
Tue, 13 Apr 2004 09:45:35 +0000 (09:45 +0000)
* import.c (popen_protect_tool): Call it.
* export.c (popen_protect_tool): Call it.

sm/ChangeLog
sm/export.c
sm/gpgsm.h
sm/import.c
sm/misc.c

index eac744b..02f627a 100644 (file)
@@ -1,3 +1,9 @@
+2004-04-13  Werner Koch  <wk@gnupg.org>
+
+       * misc.c (setup_pinentry_env): New.
+       * import.c (popen_protect_tool): Call it.
+       * export.c (popen_protect_tool): Call it.
+
 2004-04-08  Werner Koch  <wk@gnupg.org>
 
        * decrypt.c (gpgsm_decrypt): Return GPG_ERR_NO_DATA if it is not a 
index 66dd46d..8a89110 100644 (file)
@@ -581,6 +581,8 @@ popen_protect_tool (const char *pgmname,
         close(i);
       errno = 0;
 
+      setup_pinentry_env ();
+
       execlp (pgmname, arg0,
               "--homedir", opt.homedir,
               "--p12-export",
index d3fbc03..a06bfa4 100644 (file)
@@ -299,6 +299,8 @@ int gpgsm_dirmngr_run_command (ctrl_t ctrl, const char *command,
                                int argc, char **argv);
 
 
+/*-- misc.c --*/
+void setup_pinentry_env (void);
 
 
 
index c54579b..df080da 100644 (file)
@@ -498,6 +498,8 @@ popen_protect_tool (const char *pgmname,
         close(i);
       errno = 0;
 
+      setup_pinentry_env ();
+
       execlp (pgmname, arg0,
               "--homedir", opt.homedir,
               "--p12-import",
index 4ffa715..2810561 100644 (file)
--- a/sm/misc.c
+++ b/sm/misc.c
@@ -1,5 +1,5 @@
 /* misc.c - Miscellaneous fucntions
- *     Copyright (C) 2001 Free Software Foundation, Inc.
+ *     Copyright (C) 2004 Free Software Foundation, Inc.
  *
  * This file is part of GnuPG.
  *
 #include <string.h>
 #include <ctype.h>
 #include <unistd.h>
+#ifdef HAVE_LOCALE_H
+#include <locale.h>
+#endif
 
 #include "gpgsm.h"
 
-#include <ksba.h>
 
+/* Setup the environment so that the pinentry is able to get all
+   required information.  This is used prior to an exec of the
+   protect-tool. */
+void
+setup_pinentry_env (void)
+{
+  char *lc;
+
+  if (opt.display)
+    setenv ("DISPLAY", opt.display, 1);
+  if (opt.ttyname)
+    setenv ("GPG_TTY", opt.ttyname, 1);
+  if (opt.ttytype)
+    setenv ("TERM", opt.ttytype, 1);
+
+  if (opt.lc_ctype)
+    setenv ("LC_CTYPE", opt.lc_ctype, 1);
+#if defined(HAVE_SETLOCALE) && defined(LC_CTYPE)
+  else if ( (lc = setlocale (LC_CTYPE, "")) )
+    setenv ("LC_CTYPE", lc, 1);
+#endif
+
+  if (opt.lc_messages)
+    setenv ("LC_MESSAGES", opt.lc_messages, 1);
+#if defined(HAVE_SETLOCALE) && defined(LC_MESSAGES)
+  else if ( (lc = setlocale (LC_MESSAGES, "")) )
+    setenv ("LC_MESSAGES", lc, 1);
+#endif
+
+}