]> git.ipfire.org Git - thirdparty/plymouth.git/commitdiff
Add new ply_buffer_append_from_fd function
authorRay Strode <rstrode@redhat.com>
Mon, 19 May 2008 00:12:38 +0000 (20:12 -0400)
committerRay Strode <rstrode@redhat.com>
Mon, 19 May 2008 00:12:38 +0000 (20:12 -0400)
This function just reads a chunk of bytes from and fd and adds the bytes to the buffer.

src/libply/ply-buffer.c
src/libply/ply-buffer.h

index 69b45ffae31c91bb927cdfecd7d466d846b11aea..eb9e1d73e96884842fecc5b88187d6456d907486 100644 (file)
@@ -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)
 {
index e73a47c47fcfee6c28e0adb520944d96cea0b7c9..d8686a5d15d5040596b73463e2180ac4bfebc55d 100644 (file)
@@ -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)