+++ /dev/null
---- printf-pos.c.orig 2010-10-25 19:45:24.000000000 -0700
-+++ printf-pos.c 2010-10-25 19:47:02.000000000 -0700
-@@ -63,7 +63,10 @@ enum typeid {
- T_LONG, T_U_LONG, TP_LONG, T_LLONG, T_U_LLONG, TP_LLONG,
- T_PTRDIFFT, TP_PTRDIFFT, T_SSIZET, T_SIZET, TP_SSIZET,
- T_INTMAXT, T_UINTMAXT, TP_INTMAXT, TP_VOID, TP_CHAR, TP_SCHAR,
-- T_DOUBLE, T_LONG_DOUBLE, T_WINT, TP_WCHAR
-+ T_DOUBLE, T_LONG_DOUBLE, T_WINT, TP_WCHAR,
-+#ifdef VECTORS
-+ T_VECTOR,
-+#endif
- };
-
- /* An expandable array of types. */
-@@ -240,7 +243,7 @@ addwaster(struct typetable *types, wchar
- * It will be replaces with a malloc-ed one if it overflows.
- * Returns 0 on success. On failure, returns nonzero and sets errno.
- */
--int
-+__private_extern__ int
- __find_arguments (const char *fmt0, va_list ap, union arg **argtable)
- {
- char *fmt; /* format string */
-@@ -342,7 +345,11 @@ reswitch: switch (ch) {
- /*FALLTHROUGH*/
- case 'c':
- error = addtype(&types,
-+#ifdef VECTORS
-+ (flags & LONGINT) ? T_WINT : ((flags & VECTOR) ? T_VECTOR : T_INT));
-+#else
- (flags & LONGINT) ? T_WINT : T_INT);
-+#endif
- if (error)
- goto error;
- break;
-@@ -351,6 +358,12 @@ reswitch: switch (ch) {
- /*FALLTHROUGH*/
- case 'd':
- case 'i':
-+#ifdef VECTORS
-+ if (flags & VECTOR) {
-+ if ((error = addtype(&types, T_VECTOR)))
-+ goto error;
-+ } else
-+#endif
- if ((error = addsarg(&types, flags)))
- goto error;
- break;
-@@ -360,10 +373,15 @@ reswitch: switch (ch) {
- case 'e':
- case 'E':
- case 'f':
-+ case 'F':
- case 'g':
- case 'G':
- error = addtype(&types,
-+#ifdef VECTORS
-+ (flags & VECTOR) ? T_VECTOR : ((flags & LONGDBL) ? T_LONG_DOUBLE : T_DOUBLE));
-+#else
- (flags & LONGDBL) ? T_LONG_DOUBLE : T_DOUBLE);
-+#endif
- if (error)
- goto error;
- break;
-@@ -392,11 +410,21 @@ reswitch: switch (ch) {
- flags |= LONGINT;
- /*FALLTHROUGH*/
- case 'o':
-+#ifdef VECTORS
-+ if (flags & VECTOR) {
-+ if ((error = addtype(&types, T_VECTOR)))
-+ goto error;
-+ } else
-+#endif
- if ((error = adduarg(&types, flags)))
- goto error;
- break;
- case 'p':
-+#ifdef VECTORS
-+ if ((error = addtype(&types, (flags & VECTOR) ? T_VECTOR : TP_VOID)))
-+#else
- if ((error = addtype(&types, TP_VOID)))
-+#endif
- goto error;
- break;
- case 'S':
-@@ -414,6 +442,12 @@ reswitch: switch (ch) {
- case 'u':
- case 'X':
- case 'x':
-+#ifdef VECTORS
-+ if (flags & VECTOR) {
-+ if ((error = addtype(&types, T_VECTOR)))
-+ goto error;
-+ } else
-+#endif
- if ((error = adduarg(&types, flags)))
- goto error;
- break;
-@@ -431,7 +465,7 @@ error:
- }
-
- /* wchar version of __find_arguments. */
--int
-+__private_extern__ int
- __find_warguments (const wchar_t *fmt0, va_list ap, union arg **argtable)
- {
- wchar_t *fmt; /* format string */
-@@ -551,6 +585,7 @@ reswitch: switch (ch) {
- case 'e':
- case 'E':
- case 'f':
-+ case 'F':
- case 'g':
- case 'G':
- error = addtype(&types,
-@@ -741,6 +776,11 @@ build_arg_table(struct typetable *types,
- (*argtable) [n].longdoublearg = va_arg (ap, long double);
- #endif
- break;
-+#ifdef VECTORS
-+ case T_VECTOR:
-+ (*argtable) [n].vectorarg = va_arg (ap, VECTORTYPE);
-+ break;
-+#endif /* VECTORS */
- case TP_CHAR:
- (*argtable) [n].pchararg = va_arg (ap, char *);
- break;