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. 077270f8fb16ad5dbf33fe


From: Arnold Robbins
Subject: [gawk-diffs] [SCM] gawk branch, extgawk, updated. 077270f8fb16ad5dbf33fe0ff8afedd34fdf435a
Date: Mon, 09 Jul 2012 18:37:52 +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  077270f8fb16ad5dbf33fe0ff8afedd34fdf435a (commit)
      from  7d37bcd5a8066718b15de8c03725708819389931 (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=077270f8fb16ad5dbf33fe0ff8afedd34fdf435a

commit 077270f8fb16ad5dbf33fe0ff8afedd34fdf435a
Author: Arnold D. Robbins <address@hidden>
Date:   Mon Jul 9 21:37:18 2012 +0300

    Change to readfile return value.

diff --git a/extension/ChangeLog b/extension/ChangeLog
index 4022458..7e61fc5 100644
--- a/extension/ChangeLog
+++ b/extension/ChangeLog
@@ -1,3 +1,8 @@
+2012-07-09         Arnold D. Robbins     <address@hidden>
+
+       * filefuncs.c (do_readfile): Return "" and set ERRNO on error
+       instead of returning -1. Per suggestion from Andrew Schorr.
+
 2012-07-08         Arnold D. Robbins     <address@hidden>
 
        * filefuncs.c (array_set): Adjust for change in set_array_element API.
diff --git a/extension/readfile.c b/extension/readfile.c
index 8972303..56bdcbc 100644
--- a/extension/readfile.c
+++ b/extension/readfile.c
@@ -59,16 +59,19 @@ static awk_value_t *
 do_readfile(int nargs, awk_value_t *result)
 {
        awk_value_t filename;
-       double ret = -1;
+       int ret;
        struct stat sbuf;
        char *text;
        int fd;
 
        assert(result != NULL);
+       make_string("", 0, result);     /* default return value */
 
        if (do_lint && nargs > 1)
                lintwarn(ext_id, "readfile: called with too many arguments");
 
+       unset_ERRNO();
+
        if (get_argument(0, AWK_STRING, &filename)) {
                ret = stat(filename.str_value.str, & sbuf);
                if (ret < 0) {
@@ -76,13 +79,11 @@ do_readfile(int nargs, awk_value_t *result)
                        goto done;
                } else if ((sbuf.st_mode & S_IFMT) != S_IFREG) {
                        errno = EINVAL;
-                       ret = -1;
                        update_ERRNO_int(errno);
                        goto done;
                }
 
                if ((fd = open(filename.str_value.str, O_RDONLY|O_BINARY)) < 0) 
{
-                       ret = -1;
                        update_ERRNO_int(errno);
                        goto done;
                }
@@ -92,20 +93,20 @@ do_readfile(int nargs, awk_value_t *result)
 
                if ((ret = read(fd, text, sbuf.st_size)) != sbuf.st_size) {
                        (void) close(fd);
-                       ret = -1;
                        update_ERRNO_int(errno);
                        goto done;
                }
 
                close(fd);
-               return make_string(text, sbuf.st_size, result);
+               make_string(text, sbuf.st_size, result);
+               goto done;
        } else if (do_lint)
                lintwarn(ext_id, "readfile: called with no arguments");
 
 
 done:
        /* Set the return value */
-       return make_number(ret, result);
+       return result;
 }
 
 static awk_ext_func_t func_table[] = {

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

Summary of changes:
 extension/ChangeLog  |    5 +++++
 extension/readfile.c |   13 +++++++------
 2 files changed, 12 insertions(+), 6 deletions(-)


hooks/post-receive
-- 
gawk



reply via email to

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