From c3b9af3831762d7548eb1e72cfb62ab95e0d8490 Mon Sep 17 00:00:00 2001 From: "Rafael G. Martins" Date: Sat, 30 May 2020 21:32:05 +0200 Subject: common: bc_stdin_read() should set read length --- src/blogc-git-receiver/pre-receive.c | 5 +++-- src/blogc/main.c | 9 +++++---- src/common/stdin.c | 6 +++++- src/common/stdin.h | 4 +++- 4 files changed, 16 insertions(+), 8 deletions(-) (limited to 'src') diff --git a/src/blogc-git-receiver/pre-receive.c b/src/blogc-git-receiver/pre-receive.c index 76cf1bf..71e84e8 100644 --- a/src/blogc-git-receiver/pre-receive.c +++ b/src/blogc-git-receiver/pre-receive.c @@ -170,8 +170,9 @@ default_sym: bc_strv_free(pieces); } else { - char *input = bc_stdin_read(); - master = bgr_pre_receive_parse(input, strlen(input)); + size_t input_len; + char *input = bc_stdin_read(&input_len); + master = bgr_pre_receive_parse(input, input_len); free(input); } diff --git a/src/blogc/main.c b/src/blogc/main.c index b1ea6a9..628c481 100644 --- a/src/blogc/main.c +++ b/src/blogc/main.c @@ -270,10 +270,11 @@ main(int argc, char **argv) } if (input_stdin) { - char *in = bc_stdin_read(); - bc_slist_t *in_list = blogc_filelist_parse(in, strlen(in)); - free(in); - sources = bc_slist_append_list(sources, in_list); + size_t input_len; + char *input = bc_stdin_read(&input_len); + bc_slist_t *input_list = blogc_filelist_parse(input, input_len); + free(input); + sources = bc_slist_append_list(sources, input_list); } if (!listing && bc_slist_length(sources) == 0) { diff --git a/src/common/stdin.c b/src/common/stdin.c index a460247..c4bf746 100644 --- a/src/common/stdin.c +++ b/src/common/stdin.c @@ -14,11 +14,15 @@ // splitted in single file to make it easier to test char* -bc_stdin_read(void) +bc_stdin_read(size_t *len) { + if (len == NULL) + return NULL; + int c; bc_string_t *rv = bc_string_new(); while (EOF != (c = fgetc(stdin))) bc_string_append_c(rv, c); + *len = rv->len; return bc_string_free(rv, false); } diff --git a/src/common/stdin.h b/src/common/stdin.h index e6bd7a0..be99922 100644 --- a/src/common/stdin.h +++ b/src/common/stdin.h @@ -9,6 +9,8 @@ #ifndef _STDIN_H #define _STDIN_H -char* bc_stdin_read(void); +#include + +char* bc_stdin_read(size_t *len); #endif /* _STDIN_H */ -- cgit v1.2.3-18-g5258