Changeset: eddf52851f2a for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=eddf52851f2a
Modified Files:
common/stream/stream.c
Branch: Jul2017
Log Message:
When opening a compressed file, always use binary mode.
diffs (74 lines):
diff --git a/common/stream/stream.c b/common/stream/stream.c
--- a/common/stream/stream.c
+++ b/common/stream/stream.c
@@ -1329,6 +1329,7 @@ open_bzstream(const char *filename, cons
stream *s;
int err;
struct bz *bzp;
+ char fl[3];
if ((bzp = malloc(sizeof(struct bz))) == NULL)
return NULL;
@@ -1336,10 +1337,13 @@ open_bzstream(const char *filename, cons
free(bzp);
return NULL;
}
+ fl[0] = flags[0]; /* 'r' or 'w' */
+ fl[1] = 'b'; /* always binary */
+ fl[2] = '\0';
#ifdef HAVE__WFOPEN
{
wchar_t *wfname = utf8towchar(filename);
- wchar_t *wflags = utf8towchar(flags);
+ wchar_t *wflags = utf8towchar(fl);
if (wfname != NULL && wflags != NULL)
bzp->f = _wfopen(wfname, wflags);
else
@@ -1353,7 +1357,7 @@ open_bzstream(const char *filename, cons
{
char *fname = cvfilename(filename);
if (fname) {
- bzp->f = fopen(fname, flags);
+ bzp->f = fopen(fname, fl);
free(fname);
} else
bzp->f = NULL;
@@ -1631,11 +1635,10 @@ open_xzstream(const char *filename, cons
stream *s;
xz_stream *xz;
uint32_t preset = 0;
-
- if ((xz = malloc(sizeof(struct xz_stream))) == NULL)
+ char fl[3];
+
+ if ((xz = calloc(1, sizeof(struct xz_stream))) == NULL)
return NULL;
- if (xz)
- memset(xz, 0, sizeof(xz_stream));
if (((flags[0] == 'r' &&
lzma_stream_decoder(&xz->strm, UINT64_MAX, LZMA_CONCATENATED) !=
LZMA_OK)) ||
(flags[0] == 'w' &&
@@ -1647,10 +1650,13 @@ open_xzstream(const char *filename, cons
free(xz);
return NULL;
}
+ fl[0] = flags[0]; /* 'r' or 'w' */
+ fl[1] = 'b'; /* always binary */
+ fl[2] = '\0';
#ifdef HAVE__WFOPEN
{
wchar_t *wfname = utf8towchar(filename);
- wchar_t *wflags = utf8towchar(flags);
+ wchar_t *wflags = utf8towchar(fl);
if (wfname != NULL)
xz->fp = _wfopen(wfname, wflags);
else
@@ -1664,7 +1670,7 @@ open_xzstream(const char *filename, cons
{
char *fname = cvfilename(filename);
if (fname) {
- xz->fp = fopen(fname, flags);
+ xz->fp = fopen(fname, fl);
free(fname);
} else
xz->fp = NULL;
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list