diff options
author | Arnold D. Robbins <arnold@skeeve.com> | 2010-11-18 23:00:31 +0200 |
---|---|---|
committer | Arnold D. Robbins <arnold@skeeve.com> | 2010-11-18 23:00:31 +0200 |
commit | 6f3612539c425da2bc1d34db621696e6a273b01c (patch) | |
tree | 9623b3ac2c54a93e5eed3be2b1dda7f4e4bf0e47 /extension/readfile.c | |
parent | 4e3701015635401df2fc4da58abaab7645f4ebd3 (diff) | |
download | egawk-6f3612539c425da2bc1d34db621696e6a273b01c.tar.gz egawk-6f3612539c425da2bc1d34db621696e6a273b01c.tar.bz2 egawk-6f3612539c425da2bc1d34db621696e6a273b01c.zip |
Bring latest byte code gawk into git. Hurray!
Diffstat (limited to 'extension/readfile.c')
-rw-r--r-- | extension/readfile.c | 20 |
1 files changed, 5 insertions, 15 deletions
diff --git a/extension/readfile.c b/extension/readfile.c index 37f39a2c..edab20f8 100644 --- a/extension/readfile.c +++ b/extension/readfile.c @@ -40,8 +40,7 @@ /* do_readfile --- read a file into memory */ NODE * -do_readfile(tree) -NODE *tree; +do_readfile(int nargs) { NODE *filename; int ret = -1; @@ -52,27 +51,24 @@ NODE *tree; if (do_lint && get_curfunc_arg_count() > 1) lintwarn("readfile: called with too many arguments"); - filename = get_argument(tree, 0); + filename = get_scalar_argument(0, FALSE); if (filename != NULL) { (void) force_string(filename); ret = stat(filename->stptr, & sbuf); if (ret < 0) { update_ERRNO(); - free_temp(filename); goto done; } else if ((sbuf.st_mode & S_IFMT) != S_IFREG) { errno = EINVAL; ret = -1; update_ERRNO(); - free_temp(filename); goto done; } if ((fd = open(filename->stptr, O_RDONLY|O_BINARY)) < 0) { ret = -1; update_ERRNO(); - free_temp(filename); goto done; } @@ -83,24 +79,18 @@ NODE *tree; (void) close(fd); ret = -1; update_ERRNO(); - free_temp(filename); goto done; } close(fd); - free_temp(filename); - set_value(tmp_string(text, sbuf.st_size)); - return tmp_number((AWKNUM) 0); + return make_string(text, sbuf.st_size); } else if (do_lint) lintwarn("filename: called with no arguments"); done: /* Set the return value */ - set_value(tmp_number((AWKNUM) ret)); - - /* Just to make the interpreter happy */ - return tmp_number((AWKNUM) 0); + return make_number((AWKNUM) ret); } @@ -113,5 +103,5 @@ void *dl; { make_builtin("readfile", do_readfile, 1); - return tmp_number((AWKNUM) 0); + return make_number((AWKNUM) 0); } |