From: Zbigniew Jędrzejewski-Szmek Date: Tue, 19 Mar 2024 17:29:40 +0000 (+0100) Subject: basic/fileio: use strdup_to_full() in read_stripped_line() X-Git-Tag: v256-rc1~459^2~16 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=94b75cdb06aae1e5fe91f5846dbed5781f8d5ecb;p=thirdparty%2Fsystemd.git basic/fileio: use strdup_to_full() in read_stripped_line() The return value of read_stripped_line() is changed. Before we'd return the number of characters read, but that number was not meaningful after we called strstrip(). So just return 0 if nothing was read (EOF), and 1 if something was read (not EOF). All the callers were only checking for <0 or ==0. --- diff --git a/src/basic/fileio.c b/src/basic/fileio.c index 3aadb4bfab9..523378177fb 100644 --- a/src/basic/fileio.c +++ b/src/basic/fileio.c @@ -1504,7 +1504,7 @@ int read_line_full(FILE *f, size_t limit, ReadLineFlags flags, char **ret) { int read_stripped_line(FILE *f, size_t limit, char **ret) { _cleanup_free_ char *s = NULL; - int r; + int r, k; assert(f); @@ -1513,23 +1513,17 @@ int read_stripped_line(FILE *f, size_t limit, char **ret) { return r; if (ret) { - const char *p; - - p = strstrip(s); + const char *p = strstrip(s); if (p == s) *ret = TAKE_PTR(s); else { - char *copy; - - copy = strdup(p); - if (!copy) - return -ENOMEM; - - *ret = copy; + k = strdup_to(ret, p); + if (k < 0) + return k; } } - return r; + return r > 0; /* Return 1 if something was read. */ } int safe_fgetc(FILE *f, char *ret) {