From 8aeb80ab049612adefeafea65aaa038591200944 Mon Sep 17 00:00:00 2001 From: Rusty Russell Date: Fri, 15 Aug 2008 10:48:06 +1000 Subject: [PATCH] grab_fd and grab_file: add a size arg, use everywhere. --- ccan/string/string.c | 22 +++++++----- ccan/string/string.h | 54 ++++++++++++++++++++++++++-- ccan/string/test/run-grab.c | 22 +----------- tools/_infotojson/infotojson.c | 2 +- tools/ccanlint/Makefile | 1 - tools/ccanlint/file_analysis.c | 8 +++-- tools/ccanlint/get_file_lines.c | 60 -------------------------------- tools/create_dep_tar | Bin 58411 -> 58650 bytes tools/create_dep_tar.c | 2 +- tools/depends.c | 2 +- 10 files changed, 75 insertions(+), 98 deletions(-) delete mode 100644 tools/ccanlint/get_file_lines.c diff --git a/ccan/string/string.c b/ccan/string/string.c index 6e473af3..f0d0fd4f 100644 --- a/ccan/string/string.c +++ b/ccan/string/string.c @@ -48,33 +48,37 @@ char *strjoin(const void *ctx, char *strings[], const char *delim) return ret; } -void *grab_fd(const void *ctx, int fd) +void *grab_fd(const void *ctx, int fd, size_t *size) { int ret; - unsigned int max = 16384, size = 0; + size_t max = 16384, s; char *buffer; + if (!size) + size = &s; + *size = 0; + buffer = talloc_array(ctx, char, max+1); - while ((ret = read(fd, buffer + size, max - size)) > 0) { - size += ret; - if (size == max) + while ((ret = read(fd, buffer + *size, max - *size)) > 0) { + *size += ret; + if (*size == max) buffer = talloc_realloc(ctx, buffer, char, max*=2 + 1); } if (ret < 0) { talloc_free(buffer); buffer = NULL; } else - buffer[size] = '\0'; + buffer[*size] = '\0'; return buffer; } -void *grab_file(const void *ctx, const char *filename) +void *grab_file(const void *ctx, const char *filename, size_t *size) { int fd; char *buffer; - if (streq(filename, "-")) + if (!filename) fd = dup(STDIN_FILENO); else fd = open(filename, O_RDONLY, 0); @@ -82,7 +86,7 @@ void *grab_file(const void *ctx, const char *filename) if (fd < 0) return NULL; - buffer = grab_fd(ctx, fd); + buffer = grab_fd(ctx, fd, size); close_noerr(fd); return buffer; } diff --git a/ccan/string/string.h b/ccan/string/string.h index 14a9c2c8..3bc7adfd 100644 --- a/ccan/string/string.h +++ b/ccan/string/string.h @@ -103,7 +103,57 @@ char **strsplit(const void *ctx, const char *string, const char *delims, */ char *strjoin(const void *ctx, char *strings[], const char *delim); -void *grab_fd(const void *ctx, int fd); +/** + * grab_fd - read all of a file descriptor into memory + * @ctx: the context to tallocate from (often NULL) + * @fd: the file descriptor to read from + * @size: the (optional) size of the file + * + * This function reads from the given file descriptor until no more + * input is available. The content is talloced off @ctx, and the size + * of the file places in @size if it's non-NULL. For convenience, the + * byte after the end of the content will always be NUL. + * + * Example: + * // Return all of standard input, as lines. + * char **read_as_lines(void) + * { + * char **lines, *all; + * + * all = grab_fd(NULL, 0, NULL); + * if (!all) + * return NULL; + * lines = strsplit(NULL, all, "\n", NULL); + * talloc_free(all); + * return lines; + * } + */ +void *grab_fd(const void *ctx, int fd, size_t *size); -void *grab_file(const void *ctx, const char *filename); +/** + * grab_file - read all of a file (or stdin) into memory + * @ctx: the context to tallocate from (often NULL) + * @filename: the file to read (NULL for stdin) + * @size: the (optional) size of the file + * + * This function reads from the given file until no more input is + * available. The content is talloced off @ctx, and the size of the + * file places in @size if it's non-NULL. For convenience, the byte + * after the end of the content will always be NUL. + * + * Example: + * // Return all of a given file, as lines. + * char **read_as_lines(const char *filename) + * { + * char **lines, *all; + * + * all = grab_file(NULL, filename, NULL); + * if (!all) + * return NULL; + * lines = strsplit(NULL, all, "\n", NULL); + * talloc_free(all); + * return lines; + * } + */ +void *grab_file(const void *ctx, const char *filename, size_t *size); #endif /* CCAN_STRING_H */ diff --git a/ccan/string/test/run-grab.c b/ccan/string/test/run-grab.c index 96b9dac8..2b36a0fb 100644 --- a/ccan/string/test/run-grab.c +++ b/ccan/string/test/run-grab.c @@ -1,24 +1,4 @@ /* This is test for grab_file() function - * - * Example: - * - * void *grab_file(const void *ctx, const char *filename) - * { - * int fd; - * char *buffer; - * - * if (streq(filename, "-")) - * fd = dup(STDIN_FILENO); - * else - * fd = open(filename, O_RDONLY, 0); - * - * if (fd < 0) - * return NULL; - * - * buffer = grab_fd(ctx, fd); - * close_noerr(fd); - * return buffer; - * } */ #include @@ -37,7 +17,7 @@ main(int argc, char *argv[]) int length; struct stat st; - str = grab_file(NULL, "ccan/string/test/run-grab.c"); + str = grab_file(NULL, "ccan/string/test/run-grab.c", NULL); split = strsplit(NULL, str, "\n", NULL); length = strlen(split[0]); ok1(streq(split[0], "/* This is test for grab_file() function")); diff --git a/tools/_infotojson/infotojson.c b/tools/_infotojson/infotojson.c index f1493cba..4f21602c 100644 --- a/tools/_infotojson/infotojson.c +++ b/tools/_infotojson/infotojson.c @@ -129,7 +129,7 @@ int main(int argc, char *argv[]) errx(1, "usage: infotojson dir_of_module info_filename target_json_file author [sqlitedb]\n" "Convert _info.c file to json file and optionally store to database"); - file = grab_file(NULL, argv[2]); + file = grab_file(NULL, argv[2], NULL); if (!file) err(1, "Reading file %s", argv[2]); diff --git a/tools/ccanlint/Makefile b/tools/ccanlint/Makefile index 40c26a83..4cc50440 100644 --- a/tools/ccanlint/Makefile +++ b/tools/ccanlint/Makefile @@ -22,7 +22,6 @@ tools/ccanlint/ccanlint.o: tools/ccanlint/generated-init-tests tools/ccanlint/ccanlint: \ $(OBJS) \ tools/ccanlint/ccanlint.o \ - tools/ccanlint/get_file_lines.o \ tools/ccanlint/file_analysis.o \ ccan/string/string.o ccan/talloc/talloc.o ccan/noerr/noerr.o diff --git a/tools/ccanlint/file_analysis.c b/tools/ccanlint/file_analysis.c index 1341e57b..bee99597 100644 --- a/tools/ccanlint/file_analysis.c +++ b/tools/ccanlint/file_analysis.c @@ -13,8 +13,12 @@ char **get_ccan_file_lines(struct ccan_file *f) { - if (!f->lines) - f->lines = get_file_lines(f, f->name, &f->num_lines); + if (!f->lines) { + char *buffer = grab_file(f, f->name, NULL); + if (!buffer) + err(1, "Getting file %s", f->name); + f->lines = strsplit(f, buffer, "\n", &f->num_lines); + } return f->lines; } diff --git a/tools/ccanlint/get_file_lines.c b/tools/ccanlint/get_file_lines.c deleted file mode 100644 index 2f27a012..00000000 --- a/tools/ccanlint/get_file_lines.c +++ /dev/null @@ -1,60 +0,0 @@ -#include "get_file_lines.h" -#include -#include -#include -#include -#include -#include -#include -#include -#include - -static void *grab_fd(const void *ctx, int fd) -{ - int ret; - unsigned int max = 16384, size = 0; - char *buffer; - - buffer = talloc_array(ctx, char, max+1); - while ((ret = read(fd, buffer + size, max - size)) > 0) { - size += ret; - if (size == max) - buffer = talloc_realloc(ctx, buffer, char, max*=2 + 1); - } - if (ret < 0) { - talloc_free(buffer); - buffer = NULL; - } else - buffer[size] = '\0'; - - return buffer; -} - -/* This version adds one byte (for nul term) */ -static void *grab_file(const void *ctx, const char *filename) -{ - int fd; - char *buffer; - - if (streq(filename, "-")) - fd = dup(STDIN_FILENO); - else - fd = open(filename, O_RDONLY, 0); - - if (fd < 0) - return NULL; - - buffer = grab_fd(ctx, fd); - close_noerr(fd); - return buffer; -} - -char **get_file_lines(void *ctx, const char *name, unsigned int *num_lines) -{ - char *buffer = grab_file(ctx, name); - - if (!buffer) - err(1, "Getting file %s", name); - - return strsplit(buffer, buffer, "\n", num_lines); -} diff --git a/tools/create_dep_tar b/tools/create_dep_tar index 715fb6ba856c2d501e41284ea4852fe9ba7100db..29f15400ee8d0a48d584075527e9f52c2e8ecaff 100755 GIT binary patch literal 58650 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