diff --git a/app/src/util/process.c b/app/src/util/process.c index a9af4d67..5d572c26 100644 --- a/app/src/util/process.c +++ b/app/src/util/process.c @@ -61,3 +61,18 @@ get_local_file_path(const char *name) { return file_path; } + +ssize_t +read_pipe_all(pipe_t pipe, char *data, size_t len) { + size_t copied = 0; + while (len > 0) { + ssize_t r = read_pipe(pipe, data, len); + if (r <= 0) { + return copied ? (ssize_t) copied : r; + } + len -= r; + data += r; + copied += r; + } + return copied; +} diff --git a/app/src/util/process.h b/app/src/util/process.h index a21374b6..d6471a16 100644 --- a/app/src/util/process.h +++ b/app/src/util/process.h @@ -96,6 +96,9 @@ is_regular_file(const char *path); ssize_t read_pipe(pipe_t pipe, char *data, size_t len); +ssize_t +read_pipe_all(pipe_t pipe, char *data, size_t len); + void close_pipe(pipe_t pipe);