[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/fgetc.c b/ap/build/uClibc/libc/stdio/fgetc.c
new file mode 100644
index 0000000..56a284c
--- /dev/null
+++ b/ap/build/uClibc/libc/stdio/fgetc.c
@@ -0,0 +1,107 @@
+/* Copyright (C) 2004       Manuel Novoa III    <mjn3@codepoet.org>
+ * Copyright (C) 2000-2006 Erik Andersen <andersen@uclibc.org>
+ *
+ * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
+ *
+ * Dedicated to Toni.  See uClibc/DEDICATION.mjn3 for details.
+ */
+
+#include "_stdio.h"
+
+#undef fgetc
+#undef fgetc_unlocked
+#undef getc
+#undef getc_unlocked
+
+
+#ifdef __DO_UNLOCKED
+
+
+int __fgetc_unlocked(FILE *stream)
+{
+	__STDIO_STREAM_VALIDATE(stream);
+
+	/* First the fast path.  We're good to go if getc macro enabled. */
+	if (__STDIO_STREAM_CAN_USE_BUFFER_GET(stream)) {
+		return __STDIO_STREAM_BUFFER_GET(stream);
+	}
+
+	/* Next quickest... reading and narrow oriented, but macro
+	 * disabled and/or buffer is exhausted. */
+	if (__STDIO_STREAM_IS_NARROW_READING(stream)
+		|| !__STDIO_STREAM_TRANS_TO_READ(stream, __FLAG_NARROW)
+		) {
+		if (stream->__modeflags & __FLAG_UNGOT) { /* Use ungots first. */
+			unsigned char uc = stream->__ungot[(stream->__modeflags--) & 1];
+			stream->__ungot[1] = 0;
+			__STDIO_STREAM_VALIDATE(stream);
+			return uc;
+		}
+
+		if (__STDIO_STREAM_BUFFER_RAVAIL(stream)) {	/* Have buffered? */
+			return __STDIO_STREAM_BUFFER_GET(stream);
+		}
+
+		/* Is this a fake stream for *sscanf? */
+		if (__STDIO_STREAM_IS_FAKE_VSSCANF(stream)) {
+			__STDIO_STREAM_SET_EOF(stream);
+			return EOF;
+		}
+
+		/* We need to read from the host environment, so we must
+		 * flush all line buffered streams if the stream is not
+		 * fully buffered. */
+		if (!__STDIO_STREAM_IS_FBF(stream)) {
+			__STDIO_FLUSH_LBF_STREAMS;
+		}
+
+		if (__STDIO_STREAM_BUFFER_SIZE(stream)) { /* Do we have a buffer? */
+			__STDIO_STREAM_DISABLE_GETC(stream);
+			if(__STDIO_FILL_READ_BUFFER(stream)) {	/* Refill succeeded? */
+				__STDIO_STREAM_ENABLE_GETC(stream);	/* FBF or LBF */
+				return __STDIO_STREAM_BUFFER_GET(stream);
+			}
+		} else {
+			unsigned char uc;
+			if (__stdio_READ(stream, &uc, 1)) {
+				return uc;
+			}
+		}
+	}
+
+	return EOF;
+}
+libc_hidden_def(__fgetc_unlocked)
+
+strong_alias(__fgetc_unlocked,fgetc_unlocked)
+libc_hidden_def(fgetc_unlocked)
+
+strong_alias(__fgetc_unlocked,getc_unlocked)
+libc_hidden_def(getc_unlocked)
+
+#ifndef __UCLIBC_HAS_THREADS__
+strong_alias(__fgetc_unlocked,fgetc)
+libc_hidden_def(fgetc)
+
+strong_alias(__fgetc_unlocked,getc)
+#endif
+
+#elif defined __UCLIBC_HAS_THREADS__
+
+int fgetc(register FILE *stream)
+{
+	if (stream->__user_locking != 0) {
+		return __GETC_UNLOCKED_MACRO(stream);
+	} else {
+		int retval;
+		__STDIO_ALWAYS_THREADLOCK(stream);
+		retval = __GETC_UNLOCKED_MACRO(stream);
+		__STDIO_ALWAYS_THREADUNLOCK(stream);
+		return retval;
+	}
+}
+libc_hidden_def(fgetc)
+
+strong_alias(fgetc,getc)
+
+#endif