gawk-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[gawk-diffs] [SCM] gawk branch, extgawk, updated. 8969981b6c3b77527db5de


From: Arnold Robbins
Subject: [gawk-diffs] [SCM] gawk branch, extgawk, updated. 8969981b6c3b77527db5dea2b7f7650e3fc5e083
Date: Tue, 31 Jul 2012 19:46:30 +0000

This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "gawk".

The branch, extgawk has been updated
       via  8969981b6c3b77527db5dea2b7f7650e3fc5e083 (commit)
      from  60cc3b626b5c6cdd4612691c1437172a4d6017bd (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
http://git.sv.gnu.org/cgit/gawk.git/commit/?id=8969981b6c3b77527db5dea2b7f7650e3fc5e083

commit 8969981b6c3b77527db5dea2b7f7650e3fc5e083
Author: Arnold D. Robbins <address@hidden>
Date:   Tue Jul 31 22:46:06 2012 +0300

    Rework rwarray.c to use stdio, for cygwin.

diff --git a/extension/ChangeLog b/extension/ChangeLog
index 76b96f6..40355ef 100644
--- a/extension/ChangeLog
+++ b/extension/ChangeLog
@@ -1,3 +1,9 @@
+2012-07-31         Arnold D. Robbins     <address@hidden>
+
+       * rwarray0.c: Renamed from rwarray.c.
+       * rwarray.c: New file using stdio instead of system calls,
+       works on cygwin.
+
 2012-07-30         Arnold D. Robbins     <address@hidden>
 
        * ABOUT-NLS: New file.
diff --git a/extension/rwarray.c b/extension/rwarray.c
index 75c735a..e45a499 100644
--- a/extension/rwarray.c
+++ b/extension/rwarray.c
@@ -55,13 +55,13 @@ static awk_bool_t (*init_func)(void) = NULL;
 
 int plugin_is_GPL_compatible;
 
-static awk_bool_t write_array(int fd, awk_array_t array);
-static awk_bool_t write_elem(int fd, awk_element_t *element);
-static awk_bool_t write_value(int fd, awk_value_t *val);
+static awk_bool_t write_array(FILE *fp, awk_array_t array);
+static awk_bool_t write_elem(FILE *fp, awk_element_t *element);
+static awk_bool_t write_value(FILE *fp, awk_value_t *val);
 
-static awk_bool_t read_array(int fd, awk_array_t array);
-static awk_bool_t read_elem(int fd, awk_element_t *element);
-static awk_bool_t read_value(int fd, awk_value_t *value);
+static awk_bool_t read_array(FILE *fp, awk_array_t array);
+static awk_bool_t read_elem(FILE *fp, awk_element_t *element);
+static awk_bool_t read_value(FILE *fp, awk_value_t *value);
 
 /*
  * Format of array info:
@@ -93,7 +93,7 @@ static awk_value_t *
 do_writea(int nargs, awk_value_t *result)
 {
        awk_value_t filename, array;
-       int fd = -1;
+       FILE *fp;
        uint32_t major = MAJOR;
        uint32_t minor = MINOR;
 
@@ -120,22 +120,22 @@ do_writea(int nargs, awk_value_t *result)
        }
 
        /* open the file, if error, set ERRNO and return */
-       fd = creat(filename.str_value.str, 0600);
-       if (fd < 0)
+       fp = fopen(filename.str_value.str, "wb");
+       if (fp == NULL)
                goto done1;
 
-       if (write(fd, MAGIC, strlen(MAGIC)) != strlen(MAGIC))
+       if (fwrite(MAGIC, 1, strlen(MAGIC), fp) != strlen(MAGIC))
                goto done1;
 
        major = htonl(major);
-       if (write(fd, & major, sizeof(major)) != sizeof(major))
+       if (fwrite(& major, 1, sizeof(major), fp) != sizeof(major))
                goto done1;
 
        minor = htonl(minor);
-       if (write(fd, & minor, sizeof(minor)) != sizeof(minor))
+       if (fwrite(& minor, 1, sizeof(minor), fp) != sizeof(minor))
                goto done1;
 
-       if (write_array(fd, array.array_cookie)) {
+       if (write_array(fp, array.array_cookie)) {
                make_number(1.0, result);
                goto done0;
        }
@@ -145,7 +145,7 @@ done1:
        unlink(filename.str_value.str);
 
 done0:
-       close(fd);
+       fclose(fp);
 out:
        return result;
 }
@@ -154,7 +154,7 @@ out:
 /* write_array --- write out an array or a sub-array */
 
 static awk_bool_t
-write_array(int fd, awk_array_t array)
+write_array(FILE *fp, awk_array_t array)
 {
        uint32_t i;
        uint32_t count;
@@ -166,11 +166,11 @@ write_array(int fd, awk_array_t array)
        }
 
        count = htonl(flat_array->count);
-       if (write(fd, & count, sizeof(count)) != sizeof(count))
+       if (fwrite(& count, 1, sizeof(count), fp) != sizeof(count))
                return 0;
 
        for (i = 0; i < flat_array->count; i++) {
-               if (! write_elem(fd, & flat_array->elements[i]))
+               if (! write_elem(fp, & flat_array->elements[i]))
                        return 0;
        }
 
@@ -185,56 +185,56 @@ write_array(int fd, awk_array_t array)
 /* write_elem --- write out a single element */
 
 static awk_bool_t
-write_elem(int fd, awk_element_t *element)
+write_elem(FILE *fp, awk_element_t *element)
 {
        uint32_t indexval_len;
        ssize_t write_count;
 
        indexval_len = htonl(element->index.str_value.len);
-       if (write(fd, & indexval_len, sizeof(indexval_len)) != 
sizeof(indexval_len))
+       if (fwrite(& indexval_len, 1, sizeof(indexval_len), fp) != 
sizeof(indexval_len))
                return 0;
 
        if (element->index.str_value.len > 0) {
-               write_count = write(fd, element->index.str_value.str,
-                               element->index.str_value.len);
+               write_count = fwrite(element->index.str_value.str,
+                               1, element->index.str_value.len, fp);
                if (write_count != (ssize_t) element->index.str_value.len)
                        return 0;
        }
 
-       return write_value(fd, & element->value);
+       return write_value(fp, & element->value);
 }
 
 /* write_value --- write a number or a string or a array */
 
 static int
-write_value(int fd, awk_value_t *val)
+write_value(FILE *fp, awk_value_t *val)
 {
        uint32_t code, len;
 
        if (val->val_type == AWK_ARRAY) {
                code = htonl(2);
-               if (write(fd, & code, sizeof(code)) != sizeof(code))
+               if (fwrite(& code, 1, sizeof(code), fp) != sizeof(code))
                        return 0;
-               return write_array(fd, val->array_cookie);
+               return write_array(fp, val->array_cookie);
        }
 
        if (val->val_type == AWK_NUMBER) {
                code = htonl(1);
-               if (write(fd, & code, sizeof(code)) != sizeof(code))
+               if (fwrite(& code, 1, sizeof(code), fp) != sizeof(code))
                        return 0;
 
-               if (write(fd, & val->num_value, sizeof(val->num_value)) != 
sizeof(val->num_value))
+               if (fwrite(& val->num_value, 1, sizeof(val->num_value), fp) != 
sizeof(val->num_value))
                        return 0;
        } else {
                code = 0;
-               if (write(fd, & code, sizeof(code)) != sizeof(code))
+               if (fwrite(& code, 1, sizeof(code), fp) != sizeof(code))
                        return 0;
 
                len = htonl(val->str_value.len);
-               if (write(fd, & len, sizeof(len)) != sizeof(len))
+               if (fwrite(& len, 1, sizeof(len), fp) != sizeof(len))
                        return 0;
 
-               if (write(fd, val->str_value.str, val->str_value.len)
+               if (fwrite(val->str_value.str, 1, val->str_value.len, fp)
                                != (ssize_t) val->str_value.len)
                        return 0;
        }
@@ -248,7 +248,7 @@ static awk_value_t *
 do_reada(int nargs, awk_value_t *result)
 {
        awk_value_t filename, array;
-       int fd = -1;
+       FILE *fp = NULL;
        uint32_t major;
        uint32_t minor;
        char magic_buf[30];
@@ -275,12 +275,12 @@ do_reada(int nargs, awk_value_t *result)
                goto done1;
        }
 
-       fd = open(filename.str_value.str, O_RDONLY);
-       if (fd < 0)
+       fp = fopen(filename.str_value.str, "rb");
+       if (fp == NULL)
                goto done1;
 
        memset(magic_buf, '\0', sizeof(magic_buf));
-       if (read(fd, magic_buf, strlen(MAGIC)) != strlen(MAGIC)) {
+       if (fread(magic_buf, 1, strlen(MAGIC), fp) != strlen(MAGIC)) {
                errno = EBADF;
                goto done1;
        }
@@ -290,7 +290,7 @@ do_reada(int nargs, awk_value_t *result)
                goto done1;
        }
 
-       if (read(fd, & major, sizeof(major)) != sizeof(major)) {
+       if (fread(& major, 1, sizeof(major), fp) != sizeof(major)) {
                errno = EBADF;
                goto done1;
        }
@@ -301,7 +301,7 @@ do_reada(int nargs, awk_value_t *result)
                goto done1;
        }
 
-       if (read(fd, & minor, sizeof(minor)) != sizeof(minor)) {
+       if (fread(& minor, 1, sizeof(minor), fp) != sizeof(minor)) {
                /* read() sets errno */
                goto done1;
        }
@@ -318,7 +318,7 @@ do_reada(int nargs, awk_value_t *result)
                goto done1;
        }
 
-       if (read_array(fd, array.array_cookie)) {
+       if (read_array(fp, array.array_cookie)) {
                make_number(1.0, result);
                goto done0;
        }
@@ -326,7 +326,8 @@ do_reada(int nargs, awk_value_t *result)
 done1:
        update_ERRNO_int(errno);
 done0:
-       close(fd);
+       if (fp != NULL)
+               fclose(fp);
 out:
        return result;
 }
@@ -335,19 +336,19 @@ out:
 /* read_array --- read in an array or sub-array */
 
 static awk_bool_t
-read_array(int fd, awk_array_t array)
+read_array(FILE *fp, awk_array_t array)
 {
        uint32_t i;
        uint32_t count;
        awk_element_t new_elem;
 
-       if (read(fd, & count, sizeof(count)) != sizeof(count)) {
+       if (fread(& count, 1, sizeof(count), fp) != sizeof(count)) {
                return 0;
        }
        count = ntohl(count);
 
        for (i = 0; i < count; i++) {
-               if (read_elem(fd, & new_elem)) {
+               if (read_elem(fp, & new_elem)) {
                        /* add to array */
                        if (! set_array_element_by_elem(array, & new_elem)) {
                                fprintf(stderr, _("read_array: 
set_array_element failed\n"));
@@ -366,14 +367,14 @@ read_array(int fd, awk_array_t array)
 /* read_elem --- read in a single element */
 
 static awk_bool_t
-read_elem(int fd, awk_element_t *element)
+read_elem(FILE *fp, awk_element_t *element)
 {
        uint32_t index_len;
        static char *buffer;
        static uint32_t buflen;
        ssize_t ret;
 
-       if ((ret = read(fd, & index_len, sizeof(index_len))) != 
sizeof(index_len)) {
+       if ((ret = fread(& index_len, 1, sizeof(index_len), fp)) != 
sizeof(index_len)) {
                return 0;
        }
        index_len = ntohl(index_len);
@@ -396,7 +397,7 @@ read_elem(int fd, awk_element_t *element)
                        buflen = index_len;
                }
 
-               if (read(fd, buffer, index_len) != (ssize_t) index_len) {
+               if (fread(buffer, 1, index_len, fp) != (ssize_t) index_len) {
                        return 0;
                }
                make_const_string(buffer, index_len, & element->index);
@@ -404,7 +405,7 @@ read_elem(int fd, awk_element_t *element)
                make_null_string(& element->index);
        }
 
-       if (! read_value(fd, & element->value))
+       if (! read_value(fp, & element->value))
                return 0;
 
        return 1;
@@ -413,11 +414,11 @@ read_elem(int fd, awk_element_t *element)
 /* read_value --- read a number or a string */
 
 static awk_bool_t
-read_value(int fd, awk_value_t *value)
+read_value(FILE *fp, awk_value_t *value)
 {
        uint32_t code, len;
 
-       if (read(fd, & code, sizeof(code)) != sizeof(code))
+       if (fread(& code, 1, sizeof(code), fp) != sizeof(code))
                return 0;
 
        code = ntohl(code);
@@ -425,7 +426,7 @@ read_value(int fd, awk_value_t *value)
        if (code == 2) {
                awk_array_t array = create_array();
 
-               if (read_array(fd, array) != 0)
+               if (read_array(fp, array) != 0)
                        return 0; 
 
                /* hook into value */
@@ -434,14 +435,14 @@ read_value(int fd, awk_value_t *value)
        } else if (code == 1) {
                double d;
 
-               if (read(fd, & d, sizeof(d)) != sizeof(d))
+               if (fread(& d, 1, sizeof(d), fp) != sizeof(d))
                        return 0;
 
                /* hook into value */
                value->val_type = AWK_NUMBER;
                value->num_value = d;
        } else {
-               if (read(fd, & len, sizeof(len)) != sizeof(len)) {
+               if (fread(& len, 1, sizeof(len), fp) != sizeof(len)) {
                        return 0;
                }
                len = ntohl(len);
@@ -450,7 +451,7 @@ read_value(int fd, awk_value_t *value)
                value->str_value.str = malloc(len + 2);
                memset(value->str_value.str, '\0', len + 2);
 
-               if (read(fd, value->str_value.str, len) != (ssize_t) len) {
+               if (fread(value->str_value.str, 1, len, fp) != (ssize_t) len) {
                        free(value->str_value.str);
                        return 0;
                }
diff --git a/extension/rwarray.c b/extension/rwarray0.c
similarity index 100%
copy from extension/rwarray.c
copy to extension/rwarray0.c

-----------------------------------------------------------------------

Summary of changes:
 extension/ChangeLog                 |    6 ++
 extension/rwarray.c                 |  103 ++++++++++++++++++-----------------
 extension/{rwarray.c => rwarray0.c} |    0
 3 files changed, 58 insertions(+), 51 deletions(-)
 copy extension/{rwarray.c => rwarray0.c} (100%)


hooks/post-receive
-- 
gawk



reply via email to

[Prev in Thread] Current Thread [Next in Thread]