sgw: android has no getline(), implement it
authorFerry Huberts <ferry.huberts@pelagic.nl>
Fri, 14 Nov 2014 13:21:52 +0000 (14:21 +0100)
committerFerry Huberts <ferry.huberts@pelagic.nl>
Fri, 14 Nov 2014 13:34:02 +0000 (14:34 +0100)
Signed-off-by: Ferry Huberts <ferry.huberts@pelagic.nl>
src/egressFile.c

index 2a8dc1d..96b0e53 100644 (file)
@@ -140,6 +140,41 @@ static void egressFileError(bool useErrno, int lineNo, const char *format, ...)
  * Helpers
  */
 
+#ifdef __ANDROID__
+static ssize_t getline(char **lineptr, size_t *n, FILE *stream)
+{
+    char *ptr;
+    size_t len;
+
+    ptr = fgetln(stream, n);
+
+    if (ptr == NULL) {
+        return -1;
+    }
+
+    /* Free the original ptr */
+    if (*lineptr != NULL) free(*lineptr);
+
+    /* Add one more space for '\0' */
+    len = n[0] + 1;
+
+    /* Update the length */
+    n[0] = len;
+
+    /* Allocate a new buffer */
+    *lineptr = malloc(len);
+
+    /* Copy over the string */
+    memcpy(*lineptr, ptr, len-1);
+
+    /* Write the NULL character */
+    (*lineptr)[len-1] = '\0';
+
+    /* Return the length of the new buffer */
+    return len;
+}
+#endif
+
 /**
  * Read an (olsr_ip_addr) IP address from a string:
  * First tries to parse the value as an IPv4 address, and if not successful