[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/_wfwrite.c b/ap/build/uClibc/libc/stdio/_wfwrite.c
new file mode 100644
index 0000000..517e3a7
--- /dev/null
+++ b/ap/build/uClibc/libc/stdio/_wfwrite.c
@@ -0,0 +1,73 @@
+/* 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 "_stdio.h"
+#include <wchar.h>
+
+#ifndef __UCLIBC_HAS_WCHAR__
+#error wide function when no wide support!
+#endif
+
+#ifdef __UCLIBC_MJN3_ONLY__
+#warning TODO: Fix prototype.
+#endif
+
+
+size_t attribute_hidden _wstdio_fwrite(const wchar_t *__restrict ws, size_t n,
+					  register FILE *__restrict stream)
+{
+	size_t r, count;
+	char buf[64];
+	const wchar_t *pw;
+
+	__STDIO_STREAM_VALIDATE(stream);
+
+#ifdef __STDIO_BUFFERS
+	if (__STDIO_STREAM_IS_FAKE_VSWPRINTF(stream)) {
+		/* We know buffer is wchar aligned for fake streams. */
+		count = (((wchar_t *)(stream->__bufend))
+				 - ((wchar_t *)(stream->__bufpos)));
+		if (count > n) {
+			count = n;
+		}
+		if (count) {
+			wmemcpy((wchar_t *)(stream->__bufpos), ws, count);
+			stream->__bufpos = (unsigned char *)(((wchar_t *)(stream->__bufpos)) + count);
+		}
+		__STDIO_STREAM_VALIDATE(stream);
+		return n;
+	}
+#endif
+
+	count = 0;
+
+	if (__STDIO_STREAM_IS_WIDE_WRITING(stream)
+		|| !__STDIO_STREAM_TRANS_TO_WRITE(stream, __FLAG_WIDE)
+		) {
+
+		pw = ws;
+		while (n > count) {
+			r = wcsnrtombs(buf, &pw, n-count, sizeof(buf), &stream->__state);
+			if (r != ((size_t) -1)) { /* No encoding errors */
+				if (!r) {
+					++r;		  /* 0 is returned when nul is reached. */
+					pw = ws + count + r; /* pw was set to NULL, so correct. */
+				}
+				if (__stdio_fwrite((const unsigned char *)buf, r, stream) == r) {
+					count = pw - ws;
+					continue;
+				}
+			}
+			break;
+		}
+
+		/* Note: The count is incorrect if 0 < __stdio_fwrite return < r!!! */
+	}
+
+	__STDIO_STREAM_VALIDATE(stream);
+	return count;
+}