]> git.saurik.com Git - apple/libc.git/blobdiff - stdio/FreeBSD/printf-pos.c.patch
Libc-763.11.tar.gz
[apple/libc.git] / 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 (file)
index 0000000..fdbb58e
--- /dev/null
@@ -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;