Changeset: 45c7426a5767 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=45c7426a5767
Modified Files:
common/stream/stream.c
gdk/gdk_atoms.c
gdk/gdk_logger.c
geom/monetdb5/geom.c
monetdb5/modules/atoms/blob.c
monetdb5/modules/atoms/streams.c
Branch: default
Log Message:
Change interface of mnstr_read{Bte,Sht,Int,Lng} to distinguish between error
and EOF.
These functions now return 1 for success, 0 for end of file, and -1
for error.
diffs (179 lines):
diff --git a/common/stream/stream.c b/common/stream/stream.c
--- a/common/stream/stream.c
+++ b/common/stream/stream.c
@@ -2659,9 +2659,14 @@ bs_read(stream *ss, void *buf, size_t el
/* There is nothing more to read in the current block,
* so read the count for the next block */
- if (!mnstr_readSht(s->s, &blksize)) {
+ switch (mnstr_readSht(s->s, &blksize)) {
+ case -1:
ss->errnr = s->s->errnr;
return -1;
+ case 0:
+ return 0;
+ case 1:
+ break;
}
if (blksize < 0) {
ss->errnr = MNSTR_READ_ERROR;
@@ -2719,9 +2724,14 @@ bs_read(stream *ss, void *buf, size_t el
* if the previous was not the last one */
if (s->nr)
break;
- if (!mnstr_readSht(s->s, &blksize)) {
+ switch (mnstr_readSht(s->s, &blksize)) {
+ case -1:
ss->errnr = s->s->errnr;
return -1;
+ case 0:
+ return 0;
+ case 1:
+ break;
}
if (blksize < 0) {
ss->errnr = MNSTR_READ_ERROR;
@@ -2844,17 +2854,7 @@ mnstr_read_block(stream *s, void *buf, s
int
mnstr_readBte(stream *s, signed char *val)
{
- switch (s->read(s, (void *) val, sizeof(*val), 1)) {
- case 1:
- return 1;
- case 0:
- /* consider EOF an error */
- s->errnr = MNSTR_READ_ERROR;
- /* fall through */
- default:
- /* read failed */
- return 0;
- }
+ return s->read(s, (void *) val, sizeof(*val), 1);
}
int
@@ -2874,12 +2874,9 @@ mnstr_readSht(stream *s, short *val)
*val = short_int_SWAP(*val);
return 1;
case 0:
- /* consider EOF an error */
- s->errnr = MNSTR_READ_ERROR;
- /* fall through */
- default:
- /* read failed */
return 0;
+ default: /* -1 */
+ return -1;
}
}
@@ -2900,12 +2897,9 @@ mnstr_readInt(stream *s, int *val)
*val = normal_int_SWAP(*val);
return 1;
case 0:
- /* consider EOF an error */
- s->errnr = MNSTR_READ_ERROR;
- /* fall through */
- default:
- /* read failed */
return 0;
+ default: /* -1 */
+ return -1;
}
}
@@ -2926,12 +2920,9 @@ mnstr_readLng(stream *s, lng *val)
*val = long_long_SWAP(*val);
return 1;
case 0:
- /* consider EOF an error */
- s->errnr = MNSTR_READ_ERROR;
- /* fall through */
- default:
- /* read failed */
return 0;
+ default: /* -1 */
+ return -1;
}
}
diff --git a/gdk/gdk_atoms.c b/gdk/gdk_atoms.c
--- a/gdk/gdk_atoms.c
+++ b/gdk/gdk_atoms.c
@@ -1506,7 +1506,7 @@ strRead(str a, stream *s, size_t cnt)
(void) cnt;
assert(cnt == 1);
- if (!mnstr_readInt(s, &len))
+ if (mnstr_readInt(s, &len) != 1)
return NULL;
if ((a = GDKmalloc(len + 1)) == NULL)
return NULL;
diff --git a/gdk/gdk_logger.c b/gdk/gdk_logger.c
--- a/gdk/gdk_logger.c
+++ b/gdk/gdk_logger.c
@@ -139,8 +139,8 @@ static int
log_read_format(logger *l, logformat *data)
{
return mnstr_read(l->log, &data->flag, 1, 1) == 1 &&
- mnstr_readInt(l->log, &data->nr) &&
- mnstr_readInt(l->log, &data->tid);
+ mnstr_readInt(l->log, &data->nr) == 1 &&
+ mnstr_readInt(l->log, &data->tid) == 1;
}
static int
@@ -160,7 +160,7 @@ log_read_string(logger *l)
ssize_t nr;
char *buf;
- if (!mnstr_readInt(l->log, &len))
+ if (mnstr_readInt(l->log, &len) != 1)
return NULL;
if (len == 0)
return NULL;
@@ -241,7 +241,7 @@ log_read_seq(logger *lg, logformat *l)
lng val;
BUN p;
- if (!mnstr_readLng(lg->log, &val))
+ if (mnstr_readLng(lg->log, &val) != 1)
return LOG_ERR;
if ((p = BUNfndT(lg->seqs_id, &seq)) != BUN_NONE) {
diff --git a/geom/monetdb5/geom.c b/geom/monetdb5/geom.c
--- a/geom/monetdb5/geom.c
+++ b/geom/monetdb5/geom.c
@@ -556,7 +556,7 @@ wkbREAD(wkb *a, stream *s, size_t cnt)
(void) cnt;
assert(cnt == 1);
- if (!mnstr_readInt(s, &len))
+ if (mnstr_readInt(s, &len) != 1)
return NULL;
if ((a = GDKmalloc(wkb_size(len))) == NULL)
return NULL;
diff --git a/monetdb5/modules/atoms/blob.c b/monetdb5/modules/atoms/blob.c
--- a/monetdb5/modules/atoms/blob.c
+++ b/monetdb5/modules/atoms/blob.c
@@ -145,7 +145,7 @@ blob_read(blob *a, stream *s, size_t cnt
(void) cnt;
assert(cnt == 1);
- if (!mnstr_readInt(s, &len))
+ if (mnstr_readInt(s, &len) != 1)
return NULL;
if ((a = GDKmalloc(len)) == NULL)
return NULL;
diff --git a/monetdb5/modules/atoms/streams.c b/monetdb5/modules/atoms/streams.c
--- a/monetdb5/modules/atoms/streams.c
+++ b/monetdb5/modules/atoms/streams.c
@@ -209,7 +209,7 @@ mnstr_readIntwrap(int *ret, Stream *S)
{
stream *s = *(stream **)S;
- if (!mnstr_readInt(s, ret))
+ if (mnstr_readInt(s, ret) != 1)
throw(IO, "streams.readInt", "failed to read int");
return MAL_SUCCEED;
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list