diff options
Diffstat (limited to 'StringUtils.c')
-rw-r--r-- | StringUtils.c | 29 |
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; + } +} |