diff options
author | mcgreer%netscape.com <devnull@localhost> | 2000-10-11 06:52:06 +0000 |
---|---|---|
committer | mcgreer%netscape.com <devnull@localhost> | 2000-10-11 06:52:06 +0000 |
commit | fc2befca0c8f7dd09344ab48e9c1adf36fe1638d (patch) | |
tree | a6444794dbfe28d88f0a94733263581cc21171b4 | |
parent | a21e3a2432b8c0c67e1fe7210edcdf9da90f717f (diff) | |
download | nss-hg-fc2befca0c8f7dd09344ab48e9c1adf36fe1638d.tar.gz |
fix output of DER's on windows
-rw-r--r-- | security/nss/cmd/smimetools/cmsutil.c | 22 |
1 files changed, 21 insertions, 1 deletions
diff --git a/security/nss/cmd/smimetools/cmsutil.c b/security/nss/cmd/smimetools/cmsutil.c index b4b726927..1829214fc 100644 --- a/security/nss/cmd/smimetools/cmsutil.c +++ b/security/nss/cmd/smimetools/cmsutil.c @@ -1050,7 +1050,12 @@ main(int argc, char **argv) break; case 'o': - if ((outFile = fopen(optstate->value, "w")) == NULL) { + if (mode == DECODE) { + outFile = fopen(optstate->value, "w"); + } else { + outFile = fopen(optstate->value, "wb"); + } + if (outFile == NULL) { fprintf(stderr, "%s: unable to open \"%s\" for writing\n", progName, optstate->value); exit(1); @@ -1114,6 +1119,21 @@ main(int argc, char **argv) exit(1); } +#if defined(WIN32) + if (outFile == stdout && mode != DECODE) { + /* If we're going to write binary data to stdout, we must put stdout + ** into O_BINARY mode or else incoming \r\n's will become \n's. + */ + int smrv = _setmode(_fileno(stdout), _O_BINARY); + if (smrv == -1) { + fprintf(stderr, + "%s: Cannot change stdout to binary mode. Use -o option instead.\n", + progName); + return smrv; + } + } +#endif + exitstatus = 0; switch (mode) { case DECODE: |