From: Rusty Russell Date: Mon, 4 Aug 2008 03:47:09 +0000 (+1000) Subject: merge X-Git-Url: https://git.ozlabs.org/?p=ccan;a=commitdiff_plain;h=16b7eb13fbcb1a04a71622e6310020baccc3c39c;hp=0f126c41cd2e9ccaff5fb7633c079db0bb0e14c3 merge --- diff --git a/ccan/string/string.c b/ccan/string/string.c index b1de8eda..9182ac06 100644 --- a/ccan/string/string.c +++ b/ccan/string/string.c @@ -6,6 +6,10 @@ #include #include "string.h" #include "talloc/talloc.h" +#include +#include +#include +#include char **strsplit(const void *ctx, const char *string, const char *delims, unsigned int *nump) @@ -42,3 +46,51 @@ char *strjoin(const void *ctx, char *strings[], const char *delim) } return ret; } + +static int close_no_errno(int fd) +{ + int ret = 0, serrno = errno; + if (close(fd) < 0) + ret = errno; + errno = serrno; + return ret; +} + +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; +} + +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_no_errno(fd); + return buffer; +} diff --git a/ccan/string/string.h b/ccan/string/string.h index b2cd814c..14a9c2c8 100644 --- a/ccan/string/string.h +++ b/ccan/string/string.h @@ -102,4 +102,8 @@ 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); + +void *grab_file(const void *ctx, const char *filename); #endif /* CCAN_STRING_H */ diff --git a/tools/_infotojson/infotojson.c b/tools/_infotojson/infotojson.c index 86769bbc..460cb7fe 100644 --- a/tools/_infotojson/infotojson.c +++ b/tools/_infotojson/infotojson.c @@ -1,36 +1,6 @@ /* This extract info from _info.c and create json file and also optionally store to db */ #include "infotojson.h" -/* This version adds one byte (for nul term) */ -static void *grab_file(void *ctx, const char *filename) -{ - unsigned int max = 16384, size = 0; - int ret, fd; - char *buffer; - - if (streq(filename, "-")) - fd = dup(STDIN_FILENO); - else - fd = open(filename, O_RDONLY, 0); - - if (fd < 0) - return NULL; - - 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'; - close(fd); - return buffer; -} - /*creating json structure for storing to file/db*/ static struct json *createjson(char **infofile, char *author) { @@ -56,10 +26,6 @@ static struct json *createjson(char **infofile, char *author) if (!jsonobj->module) errx(1, "talloc error"); - //jsonobj->module = (char *)palloc(sizeof(char) * (modulename - 1)); - //strncpy(jsonobj->module, infofile[0], modulename - 1); - //jsonobj->module[modulename - 1] = '\0'; - jsonobj->title = infofile[0]; jsonobj->desc = &infofile[1]; diff --git a/tools/doc_extract.c b/tools/doc_extract.c index aa3f2206..b70325ea 100644 --- a/tools/doc_extract.c +++ b/tools/doc_extract.c @@ -11,35 +11,6 @@ #include "talloc/talloc.h" #include "string/string.h" -/* This version adds one byte (for nul term) */ -static void *grab_file(void *ctx, const char *filename) -{ - unsigned int max = 16384, size = 0; - int ret, fd; - char *buffer; - - if (streq(filename, "-")) - fd = dup(STDIN_FILENO); - else - fd = open(filename, O_RDONLY, 0); - - if (fd < 0) - return NULL; - - 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'; - close(fd); - return buffer; -} int main(int argc, char *argv[]) { diff --git a/tools/grab_file.c b/tools/grab_file.c index 8bd18f22..5a2ff69b 100644 --- a/tools/grab_file.c +++ b/tools/grab_file.c @@ -7,16 +7,16 @@ #include #include -static int close_no_errno(int fd) +/*static int close_no_errno(int fd) { int ret = 0, serrno = errno; if (close(fd) < 0) ret = errno; errno = serrno; return ret; -} +}*/ -void *grab_fd(const void *ctx, int fd) +/*void *grab_fd(const void *ctx, int fd) { int ret; unsigned int max = 16384, size = 0; @@ -35,10 +35,10 @@ void *grab_fd(const void *ctx, int fd) buffer[size] = '\0'; return buffer; -} +}*/ /* This version adds one byte (for nul term) */ -void *grab_file(const void *ctx, const char *filename) +/*void *grab_file(const void *ctx, const char *filename) { int fd; char *buffer; @@ -54,5 +54,5 @@ void *grab_file(const void *ctx, const char *filename) buffer = grab_fd(ctx, fd); close_no_errno(fd); return buffer; -} +}*/ diff --git a/tools/tools.h b/tools/tools.h index fff962c7..f07627eb 100644 --- a/tools/tools.h +++ b/tools/tools.h @@ -5,8 +5,5 @@ char **get_deps(const void *ctx, const char *dir); -void *grab_fd(const void *ctx, int fd); -void *grab_file(const void *ctx, const char *filename); - #endif /* CCAN_TOOLS_H */