X-Git-Url: https://git.saurik.com/apple/libc.git/blobdiff_plain/fbd86d4cc20b02a10edcca92fb7ae0a143e63cc4..1f2f436a38f7ae2d39a943ad2898d8fed4ed2e58:/stdio/FreeBSD/printf-pos.c.patch diff --git a/stdio/FreeBSD/printf-pos.c.patch b/stdio/FreeBSD/printf-pos.c.patch new file mode 100644 index 0000000..fdbb58e --- /dev/null +++ b/stdio/FreeBSD/printf-pos.c.patch @@ -0,0 +1,128 @@ +--- 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;