Changeset: 7ad0b3193bd2 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=7ad0b3193bd2
Added Files:
common/stream/compressed.c
Modified Files:
common/stream/Makefile.ag
common/stream/stream.h
Branch: makelibstreamgreatagain
Log Message:
Introduce compressed_stream
which automatically picks a compression algorithm based on the stream name.
diffs (65 lines):
diff --git a/common/stream/Makefile.ag b/common/stream/Makefile.ag
--- a/common/stream/Makefile.ag
+++ b/common/stream/Makefile.ag
@@ -20,7 +20,7 @@ lib_stream = {
SOURCES = stream.c rw.c bstream.c \
bs.c bs2.c \
stdio_stream.c \
- gz_stream.c bz2_stream.c xz_stream.c lz4_stream.c \
+ compressed.c gz_stream.c bz2_stream.c xz_stream.c lz4_stream.c \
url_stream.c socket_stream.c \
memio.c callback.c blackhole.c fwf.c \
iconv_stream.c \
diff --git a/common/stream/compressed.c b/common/stream/compressed.c
new file mode 100644
--- /dev/null
+++ b/common/stream/compressed.c
@@ -0,0 +1,36 @@
+/*
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ *
+ * Copyright 1997 - July 2008 CWI, August 2008 - 2020 MonetDB B.V.
+ */
+
+#include "monetdb_config.h"
+#include "stream.h"
+#include "stream_internal.h"
+
+
+stream *
+compressed_stream(stream *inner, int level)
+{
+ if (inner == NULL)
+ return NULL;
+
+ char *filename = mnstr_name(inner);
+ if (filename == NULL)
+ return inner;
+
+ const char *ext = get_extension(filename);
+ if (strcmp(ext, "gz") == 0)
+ return gz_stream(inner, level);
+ if (strcmp(ext, "bz2") == 0)
+ return bz2_stream(inner, level);
+ if (strcmp(ext, "xz") == 0)
+ return xz_stream(inner, level);
+ if (strcmp(ext, "lz4") == 0)
+ return lz4_stream(inner, level);
+
+ return inner;
+
+}
\ No newline at end of file
diff --git a/common/stream/stream.h b/common/stream/stream.h
--- a/common/stream/stream.h
+++ b/common/stream/stream.h
@@ -168,6 +168,7 @@ stream_export stream *xz_stream(stream *
stream_export stream *gz_stream(stream *inner, int preset);
stream_export stream *bz2_stream(stream *inner, int preset);
stream_export stream *lz4_stream(stream *inner, int preset);
+stream_export stream *compressed_stream(stream *inner, int preset);
stream_export FILE *getFile(stream *s); // gdk_logger.c progress messages
stream_export int getFileNo(stream *s); /* fileno(getFile(s)) */ //
mclient.c, gdk_logger.c progress messages
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list