aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--common/sysutils.c44
-rw-r--r--common/sysutils.h2
-rw-r--r--g10/gpg.c24
-rw-r--r--g10/gpgv.c8
-rw-r--r--sm/gpgsm.c12
-rw-r--r--tools/gpg-auth.c4
-rw-r--r--tools/gpg-card.c4
-rw-r--r--tools/gpg-pair-tool.c4
-rw-r--r--tools/gpg-wks-client.c4
-rw-r--r--tools/gpgconf.c4
10 files changed, 52 insertions, 58 deletions
diff --git a/common/sysutils.c b/common/sysutils.c
index 7c3667ce7..042387297 100644
--- a/common/sysutils.c
+++ b/common/sysutils.c
@@ -556,6 +556,24 @@ translate_sys2libc_fd (gnupg_fd_t fd, int for_write)
#endif
}
+/* This is the same as translate_sys2libc_fd but takes an integer
+ which is assumed to be such an system handle. On WindowsCE the
+ passed FD is a rendezvous ID and the function finishes the pipe
+ creation. */
+int
+translate_sys2libc_fd_int (int fd, int for_write)
+{
+#ifdef HAVE_W32_SYSTEM
+ if (fd <= 2)
+ return fd; /* Do not do this for error, stdin, stdout, stderr. */
+
+ return translate_sys2libc_fd ((void*)fd, for_write);
+#else
+ (void)for_write;
+ return fd;
+#endif
+}
+
/*
* Parse the string representation of a file reference (file handle on
@@ -636,30 +654,6 @@ gnupg_sys2libc_fdstr (const char *fdstr, int for_write,
#endif
}
-/* This is the same as translate_sys2libc_fd but takes a string
- which represents a system handle on Windows a file descriptor
- on POSIX.
-
- (1) 0, 1, or 2 which means stdin, stdout, and stderr, respectively.
- (2) Integer representation (by %d of printf).
- (3) Hex representation which starts as "0x".
-*/
-int
-translate_sys2libc_fdstr (const char *fdstr, int for_write)
-{
- gpg_error_t err;
- int fd;
-
- err = gnupg_sys2libc_fdstr (fdstr, for_write, NULL, &fd);
- if (err)
- {
- log_error ("FDSTR error: %s\n", fdstr);
- return -1;
- }
-
- return fd;
-}
-
/* Check whether FNAME has the form "-&nnnn", where N is a non-zero
* number. Returns this number or -1 if it is not the case. If the
@@ -679,7 +673,7 @@ check_special_filename (const char *fname, int for_write, int notranslate)
;
if (!fname[i])
return notranslate? atoi (fname)
- /**/ : translate_sys2libc_fdstr (fname, for_write);
+ /**/ : translate_sys2libc_fd_int (atoi (fname), for_write);
}
return -1;
}
diff --git a/common/sysutils.h b/common/sysutils.h
index 380a6d9a9..95cbc0bec 100644
--- a/common/sysutils.h
+++ b/common/sysutils.h
@@ -73,9 +73,9 @@ unsigned int get_uint_nonce (void);
void gnupg_sleep (unsigned int seconds);
void gnupg_usleep (unsigned int usecs);
int translate_sys2libc_fd (gnupg_fd_t fd, int for_write);
+int translate_sys2libc_fd_int (int fd, int for_write);
gpg_error_t gnupg_sys2libc_fdstr (const char *fdstr, int for_write,
gnupg_fd_t *r_hd, int *r_fd);
-int translate_sys2libc_fdstr (const char *fdstr, int for_write);
int check_special_filename (const char *fname, int for_write, int notranslate);
FILE *gnupg_tmpfile (void);
void gnupg_reopen_std (const char *pgmname);
diff --git a/g10/gpg.c b/g10/gpg.c
index b766e318f..6e54aa763 100644
--- a/g10/gpg.c
+++ b/g10/gpg.c
@@ -603,7 +603,7 @@ static gpgrt_opt_t opts[] = {
ARGPARSE_s_s (oDisplayCharset, "charset", "@"),
ARGPARSE_conffile (oOptions, "options", N_("|FILE|read options from FILE")),
ARGPARSE_noconffile (oNoOptions, "no-options", "@"),
- ARGPARSE_s_s (oLoggerFD, "logger-fd", "@"),
+ ARGPARSE_s_i (oLoggerFD, "logger-fd", "@"),
ARGPARSE_s_s (oLoggerFile, "log-file",
N_("|FILE|write server mode logs to FILE")),
ARGPARSE_s_s (oLoggerFile, "logger-file", "@"), /* 1.4 compatibility. */
@@ -854,7 +854,7 @@ static gpgrt_opt_t opts[] = {
ARGPARSE_s_n (oSkipHiddenRecipients, "skip-hidden-recipients", "@"),
ARGPARSE_s_n (oNoSkipHiddenRecipients, "no-skip-hidden-recipients", "@"),
ARGPARSE_s_s (oOverrideSessionKey, "override-session-key", "@"),
- ARGPARSE_s_s (oOverrideSessionKeyFD, "override-session-key-fd", "@"),
+ ARGPARSE_s_i (oOverrideSessionKeyFD, "override-session-key-fd", "@"),
ARGPARSE_header ("Security", N_("Options controlling the security")),
@@ -894,14 +894,14 @@ static gpgrt_opt_t opts[] = {
ARGPARSE_s_n (oNoBatch, "no-batch", "@"),
ARGPARSE_s_n (oAnswerYes, "yes", "@"),
ARGPARSE_s_n (oAnswerNo, "no", "@"),
- ARGPARSE_s_s (oStatusFD, "status-fd", "@"),
+ ARGPARSE_s_i (oStatusFD, "status-fd", "@"),
ARGPARSE_s_s (oStatusFile, "status-file", "@"),
- ARGPARSE_s_s (oAttributeFD, "attribute-fd", "@"),
+ ARGPARSE_s_i (oAttributeFD, "attribute-fd", "@"),
ARGPARSE_s_s (oAttributeFile, "attribute-file", "@"),
- ARGPARSE_s_s (oCommandFD, "command-fd", "@"),
+ ARGPARSE_s_i (oCommandFD, "command-fd", "@"),
ARGPARSE_s_s (oCommandFile, "command-file", "@"),
ARGPARSE_o_s (oPassphrase, "passphrase", "@"),
- ARGPARSE_s_s (oPassphraseFD, "passphrase-fd", "@"),
+ ARGPARSE_s_i (oPassphraseFD, "passphrase-fd", "@"),
ARGPARSE_s_s (oPassphraseFile, "passphrase-file", "@"),
ARGPARSE_s_i (oPassphraseRepeat,"passphrase-repeat", "@"),
ARGPARSE_s_s (oPinentryMode, "pinentry-mode", "@"),
@@ -2867,19 +2867,19 @@ main (int argc, char **argv)
break;
case oStatusFD:
- set_status_fd ( translate_sys2libc_fdstr (pargs.r.ret_str, 1) );
+ set_status_fd ( translate_sys2libc_fd_int (pargs.r.ret_int, 1) );
break;
case oStatusFile:
set_status_fd ( open_info_file (pargs.r.ret_str, 1, 0) );
break;
case oAttributeFD:
- set_attrib_fd ( translate_sys2libc_fdstr (pargs.r.ret_str, 1) );
+ set_attrib_fd ( translate_sys2libc_fd_int (pargs.r.ret_int, 1) );
break;
case oAttributeFile:
set_attrib_fd ( open_info_file (pargs.r.ret_str, 1, 1) );
break;
case oLoggerFD:
- log_set_fd (translate_sys2libc_fdstr (pargs.r.ret_str, 1));
+ log_set_fd (translate_sys2libc_fd_int (pargs.r.ret_int, 1));
break;
case oLoggerFile:
logfile = pargs.r.ret_str;
@@ -3245,7 +3245,7 @@ main (int argc, char **argv)
set_passphrase_from_string (pargs.r_type ? pargs.r.ret_str : "");
break;
case oPassphraseFD:
- pwfd = translate_sys2libc_fdstr (pargs.r.ret_str, 0);
+ pwfd = translate_sys2libc_fd_int (pargs.r.ret_int, 0);
break;
case oPassphraseFile:
pwfd = open_info_file (pargs.r.ret_str, 0, 1);
@@ -3267,7 +3267,7 @@ main (int argc, char **argv)
break;
case oCommandFD:
- opt.command_fd = translate_sys2libc_fdstr (pargs.r.ret_str, 0);
+ opt.command_fd = translate_sys2libc_fd_int (pargs.r.ret_int, 0);
if (! gnupg_fd_valid (opt.command_fd))
log_error ("command-fd is invalid: %s\n", strerror (errno));
break;
@@ -3526,7 +3526,7 @@ main (int argc, char **argv)
opt.override_session_key = pargs.r.ret_str;
break;
case oOverrideSessionKeyFD:
- ovrseskeyfd = translate_sys2libc_fdstr (pargs.r.ret_str, 0);
+ ovrseskeyfd = translate_sys2libc_fd_int (pargs.r.ret_int, 0);
break;
case oMergeOnly:
deprecated_warning(configname,pargs.lineno,"--merge-only",
diff --git a/g10/gpgv.c b/g10/gpgv.c
index c46cfa9b7..f2895563e 100644
--- a/g10/gpgv.c
+++ b/g10/gpgv.c
@@ -82,9 +82,9 @@ static gpgrt_opt_t opts[] = {
ARGPARSE_s_s (oOutput, "output", N_("|FILE|write output to FILE")),
ARGPARSE_s_n (oIgnoreTimeConflict, "ignore-time-conflict",
N_("make timestamp conflicts only a warning")),
- ARGPARSE_s_s (oStatusFD, "status-fd",
+ ARGPARSE_s_i (oStatusFD, "status-fd",
N_("|FD|write status info to this FD")),
- ARGPARSE_s_s (oLoggerFD, "logger-fd", "@"),
+ ARGPARSE_s_i (oLoggerFD, "logger-fd", "@"),
ARGPARSE_s_s (oLoggerFile, "log-file", "@"),
ARGPARSE_s_s (oHomedir, "homedir", "@"),
ARGPARSE_s_s (oWeakDigest, "weak-digest",
@@ -232,10 +232,10 @@ main( int argc, char **argv )
case oKeyring: append_to_strlist( &nrings, pargs.r.ret_str); break;
case oOutput: opt.outfile = pargs.r.ret_str; break;
case oStatusFD:
- set_status_fd (translate_sys2libc_fdstr (pargs.r.ret_str, 1));
+ set_status_fd (translate_sys2libc_fd_int (pargs.r.ret_int, 1));
break;
case oLoggerFD:
- log_set_fd (translate_sys2libc_fdstr (pargs.r.ret_str, 1));
+ log_set_fd (translate_sys2libc_fd_int (pargs.r.ret_int, 1));
break;
case oLoggerFile:
log_set_file (pargs.r.ret_str);
diff --git a/sm/gpgsm.c b/sm/gpgsm.c
index ceb58a13f..07c3ff480 100644
--- a/sm/gpgsm.c
+++ b/sm/gpgsm.c
@@ -290,7 +290,7 @@ static gpgrt_opt_t opts[] = {
ARGPARSE_s_s (oLogFile, "log-file",
N_("|FILE|write server mode logs to FILE")),
ARGPARSE_s_n (oNoLogFile, "no-log-file", "@"),
- ARGPARSE_s_s (oLoggerFD, "logger-fd", "@"),
+ ARGPARSE_s_i (oLoggerFD, "logger-fd", "@"),
ARGPARSE_s_n (oLogTime, "log-time", "@"),
ARGPARSE_s_n (oNoSecmemWarn, "no-secmem-warning", "@"),
@@ -422,9 +422,9 @@ static gpgrt_opt_t opts[] = {
ARGPARSE_s_n (oNoBatch, "no-batch", "@"),
ARGPARSE_s_n (oAnswerYes, "yes", N_("assume yes on most questions")),
ARGPARSE_s_n (oAnswerNo, "no", N_("assume no on most questions")),
- ARGPARSE_s_s (oStatusFD, "status-fd", N_("|FD|write status info to this FD")),
+ ARGPARSE_s_i (oStatusFD, "status-fd", N_("|FD|write status info to this FD")),
ARGPARSE_s_n (oEnableSpecialFilenames, "enable-special-filenames", "@"),
- ARGPARSE_s_s (oPassphraseFD, "passphrase-fd", "@"),
+ ARGPARSE_s_i (oPassphraseFD, "passphrase-fd", "@"),
ARGPARSE_s_s (oPinentryMode, "pinentry-mode", "@"),
@@ -1156,7 +1156,7 @@ main ( int argc, char **argv)
break;
case oPassphraseFD:
- pwfd = translate_sys2libc_fdstr (pargs.r.ret_str, 0);
+ pwfd = translate_sys2libc_fd_int (pargs.r.ret_int, 0);
break;
case oPinentryMode:
@@ -1300,10 +1300,10 @@ main ( int argc, char **argv)
break;
case oStatusFD:
- ctrl.status_fd = translate_sys2libc_fdstr (pargs.r.ret_str, 1);
+ ctrl.status_fd = translate_sys2libc_fd_int (pargs.r.ret_int, 1);
break;
case oLoggerFD:
- log_set_fd (translate_sys2libc_fdstr (pargs.r.ret_str, 1));
+ log_set_fd (translate_sys2libc_fd_int (pargs.r.ret_int, 1));
break;
case oWithMD5Fingerprint:
opt.with_md5_fingerprint=1; /*fall through*/
diff --git a/tools/gpg-auth.c b/tools/gpg-auth.c
index 6de3494ad..f433ba220 100644
--- a/tools/gpg-auth.c
+++ b/tools/gpg-auth.c
@@ -94,7 +94,7 @@ static gpgrt_opt_t opts[] = {
ARGPARSE_s_n (oVerbose, "verbose", ("verbose")),
ARGPARSE_s_n (oQuiet, "quiet", ("be somewhat more quiet")),
ARGPARSE_s_s (oDebug, "debug", "@"),
- ARGPARSE_s_s (oStatusFD, "status-fd", N_("|FD|write status info to this FD")),
+ ARGPARSE_s_i (oStatusFD, "status-fd", N_("|FD|write status info to this FD")),
ARGPARSE_s_n (oWithColons, "with-colons", "@"),
ARGPARSE_s_n (oNoAutostart, "no-autostart", "@"),
ARGPARSE_s_s (oAgentProgram, "agent-program", "@"),
@@ -168,7 +168,7 @@ parse_arguments (gpgrt_argparse_t *pargs, gpgrt_opt_t *popts)
case oAgentProgram: opt.agent_program = pargs->r.ret_str; break;
case oStatusFD:
- gnupg_set_status_fd (translate_sys2libc_fdstr (pargs->r.ret_str, 1));
+ gnupg_set_status_fd (translate_sys2libc_fd_int (pargs->r.ret_int, 1));
break;
case oWithColons: opt.with_colons = 1; break;
diff --git a/tools/gpg-card.c b/tools/gpg-card.c
index 24518d105..4002cc185 100644
--- a/tools/gpg-card.c
+++ b/tools/gpg-card.c
@@ -94,7 +94,7 @@ static gpgrt_opt_t opts[] = {
ARGPARSE_s_s (oDebug, "debug", "@"),
ARGPARSE_s_s (oGpgProgram, "gpg", "@"),
ARGPARSE_s_s (oGpgsmProgram, "gpgsm", "@"),
- ARGPARSE_s_s (oStatusFD, "status-fd", N_("|FD|write status info to this FD")),
+ ARGPARSE_s_i (oStatusFD, "status-fd", N_("|FD|write status info to this FD")),
ARGPARSE_s_n (oWithColons, "with-colons", "@"),
ARGPARSE_s_n (oNoAutostart, "no-autostart", "@"),
ARGPARSE_s_s (oAgentProgram, "agent-program", "@"),
@@ -225,7 +225,7 @@ parse_arguments (gpgrt_argparse_t *pargs, gpgrt_opt_t *popts)
case oAgentProgram: opt.agent_program = pargs->r.ret_str; break;
case oStatusFD:
- gnupg_set_status_fd (translate_sys2libc_fdstr (pargs->r.ret_str, 1));
+ gnupg_set_status_fd (translate_sys2libc_fd_int (pargs->r.ret_int, 1));
break;
case oWithColons: opt.with_colons = 1; break;
diff --git a/tools/gpg-pair-tool.c b/tools/gpg-pair-tool.c
index 069bd1668..cf9778838 100644
--- a/tools/gpg-pair-tool.c
+++ b/tools/gpg-pair-tool.c
@@ -179,7 +179,7 @@ static gpgrt_opt_t opts[] = {
ARGPARSE_s_s (oSAS, "sas", N_("|SAS|the SAS as shown by the peer")),
ARGPARSE_s_s (oDebug, "debug", "@"),
ARGPARSE_s_s (oOutput, "output", N_("|FILE|write the request to FILE")),
- ARGPARSE_s_s (oStatusFD, "status-fd", N_("|FD|write status info to this FD")),
+ ARGPARSE_s_i (oStatusFD, "status-fd", N_("|FD|write status info to this FD")),
ARGPARSE_s_s (oHomedir, "homedir", "@"),
@@ -390,7 +390,7 @@ main (int argc, char **argv)
break;
case oStatusFD:
- set_status_fd (translate_sys2libc_fdstr (pargs.r.ret_str, 1));
+ set_status_fd (translate_sys2libc_fd_int (pargs.r.ret_int, 1));
break;
case oHomedir:
diff --git a/tools/gpg-wks-client.c b/tools/gpg-wks-client.c
index ee0554014..521222631 100644
--- a/tools/gpg-wks-client.c
+++ b/tools/gpg-wks-client.c
@@ -115,7 +115,7 @@ static gpgrt_opt_t opts[] = {
ARGPARSE_s_s (oGpgProgram, "gpg", "@"),
ARGPARSE_s_n (oSend, "send", "send the mail using sendmail"),
ARGPARSE_s_s (oOutput, "output", "|FILE|write the mail to FILE"),
- ARGPARSE_s_s (oStatusFD, "status-fd", N_("|FD|write status info to this FD")),
+ ARGPARSE_s_i (oStatusFD, "status-fd", N_("|FD|write status info to this FD")),
ARGPARSE_s_n (oNoAutostart, "no-autostart", "@"),
ARGPARSE_s_n (oWithColons, "with-colons", "@"),
ARGPARSE_s_s (oBlacklist, "blacklist", "@"),
@@ -248,7 +248,7 @@ parse_arguments (gpgrt_argparse_t *pargs, gpgrt_opt_t *popts)
fake_submission_addr = pargs->r.ret_str;
break;
case oStatusFD:
- wks_set_status_fd (translate_sys2libc_fdstr (pargs->r.ret_str, 1));
+ wks_set_status_fd (translate_sys2libc_fd_int (pargs->r.ret_int, 1));
break;
case oWithColons:
opt.with_colons = 1;
diff --git a/tools/gpgconf.c b/tools/gpgconf.c
index 9738ffe97..522ce517b 100644
--- a/tools/gpgconf.c
+++ b/tools/gpgconf.c
@@ -118,7 +118,7 @@ static gpgrt_opt_t opts[] =
{ oQuiet, "quiet", 0, N_("quiet") },
{ oDryRun, "dry-run", 0, N_("do not make any changes") },
{ oRuntime, "runtime", 0, N_("activate changes at runtime, if possible") },
- ARGPARSE_s_s (oStatusFD, "status-fd",
+ ARGPARSE_s_i (oStatusFD, "status-fd",
N_("|FD|write status info to this FD")),
/* hidden options */
{ oHomedir, "homedir", 2, "@" },
@@ -645,7 +645,7 @@ main (int argc, char **argv)
case oBuilddir: gnupg_set_builddir (pargs.r.ret_str); break;
case oNull: opt.null = 1; break;
case oStatusFD:
- set_status_fd (translate_sys2libc_fdstr (pargs.r.ret_str, 1));
+ set_status_fd (translate_sys2libc_fd_int (pargs.r.ret_int, 1));
break;
case oShowSocket: show_socket = 1; break;
case oChUid: changeuser = pargs.r.ret_str; break;