diff options
| author | Ray Strode <rstrode@redhat.com> | 2008-05-18 20:12:38 -0400 |
|---|---|---|
| committer | Ray Strode <rstrode@redhat.com> | 2008-05-18 20:12:38 -0400 |
| commit | 49aada170bbb0dfb6c35e3e355050e52ca9ec32f (patch) | |
| tree | 14637c5acb844c8d469fc4ea55b88b4ab7c2f589 /src | |
| parent | 05dd70498594e6ba1da6c2f14a8820bdcc2eee41 (diff) | |
| download | plymouth-49aada170bbb0dfb6c35e3e355050e52ca9ec32f.tar.gz plymouth-49aada170bbb0dfb6c35e3e355050e52ca9ec32f.tar.xz plymouth-49aada170bbb0dfb6c35e3e355050e52ca9ec32f.zip | |
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.
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) |
