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

Reply via email to