diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/libply/ply-buffer.c | 20 | ||||
| -rw-r--r-- | src/libply/ply-buffer.h | 3 |
2 files changed, 23 insertions, 0 deletions
diff --git a/src/libply/ply-buffer.c b/src/libply/ply-buffer.c index 69b45ff..eb9e1d7 100644 --- a/src/libply/ply-buffer.c +++ b/src/libply/ply-buffer.c @@ -192,6 +192,26 @@ ply_buffer_append_bytes (ply_buffer_t *buffer, buffer->size += length; } +void +ply_buffer_append_from_fd (ply_buffer_t *buffer, + int fd) +{ + + char bytes[PLY_BUFFER_MAX_APPEND_SIZE] = ""; + ssize_t bytes_read; + + assert (buffer != NULL); + assert (fd >= 0); + + if (!ply_fd_has_data (fd)) + return; + + bytes_read = read (fd, bytes, sizeof (bytes)); + + if (bytes_read > 0) + ply_buffer_append_bytes (buffer, bytes, bytes_read); +} + const char * ply_buffer_get_bytes (ply_buffer_t *buffer) { diff --git a/src/libply/ply-buffer.h b/src/libply/ply-buffer.h index e73a47c..d8686a5 100644 --- a/src/libply/ply-buffer.h +++ b/src/libply/ply-buffer.h @@ -34,6 +34,9 @@ void ply_buffer_free (ply_buffer_t *buffer); void ply_buffer_append_bytes (ply_buffer_t *buffer, const void *bytes, size_t number_of_bytes); + +void ply_buffer_append_from_fd (ply_buffer_t *buffer, + int fd); #define ply_buffer_append(buffer, format, args...) \ ply_buffer_append_with_non_literal_format_string (buffer, \ format "", ##args) |
