summaryrefslogtreecommitdiffstats
path: root/sm/misc.c
diff options
context:
space:
mode:
authorWerner Koch <wk@gnupg.org>2004-10-04 15:21:37 +0200
committerWerner Koch <wk@gnupg.org>2004-10-04 15:21:37 +0200
commitad5d5fce4fd8a254f00cb18a983a2fea23a33e7e (patch)
treebef23199a80e5657cce97bf357992aafc9f25f10 /sm/misc.c
parentTypo fixes. (diff)
downloadgnupg2-ad5d5fce4fd8a254f00cb18a983a2fea23a33e7e.tar.xz
gnupg2-ad5d5fce4fd8a254f00cb18a983a2fea23a33e7e.zip
(setup_pinentry_env): Try hard to set a default for GPG_TTY.
Diffstat (limited to 'sm/misc.c')
-rw-r--r--sm/misc.c17
1 files changed, 16 insertions, 1 deletions
diff --git a/sm/misc.c b/sm/misc.c
index 281056177..bfe8191fd 100644
--- a/sm/misc.c
+++ b/sm/misc.c
@@ -30,7 +30,7 @@
#endif
#include "gpgsm.h"
-
+#include "i18n.h"
/* Setup the environment so that the pinentry is able to get all
required information. This is used prior to an exec of the
@@ -42,8 +42,23 @@ setup_pinentry_env (void)
if (opt.display)
setenv ("DISPLAY", opt.display, 1);
+
+ /* Try to make sure that GPG_TTY has been set. This is needed if we
+ call for example the protect-tools with redirected stdin and thus
+ it won't be able to ge a default by itself. Try to do it here
+ but print a warning. */
if (opt.ttyname)
setenv ("GPG_TTY", opt.ttyname, 1);
+ else if (!(lc=getenv ("GPG_TTY")) || !*lc)
+ {
+ log_error (_("GPG_TTY has not been set - "
+ "using maybe bogus default\n"));
+ lc = ttyname (0);
+ if (!lc)
+ lc = "/dev/tty";
+ setenv ("GPG_TTY", lc, 1);
+ }
+
if (opt.ttytype)
setenv ("TERM", opt.ttytype, 1);