From 0a5b310067abfde9bf74a42352fc421e1c27e2b9 Mon Sep 17 00:00:00 2001 From: Timo Teras Date: Wed, 29 Jun 2011 02:19:58 +0200 Subject: platform.c: provide getline implementation Signed-off-by: Timo Teras Signed-off-by: Denys Vlasenko --- libbb/platform.c | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) (limited to 'libbb/platform.c') diff --git a/libbb/platform.c b/libbb/platform.c index 04b8961de..2bf34f5bc 100644 --- a/libbb/platform.c +++ b/libbb/platform.c @@ -145,3 +145,32 @@ char* FAST_FUNC stpcpy(char *p, const char *to_add) return p; } #endif + +#ifndef HAVE_GETLINE +ssize_t FAST_FUNC getline(char **lineptr, size_t *n, FILE *stream) +{ + int ch; + char *line = *lineptr; + size_t alloced = *n; + size_t len = 0; + + do { + ch = fgetc(stream); + if (ch == EOF) + break; + if (len + 1 >= alloced) { + alloced += alloced/4 + 64; + line = xrealloc(line, alloced); + } + line[len++] = ch; + } while (ch != '\n'); + + if (len == 0) + return -1; + + line[len] = '\0'; + *lineptr = line; + *n = alloced; + return len; +} +#endif -- cgit v1.2.3