diff options
| -rw-r--r-- | gpgme/ChangeLog | 6 | ||||
| -rw-r--r-- | gpgme/rungpg.c | 62 | 
2 files changed, 68 insertions, 0 deletions
| diff --git a/gpgme/ChangeLog b/gpgme/ChangeLog index b773ef94..b1587182 100644 --- a/gpgme/ChangeLog +++ b/gpgme/ChangeLog @@ -1,3 +1,9 @@ +2006-11-29  Marcus Brinkmann  <[email protected]> + +	* rungpg.c: Include <unistd.h>. +	(gpg_new): Support --display, --ttyname, --ttytype, --lc-ctype and +	--lc-messages.  Fixes issue 734. +  2006-10-24  Marcus Brinkmann  <[email protected]>  	* trustlist.c (gpgme_op_trustlist_next): Return error if OPD is diff --git a/gpgme/rungpg.c b/gpgme/rungpg.c index 9b6cb2ed..3907c3f3 100644 --- a/gpgme/rungpg.c +++ b/gpgme/rungpg.c @@ -27,6 +27,7 @@  #include <string.h>  #include <assert.h>  #include <errno.h> +#include <unistd.h>  #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) | 
