On Fri, Nov 14, 2025 at 09:58:57AM +0800, Yumei Huang wrote:
On Fri, Nov 14, 2025 at 8:01 AM Stefano Brivio
wrote: On Mon, 10 Nov 2025 17:31:33 +0800 Yumei Huang
wrote: Signed-off-by: Yumei Huang
Reviewed-by: David Gibson --- util.c | 86 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ util.h | 2 ++ 2 files changed, 88 insertions(+) diff --git a/util.c b/util.c index 44c21a3..c4c849c 100644 --- a/util.c +++ b/util.c @@ -590,6 +590,92 @@ int write_file(const char *path, const char *buf) return len == 0 ? 0 : -1; }
+/** + * read_file() - Read contents of file into a NULL-terminated buffer + * @path: Path to file to read + * @buf: Buffer to store file contents + * @buf_size: Size of buffer + * + * Return: number of bytes read on success, -1 on error, -ENOBUFS on truncation + */ +ssize_t read_file(const char *path, char *buf, size_t buf_size) +{ + int fd = open(path, O_RDONLY | O_CLOEXEC); + size_t total_read = 0; + ssize_t rc; + + if (fd < 0) { + warn_perror("Could not open %s", path); + return -1; + } + + while (total_read < buf_size) { + rc = read(fd, buf + total_read, buf_size - total_read);
cppcheck rightfully says that:
util.c:604:10: style: The scope of the variable 'rc' can be reduced. [variableScope] ssize_t rc; ^
Right. Seems it also says:
tcp.c:2814:0: style: The function 'tcp_get_rto_params' should have static linkage since it is not used outside of its translation unit. [staticFunction] void tcp_get_rto_params(struct ctx *c) ^
Ah, yes, that should be 'static'. Sorry, missed that in earlier reviews.
util.c:601:0: style: The function 'read_file' should have static linkage since it is not used outside of its translation unit. [staticFunction] ssize_t read_file(const char *path, char *buf, size_t buf_size)
I understand read_file() may be called from other places in the future. But do we need to add static now? I guess we need it for tcp_get_rto_params().
It's true that read_file() might be used elsewhere in future. I'd still make it 'static' for now, and we can change that if/when we use it somewhere else. -- David Gibson (he or they) | I'll have my music baroque, and my code david AT gibson.dropbear.id.au | minimalist, thank you, not the other way | around. http://www.ozlabs.org/~dgibson