Read a FILE* till an empty line or eof and return it as a char buffer.
authorGlenn L McGrath <bug1@ihug.co.nz>
Sun, 15 Apr 2001 12:36:19 +0000 (12:36 -0000)
committerGlenn L McGrath <bug1@ihug.co.nz>
Sun, 15 Apr 2001 12:36:19 +0000 (12:36 -0000)
In future maybe add char *end_str to interface to allow calling function
to specify end point.

libbb/read_text_file_to_buffer.c [new file with mode: 0644]

diff --git a/libbb/read_text_file_to_buffer.c b/libbb/read_text_file_to_buffer.c
new file mode 100644 (file)
index 0000000..ef64ad7
--- /dev/null
@@ -0,0 +1,38 @@
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include "libbb.h"
+
+/*
+ * Reads consecutive lines from file line that start with end_string
+ * read finishes at an empty line or eof
+ */
+extern char *read_text_file_to_buffer(FILE *src_file)
+{
+       char *line = NULL;
+       char *buffer = NULL;
+       int buffer_length = 0;
+       int line_length = 0;
+
+       buffer = xmalloc(1);
+       strcpy(buffer, "");
+
+       /* Loop until line is empty, or just one char, which will be '\n' */
+       do {
+               line = get_line_from_file(src_file);
+               if (line == NULL) {
+                       break;
+               }
+               line_length = strlen(line);
+               buffer_length += line_length + 1;
+               buffer = (char *) xrealloc(buffer, buffer_length + 1);
+               strcat(buffer, line);
+               free(line);
+       } while (line_length > 1);
+
+       if (strlen(buffer) == 0) {
+               return(NULL);
+       } else {
+               return(strdup(buffer));
+       }
+}
\ No newline at end of file