Add read_pipe_all()

Add a convenience function to read from a pipe until all requested data
has been read.
sc_socket.3
Romain Vimont 3 years ago
parent 96b18dabaa
commit 0681480809

@ -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;
}

@ -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);

Loading…
Cancel
Save