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

Change-Id: Ic6e05d89ecd62fc34f82b23dcf306c93764aec4b
diff --git a/ap/libc/glibc/glibc-2.22/timezone/scheck.c b/ap/libc/glibc/glibc-2.22/timezone/scheck.c
new file mode 100644
index 0000000..8bd01a8
--- /dev/null
+++ b/ap/libc/glibc/glibc-2.22/timezone/scheck.c
@@ -0,0 +1,64 @@
+/*
+** This file is in the public domain, so clarified as of
+** 2006-07-17 by Arthur David Olson.
+*/
+
+/*LINTLIBRARY*/
+
+#include "private.h"
+
+const char *
+scheck(const char *const string, const char *const format)
+{
+	register char *		fbuf;
+	register const char *	fp;
+	register char *		tp;
+	register int		c;
+	register const char *	result;
+	char			dummy;
+
+	result = "";
+	if (string == NULL || format == NULL)
+		return result;
+	fbuf = malloc(2 * strlen(format) + 4);
+	if (fbuf == NULL)
+		return result;
+	fp = format;
+	tp = fbuf;
+
+	/*
+	** Copy directives, suppressing each conversion that is not
+	** already suppressed.  Scansets containing '%' are not
+	** supported; e.g., the conversion specification "%[%]" is not
+	** supported.  Also, multibyte characters containing a
+	** non-leading '%' byte are not supported.
+	*/
+	while ((*tp++ = c = *fp++) != '\0') {
+		if (c != '%')
+			continue;
+		if (is_digit(*fp)) {
+			char const *f = fp;
+			char *t = tp;
+			do {
+				*t++ = c = *f++;
+			} while (is_digit(c));
+			if (c == '$') {
+				fp = f;
+				tp = t;
+			}
+		}
+		*tp++ = '*';
+		if (*fp == '*')
+			++fp;
+		if ((*tp++ = *fp++) == '\0')
+			break;
+	}
+
+	*(tp - 1) = '%';
+	*tp++ = 'c';
+	*tp = '\0';
+	if (sscanf(string, fbuf, &dummy) != 1)
+		result = format;
+	free(fbuf);
+	return result;
+}