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