From: Ray Strode Date: Mon, 19 May 2008 00:12:38 +0000 (-0400) Subject: Add new ply_buffer_append_from_fd function X-Git-Tag: 0.1.0~119 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=49aada170bbb0dfb6c35e3e355050e52ca9ec32f;p=thirdparty%2Fplymouth.git Add new ply_buffer_append_from_fd function This function just reads a chunk of bytes from and fd and adds the bytes to the buffer. --- diff --git a/src/libply/ply-buffer.c b/src/libply/ply-buffer.c index 69b45ffa..eb9e1d73 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 e73a47c4..d8686a5d 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)