From 7dd67937a5d1e799ecb186d825de8eba956d2f41 Mon Sep 17 00:00:00 2001 From: Marcus Brinkmann Date: Wed, 29 Nov 2006 15:44:29 +0000 Subject: [PATCH] 2006-11-29 Marcus Brinkmann * rungpg.c: Include . (gpg_new): Support --display, --ttyname, --ttytype, --lc-ctype and --lc-messages. Fixes issue 734. --- trunk/gpgme/ChangeLog | 6 +++++ trunk/gpgme/rungpg.c | 62 +++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 68 insertions(+) diff --git a/trunk/gpgme/ChangeLog b/trunk/gpgme/ChangeLog index b773ef9..b158718 100644 --- a/trunk/gpgme/ChangeLog +++ b/trunk/gpgme/ChangeLog @@ -1,3 +1,9 @@ +2006-11-29 Marcus Brinkmann + + * rungpg.c: Include . + (gpg_new): Support --display, --ttyname, --ttytype, --lc-ctype and + --lc-messages. Fixes issue 734. + 2006-10-24 Marcus Brinkmann * trustlist.c (gpgme_op_trustlist_next): Return error if OPD is diff --git a/trunk/gpgme/rungpg.c b/trunk/gpgme/rungpg.c index 9b6cb2e..3907c3f 100644 --- a/trunk/gpgme/rungpg.c +++ b/trunk/gpgme/rungpg.c @@ -27,6 +27,7 @@ #include #include #include +#include #include "gpgme.h" #include "util.h" @@ -344,6 +345,9 @@ gpg_new (void **engine, const char *file_name, const char *home_dir, { engine_gpg_t gpg; gpgme_error_t rc = 0; + char *dft_display = NULL; + char dft_ttyname[64]; + char *dft_ttytype = NULL; gpg = calloc (1, sizeof *gpg); if (!gpg) @@ -423,6 +427,64 @@ gpg_new (void **engine, const char *file_name, const char *home_dir, rc = add_arg (gpg, "utf8"); if (!rc) rc = add_arg (gpg, "--enable-progress-filter"); + if (rc) + goto leave; + + rc = _gpgme_getenv ("DISPLAY", &dft_display); + if (dft_display) + { + rc = add_arg (gpg, "--display"); + if (!rc) + rc = add_arg (gpg, dft_display); + + free (dft_display); + } + if (rc) + goto leave; + + if (isatty (1)) + { + if (ttyname_r (1, dft_ttyname, sizeof (dft_ttyname))) + rc = gpg_error_from_errno (errno); + else + { + rc = add_arg (gpg, "--ttyname"); + if (!rc) + rc = add_arg (gpg, dft_ttyname); + if (!rc) + { + rc = _gpgme_getenv ("TERM", &dft_ttytype); + if (!rc) + goto leave; + + rc = add_arg (gpg, "--ttytype"); + if (!rc) + rc = add_arg (gpg, dft_ttytype); + + free (dft_ttytype); + } + } + if (rc) + goto leave; + } + + if (lc_ctype) + { + rc = add_arg (gpg, "--lc-ctype"); + if (!rc) + rc = add_arg (gpg, lc_ctype); + if (rc) + goto leave; + } + + if (lc_messages) + { + rc = add_arg (gpg, "--lc-messages"); + if (!rc) + rc = add_arg (gpg, lc_messages); + if (rc) + goto leave; + } leave: if (rc) -- 2.26.2