summaryrefslogtreecommitdiffstats
path: root/sm
diff options
context:
space:
mode:
authorWerner Koch <wk@gnupg.org>2004-12-22 18:55:28 +0100
committerWerner Koch <wk@gnupg.org>2004-12-22 18:55:28 +0100
commitde6f6d2015cc02833d10b06f6507a97a89fceed6 (patch)
tree4d4b90358257c265a8b15e7f8f2ff6f56cdcf5ae /sm
parent* gnupg.texi: Reordered. (diff)
downloadgnupg2-de6f6d2015cc02833d10b06f6507a97a89fceed6.tar.xz
gnupg2-de6f6d2015cc02833d10b06f6507a97a89fceed6.zip
(set_binary): New.
(main, open_read, open_fwrite): Use it.
Diffstat (limited to 'sm')
-rw-r--r--sm/ChangeLog5
-rw-r--r--sm/gpgsm.c40
2 files changed, 41 insertions, 4 deletions
diff --git a/sm/ChangeLog b/sm/ChangeLog
index 7a16cb570..df1670082 100644
--- a/sm/ChangeLog
+++ b/sm/ChangeLog
@@ -1,3 +1,8 @@
+2004-12-22 Werner Koch <wk@g10code.com>
+
+ * gpgsm.c (set_binary): New.
+ (main, open_read, open_fwrite): Use it.
+
2004-12-21 Werner Koch <wk@g10code.com>
* gpgsm.c (main): Use default_homedir().
diff --git a/sm/gpgsm.c b/sm/gpgsm.c
index 074027bf2..ff404dc69 100644
--- a/sm/gpgsm.c
+++ b/sm/gpgsm.c
@@ -39,6 +39,11 @@
#include "keydb.h"
#include "sysutils.h"
+
+#ifndef O_BINARY
+#define O_BINARY 0
+#endif
+
enum cmd_and_opt_values {
aNull = 0,
oArmor = 'a',
@@ -562,6 +567,17 @@ build_list (const char *text, const char * (*mapf)(int), int (*chkf)(int))
}
+/* Set the file pointer into binary mode if required. */
+static void
+set_binary (FILE *fp)
+{
+#ifdef HAVE_DOSISH_SYSTEM
+ setmode (fileno (fp), O_BINARY);
+#endif
+}
+
+
+
static void
i18n_init(void)
{
@@ -758,7 +774,7 @@ main ( int argc, char **argv)
opt.homedir = default_homedir ();
#ifdef HAVE_W32_SYSTEM
- opt.no_crl_checks = 1;
+ opt.no_crl_check = 1;
#endif
/* First check whether we have a config file on the commandline */
@@ -1374,6 +1390,8 @@ main ( int argc, char **argv)
break;
case aEncr: /* encrypt the given file */
+ set_binary (stdin);
+ set_binary (stdout);
if (!argc)
gpgsm_encrypt (&ctrl, recplist, 0, stdout); /* from stdin */
else if (argc == 1)
@@ -1386,6 +1404,8 @@ main ( int argc, char **argv)
/* FIXME: We don't handle --output yet. We should also allow
to concatenate multiple files for signing because that is
what gpg does.*/
+ set_binary (stdin);
+ set_binary (stdout);
if (!argc)
gpgsm_sign (&ctrl, signerlist,
0, detached_sig, stdout); /* create from stdin */
@@ -1408,6 +1428,7 @@ main ( int argc, char **argv)
{
FILE *fp = NULL;
+ set_binary (stdin);
if (argc == 2 && opt.outfile)
log_info ("option --output ignored for a detached signature\n");
else if (opt.outfile)
@@ -1432,6 +1453,8 @@ main ( int argc, char **argv)
break;
case aDecrypt:
+ set_binary (stdin);
+ set_binary (stdout);
if (!argc)
gpgsm_decrypt (&ctrl, 0, stdout); /* from stdin */
else if (argc == 1)
@@ -1502,6 +1525,7 @@ main ( int argc, char **argv)
break;
case aExport:
+ set_binary (stdout);
for (sl=NULL; argc; argc--, argv++)
add_to_strlist (&sl, *argv);
gpgsm_export (&ctrl, sl, stdout);
@@ -1509,6 +1533,7 @@ main ( int argc, char **argv)
break;
case aExportSecretKeyP12:
+ set_binary (stdout);
if (argc == 1)
gpgsm_p12_export (&ctrl, *argv, stdout);
else
@@ -1644,11 +1669,14 @@ open_read (const char *filename)
int fd;
if (filename[0] == '-' && !filename[1])
- return 0; /* stdin */
+ {
+ set_binary (stdin);
+ return 0; /* stdin */
+ }
fd = check_special_filename (filename);
if (fd != -1)
return fd;
- fd = open (filename, O_RDONLY);
+ fd = open (filename, O_RDONLY | O_BINARY);
if (fd == -1)
{
log_error (_("can't open `%s': %s\n"), filename, strerror (errno));
@@ -1668,7 +1696,10 @@ open_fwrite (const char *filename)
FILE *fp;
if (filename[0] == '-' && !filename[1])
- return stdout;
+ {
+ set_binary (stdout);
+ return stdout;
+ }
fd = check_special_filename (filename);
if (fd != -1)
@@ -1679,6 +1710,7 @@ open_fwrite (const char *filename)
log_error ("fdopen(%d) failed: %s\n", fd, strerror (errno));
gpgsm_exit (2);
}
+ set_binary (fp);
return fp;
}
fp = fopen (filename, "wb");