Changeset: 25745580bbc5 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=25745580bbc5
Modified Files:
        common/stream/stdio_stream.c
        common/stream/stream.c
Branch: makelibstreamgreatagain
Log Message:

Try to use text_stream to implement open_{r,w}astream

Have to fix getFile to look at inner files,
otherwise initialization of the stdout stream fails in THRinit.


diffs (105 lines):

diff --git a/common/stream/stdio_stream.c b/common/stream/stdio_stream.c
--- a/common/stream/stdio_stream.c
+++ b/common/stream/stdio_stream.c
@@ -710,15 +710,18 @@ file_wastream(FILE *restrict fp, const c
 FILE *
 getFile(stream *s)
 {
+       for (; s != NULL; s = s->inner) {
 #ifdef _MSC_VER
-       if (s->read == console_read)
-               return stdin;
-       if (s->write == console_write)
-               return stdout;
+               if (s->read == console_read)
+                       return stdin;
+               if (s->write == console_write)
+                       return stdout;
 #endif
-       if (s->read != file_read)
-               return NULL;
-       return (FILE *) s->stream_data.p;
+               if (s->read == file_read)
+                       return (FILE *) s->stream_data.p;
+       }
+
+       return NULL;
 }
 
 int
diff --git a/common/stream/stream.c b/common/stream/stream.c
--- a/common/stream/stream.c
+++ b/common/stream/stream.c
@@ -606,58 +606,39 @@ open_wstream(const char *filename)
 stream *
 open_rastream(const char *filename)
 {
-       stream *s;
-       const char *ext;
-
        if (filename == NULL)
                return NULL;
 #ifdef STREAM_DEBUG
        fprintf(stderr, "open_rastream %s\n", filename);
 #endif
-       ext = get_extension(filename);
+       stream *s = open_rstream(filename);
+       if (s == NULL)
+               return NULL;
 
-       if (strcmp(ext, "gz") == 0)
-               return open_gzrastream(filename);
-       if (strcmp(ext, "bz2") == 0)
-               return open_bzrastream(filename);
-       if (strcmp(ext, "xz") == 0)
-               return open_xzrastream(filename);
-       if (strcmp(ext, "lz4") == 0)
-               return open_lz4rastream(filename);
+       stream *t = create_text_stream(s);
+       if (t == NULL)
+               mnstr_close(s);
 
-       if ((s = open_stream(filename, "r")) == NULL)
-               return NULL;
-       s->binary = false;
-       return s;
+       return t;
 }
 
 stream *
 open_wastream(const char *filename)
 {
-       stream *s;
-       const char *ext;
-
        if (filename == NULL)
                return NULL;
 #ifdef STREAM_DEBUG
        fprintf(stderr, "open_wastream %s\n", filename);
 #endif
-       ext = get_extension(filename);
+       stream *s = open_wstream(filename);
+       if (s == NULL)
+               return NULL;
 
-       if (strcmp(ext, "gz") == 0)
-               return open_gzwastream(filename, "w");
-       if (strcmp(ext, "bz2") == 0)
-               return open_bzwastream(filename, "w");
-       if (strcmp(ext, "xz") == 0)
-               return open_xzwastream(filename, "w");
-       if (strcmp(ext, "lz4") == 0)
-               return open_lz4wastream(filename, "w");
+       stream *t = create_text_stream(s);
+       if (t == NULL)
+               mnstr_close(s);
 
-       if ((s = open_stream(filename, "w")) == NULL)
-               return NULL;
-       s->readonly = false;
-       s->binary = false;
-       return s;
+       return t;
 }
 
 
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to