aboutsummaryrefslogtreecommitdiffstats
path: root/StringUtils.c
diff options
context:
space:
mode:
Diffstat (limited to 'StringUtils.c')
-rw-r--r--StringUtils.c29
1 files changed, 28 insertions, 1 deletions
diff --git a/StringUtils.c b/StringUtils.c
index 4465fb1..b53f5ee 100644
--- a/StringUtils.c
+++ b/StringUtils.c
@@ -13,9 +13,10 @@ in the source distribution for its full text.
#include <string.h>
#include <strings.h>
#include <stdlib.h>
-#include <stdio.h>
/*{
+#include <stdio.h>
+
#define String_startsWith(s, match) (strstr((s), (match)) == (s))
#define String_contains_i(s1, s2) (strcasestr(s1, s2) != NULL)
}*/
@@ -119,3 +120,29 @@ char* String_getToken(const char* line, const unsigned short int numMatch) {
match[foundCount] = '\0';
return((char*)xStrdup(match));
}
+
+char* String_readLine(FILE* fd) {
+ const int step = 1024;
+ int bufSize = step;
+ char* buffer = xMalloc(step + 1);
+ char* at = buffer;
+ for (;;) {
+ char* ok = fgets(at, step + 1, fd);
+ if (!ok) {
+ free(buffer);
+ return NULL;
+ }
+ char* newLine = strrchr(at, '\n');
+ if (newLine) {
+ *newLine = '\0';
+ return buffer;
+ } else {
+ if (feof(fd)) {
+ return buffer;
+ }
+ }
+ bufSize += step;
+ buffer = xRealloc(buffer, bufSize + 1);
+ at = buffer + bufSize - step;
+ }
+}