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. */
* 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 */
/*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;
/*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;
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;
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':
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;
}
/* 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 */
case 'e':
case 'E':
case 'f':
+ case 'F':
case 'g':
case 'G':
error = addtype(&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;