[T106][ZXW-22]7520V3SCV2.01.01.02P42U09_VEC_V0.8_AP_VEC origin source commit

Change-Id: Ic6e05d89ecd62fc34f82b23dcf306c93764aec4b
diff --git a/ap/build/uClibc/libc/stdio/getdelim.c b/ap/build/uClibc/libc/stdio/getdelim.c
new file mode 100644
index 0000000..987e32a
--- /dev/null
+++ b/ap/build/uClibc/libc/stdio/getdelim.c
@@ -0,0 +1,82 @@
+/* Copyright (C) 2004       Manuel Novoa III    <mjn3@codepoet.org>
+ *
+ * GNU Library General Public License (LGPL) version 2 or later.
+ *
+ * Dedicated to Toni.  See uClibc/DEDICATION.mjn3 for details.
+ */
+
+#include <features.h>
+
+#ifdef __USE_GNU
+#include "_stdio.h"
+
+
+
+/* Note: There is a defect in this function.  (size_t vs ssize_t). */
+
+/* glibc function --
+ * Return -1 if error or EOF prior to any chars read.
+ * Return number of chars read (including possible delimiter but not
+ *   the terminating nul) otherwise.
+ *
+ * NOTE: If we need to allocate a buffer, we do so prior to attempting
+ * a reading.  So space may be allocated even if initially at EOF.
+ */
+
+#define GETDELIM_GROWBY		64
+
+ssize_t getdelim(char **__restrict lineptr, size_t *__restrict n,
+				   int delimiter, register FILE *__restrict stream)
+{
+	register char *buf;
+	ssize_t pos = -1;
+	int c;
+	__STDIO_AUTO_THREADLOCK_VAR;
+
+	if (!lineptr || !n || !stream) { /* Be compatable with glibc... even */
+		__set_errno(EINVAL); /* though I think we should assert here */
+	} else {
+		__STDIO_AUTO_THREADLOCK(stream);
+
+		if (!(buf = *lineptr)) { /* If passed NULL for buffer, */
+			*n = 0;		/* ignore value passed and treat size as 0. */
+		}
+
+		/* Within the loop, pos is actually the current buffer index + 2,
+		 * because we want to make sure we have enough space to store
+		 * an additional char plus a nul terminator.
+		 */
+		pos = 1;
+
+		do {
+			if (pos >= *n) {
+				if (!(buf = realloc(buf, *n + GETDELIM_GROWBY))) {
+					pos = -1;
+					break;
+				}
+				*n += GETDELIM_GROWBY;
+				*lineptr = buf;
+			}
+
+			if ((c = __GETC_UNLOCKED(stream)) != EOF) {
+				buf[++pos - 2] = c;
+				if (c != delimiter) {
+					continue;
+				}
+			}
+
+			/* We're done, so correct pos back to being the current index. */
+			if ((pos -= 2) >= 0) {
+				buf[++pos] = 0;
+			}
+			break;
+
+		} while (1);
+
+		__STDIO_AUTO_THREADUNLOCK(stream);
+	}
+
+	return pos;
+}
+libc_hidden_def(getdelim)
+#endif