Index: third_party/libxml/src/trio.c |
diff --git a/third_party/libxml/src/trio.c b/third_party/libxml/src/trio.c |
index b116ccc363a63fc2f0c2381c84e3fd750053d57e..c8b9c84ebaa25c096a2a9eac54c75931718d82b2 100644 |
--- a/third_party/libxml/src/trio.c |
+++ b/third_party/libxml/src/trio.c |
@@ -99,7 +99,7 @@ |
#endif |
#include <stddef.h> |
-#ifdef HAVE_ERRNO_H |
+#if defined( HAVE_ERRNO_H ) || defined( __VMS ) |
#include <errno.h> |
#endif |
@@ -126,13 +126,23 @@ |
# define TRIO_ERROR_RETURN(x,y) (-1) |
#endif |
+#ifndef VA_LIST_IS_ARRAY |
+#define TRIO_VA_LIST_PTR va_list * |
+#define TRIO_VA_LIST_ADDR(l) (&(l)) |
+#define TRIO_VA_LIST_DEREF(l) (*(l)) |
+#else |
+#define TRIO_VA_LIST_PTR va_list |
+#define TRIO_VA_LIST_ADDR(l) (l) |
+#define TRIO_VA_LIST_DEREF(l) (l) |
+#endif |
+ |
typedef unsigned long trio_flags_t; |
/************************************************************************* |
* Platform specific definitions |
*/ |
-#if defined(TRIO_PLATFORM_UNIX) |
+#if defined(TRIO_PLATFORM_UNIX) || defined(TRIO_PLATFORM_OS400) |
# include <unistd.h> |
# include <signal.h> |
# include <locale.h> |
@@ -208,7 +218,7 @@ typedef unsigned long int trio_ulonglong_t; |
#endif |
/* Maximal and fixed integer types */ |
-#if defined(TRIO_COMPILER_SUPPORTS_C99) |
+#if defined(TRIO_COMPILER_SUPPORTS_C99) && !defined( __VMS ) |
# include <stdint.h> |
typedef intmax_t trio_intmax_t; |
typedef uintmax_t trio_uintmax_t; |
@@ -216,8 +226,12 @@ typedef int8_t trio_int8_t; |
typedef int16_t trio_int16_t; |
typedef int32_t trio_int32_t; |
typedef int64_t trio_int64_t; |
-#elif defined(TRIO_COMPILER_SUPPORTS_UNIX98) |
+#elif defined(TRIO_COMPILER_SUPPORTS_UNIX98) || defined( __VMS ) |
# include <inttypes.h> |
+#ifdef __VMS |
+typedef long long int intmax_t; |
+typedef unsigned long long int uintmax_t; |
+#endif |
typedef intmax_t trio_intmax_t; |
typedef uintmax_t trio_uintmax_t; |
typedef int8_t trio_int8_t; |
@@ -307,6 +321,12 @@ typedef trio_longlong_t trio_int64_t; |
#define NAN_LOWER "nan" |
#define NAN_UPPER "NAN" |
+#if !defined(HAVE_ISASCII) && !defined(isascii) |
+#ifndef __VMS |
+# define isascii(x) ((unsigned int)(x) < 128) |
+#endif |
+#endif |
+ |
/* Various constants */ |
enum { |
TYPE_PRINT = 1, |
@@ -376,7 +396,7 @@ enum { |
/* Maximal string lengths for user-defined specifiers */ |
MAX_USER_NAME = 64, |
MAX_USER_DATA = 256, |
- |
+ |
/* Maximal length of locale separator strings */ |
MAX_LOCALE_SEPARATOR_LENGTH = MB_LEN_MAX, |
/* Maximal number of integers in grouping */ |
@@ -1020,23 +1040,23 @@ TRIO_ARGS2((name, prev), |
trio_userdef_t **prev) |
{ |
trio_userdef_t *def; |
- |
+ |
if (internalEnterCriticalRegion) |
(void)internalEnterCriticalRegion(NULL); |
- |
+ |
for (def = internalUserDef; def; def = def->next) |
{ |
/* Case-sensitive string comparison */ |
if (trio_equal_case(def->name, name)) |
break; |
- |
+ |
if (prev) |
*prev = def; |
} |
- |
+ |
if (internalLeaveCriticalRegion) |
(void)internalLeaveCriticalRegion(NULL); |
- |
+ |
return def; |
} |
#endif |
@@ -1163,7 +1183,7 @@ TRIO_ARGS5((type, format, parameters, arglist, argarray), |
int type, |
TRIO_CONST char *format, |
trio_parameter_t *parameters, |
- va_list *arglist, |
+ TRIO_VA_LIST_PTR arglist, |
trio_pointer_t *argarray) |
{ |
/* Count the number of times a parameter is referenced */ |
@@ -1200,7 +1220,7 @@ TRIO_ARGS5((type, format, parameters, arglist, argarray), |
/* One and only one of arglist and argarray must be used */ |
assert((arglist != NULL) ^ (argarray != NULL)); |
- |
+ |
/* |
* The 'parameters' array is not initialized, but we need to |
* know which entries we have used. |
@@ -1213,7 +1233,7 @@ TRIO_ARGS5((type, format, parameters, arglist, argarray), |
#if defined(TRIO_COMPILER_SUPPORTS_MULTIBYTE) |
(void)mblen(NULL, 0); |
#endif |
- |
+ |
while (format[index]) |
{ |
#if defined(TRIO_COMPILER_SUPPORTS_MULTIBYTE) |
@@ -1291,7 +1311,7 @@ TRIO_ARGS5((type, format, parameters, arglist, argarray), |
/* Skip if no precision */ |
if (QUALIFIER_DOT == format[index]) |
break; |
- |
+ |
/* After the first dot we have the precision */ |
flags |= FLAGS_PRECISION; |
if ((QUALIFIER_STAR == format[index]) |
@@ -1336,7 +1356,7 @@ TRIO_ARGS5((type, format, parameters, arglist, argarray), |
else if (dots == 1) /* Base */ |
{ |
dots++; |
- |
+ |
/* After the second dot we have the base */ |
flags |= FLAGS_BASE; |
if ((QUALIFIER_STAR == format[index]) |
@@ -1535,7 +1555,7 @@ TRIO_ARGS5((type, format, parameters, arglist, argarray), |
} |
else |
return TRIO_ERROR_RETURN(TRIO_EINVAL, index); |
- |
+ |
flags |= FLAGS_FIXED_SIZE; |
break; |
#endif |
@@ -1563,7 +1583,7 @@ TRIO_ARGS5((type, format, parameters, arglist, argarray), |
gotSticky = TRUE; |
break; |
#endif |
- |
+ |
#if defined(QUALIFIER_VARSIZE) |
case QUALIFIER_VARSIZE: |
flags |= FLAGS_VARSIZE_PARAMETER; |
@@ -1628,9 +1648,9 @@ TRIO_ARGS5((type, format, parameters, arglist, argarray), |
indices[varsize] = pos; |
varsize = pos++; |
} |
- |
+ |
indices[currentParam] = pos; |
- |
+ |
switch (format[index++]) |
{ |
#if defined(SPECIFIER_CHAR_UPPER) |
@@ -1689,11 +1709,11 @@ TRIO_ARGS5((type, format, parameters, arglist, argarray), |
} |
} |
break; |
- |
+ |
case SPECIFIER_INTEGER: |
parameters[pos].type = FORMAT_INT; |
break; |
- |
+ |
case SPECIFIER_UNSIGNED: |
flags |= FLAGS_UNSIGNED; |
parameters[pos].type = FORMAT_INT; |
@@ -1793,11 +1813,11 @@ TRIO_ARGS5((type, format, parameters, arglist, argarray), |
{ |
unsigned int max; |
int without_namespace = TRUE; |
- |
+ |
parameters[pos].type = FORMAT_USER_DEFINED; |
parameters[pos].user_name[0] = NIL; |
tmpformat = (char *)&format[index]; |
- |
+ |
while ((ch = format[index])) |
{ |
index++; |
@@ -1845,7 +1865,7 @@ TRIO_ARGS5((type, format, parameters, arglist, argarray), |
} |
break; |
#endif /* defined(SPECIFIER_USER_DEFINED_BEGIN) */ |
- |
+ |
default: |
/* Bail out completely to make the error more obvious */ |
return TRIO_ERROR_RETURN(TRIO_EINVAL, index); |
@@ -1853,7 +1873,7 @@ TRIO_ARGS5((type, format, parameters, arglist, argarray), |
/* Count the number of times this entry has been used */ |
usedEntries[currentParam] += 1; |
- |
+ |
/* Find last sticky parameters */ |
if (gotSticky && !(flags & FLAGS_STICKY)) |
{ |
@@ -1876,7 +1896,7 @@ TRIO_ARGS5((type, format, parameters, arglist, argarray), |
} |
} |
} |
- |
+ |
parameters[pos].indexAfterSpecifier = index; |
parameters[pos].flags = flags; |
parameters[pos].width = width; |
@@ -1884,12 +1904,12 @@ TRIO_ARGS5((type, format, parameters, arglist, argarray), |
parameters[pos].base = (base == NO_BASE) ? BASE_DECIMAL : base; |
parameters[pos].varsize = varsize; |
pos++; |
- |
+ |
if (! positional) |
parameterPosition++; |
- |
+ |
} /* if identifier */ |
- |
+ |
} /* while format characters left */ |
for (num = 0; num <= maxParam; num++) |
@@ -1901,7 +1921,7 @@ TRIO_ARGS5((type, format, parameters, arglist, argarray), |
else /* double references detected */ |
return TRIO_ERROR_RETURN(TRIO_EDBLREF, num); |
} |
- |
+ |
i = indices[num]; |
/* |
@@ -1941,14 +1961,14 @@ TRIO_ARGS5((type, format, parameters, arglist, argarray), |
if (flags & FLAGS_WIDECHAR) |
{ |
parameters[i].data.wstring = (argarray == NULL) |
- ? va_arg(*arglist, trio_wchar_t *) |
+ ? va_arg(TRIO_VA_LIST_DEREF(arglist), trio_wchar_t *) |
: (trio_wchar_t *)(argarray[num]); |
} |
else |
#endif |
{ |
parameters[i].data.string = (argarray == NULL) |
- ? va_arg(*arglist, char *) |
+ ? va_arg(TRIO_VA_LIST_DEREF(arglist), char *) |
: (char *)(argarray[num]); |
} |
break; |
@@ -1960,7 +1980,7 @@ TRIO_ARGS5((type, format, parameters, arglist, argarray), |
case FORMAT_COUNT: |
case FORMAT_UNKNOWN: |
parameters[i].data.pointer = (argarray == NULL) |
- ? va_arg(*arglist, trio_pointer_t ) |
+ ? va_arg(TRIO_VA_LIST_DEREF(arglist), trio_pointer_t ) |
: argarray[num]; |
break; |
@@ -1969,8 +1989,8 @@ TRIO_ARGS5((type, format, parameters, arglist, argarray), |
if (TYPE_SCAN == type) |
{ |
if (argarray == NULL) |
- parameters[i].data.pointer = |
- (trio_pointer_t)va_arg(*arglist, trio_pointer_t); |
+ parameters[i].data.pointer = |
+ (trio_pointer_t)va_arg(TRIO_VA_LIST_DEREF(arglist), trio_pointer_t); |
else |
{ |
if (parameters[i].type == FORMAT_CHAR) |
@@ -2009,7 +2029,7 @@ TRIO_ARGS5((type, format, parameters, arglist, argarray), |
varsize = parameters[i].varsize; |
} |
parameters[i].flags &= ~FLAGS_ALL_VARSIZES; |
- |
+ |
if (varsize <= (int)sizeof(int)) |
; |
else if (varsize <= (int)sizeof(long)) |
@@ -2028,36 +2048,36 @@ TRIO_ARGS5((type, format, parameters, arglist, argarray), |
#if defined(QUALIFIER_SIZE_T) || defined(QUALIFIER_SIZE_T_UPPER) |
if (parameters[i].flags & FLAGS_SIZE_T) |
parameters[i].data.number.as_unsigned = (argarray == NULL) |
- ? (trio_uintmax_t)va_arg(*arglist, size_t) |
+ ? (trio_uintmax_t)va_arg(TRIO_VA_LIST_DEREF(arglist), size_t) |
: (trio_uintmax_t)(*((size_t *)argarray[num])); |
else |
#endif |
#if defined(QUALIFIER_PTRDIFF_T) |
if (parameters[i].flags & FLAGS_PTRDIFF_T) |
parameters[i].data.number.as_unsigned = (argarray == NULL) |
- ? (trio_uintmax_t)va_arg(*arglist, ptrdiff_t) |
+ ? (trio_uintmax_t)va_arg(TRIO_VA_LIST_DEREF(arglist), ptrdiff_t) |
: (trio_uintmax_t)(*((ptrdiff_t *)argarray[num])); |
else |
#endif |
#if defined(QUALIFIER_INTMAX_T) |
if (parameters[i].flags & FLAGS_INTMAX_T) |
parameters[i].data.number.as_unsigned = (argarray == NULL) |
- ? (trio_uintmax_t)va_arg(*arglist, trio_intmax_t) |
+ ? (trio_uintmax_t)va_arg(TRIO_VA_LIST_DEREF(arglist), trio_intmax_t) |
: (trio_uintmax_t)(*((trio_intmax_t *)argarray[num])); |
else |
#endif |
if (parameters[i].flags & FLAGS_QUAD) |
parameters[i].data.number.as_unsigned = (argarray == NULL) |
- ? (trio_uintmax_t)va_arg(*arglist, trio_ulonglong_t) |
+ ? (trio_uintmax_t)va_arg(TRIO_VA_LIST_DEREF(arglist), trio_ulonglong_t) |
: (trio_uintmax_t)(*((trio_ulonglong_t *)argarray[num])); |
else if (parameters[i].flags & FLAGS_LONG) |
parameters[i].data.number.as_unsigned = (argarray == NULL) |
- ? (trio_uintmax_t)va_arg(*arglist, long) |
+ ? (trio_uintmax_t)va_arg(TRIO_VA_LIST_DEREF(arglist), long) |
: (trio_uintmax_t)(*((long *)argarray[num])); |
else |
{ |
if (argarray == NULL) |
- parameters[i].data.number.as_unsigned = (trio_uintmax_t)va_arg(*arglist, int); |
+ parameters[i].data.number.as_unsigned = (trio_uintmax_t)va_arg(TRIO_VA_LIST_DEREF(arglist), int); |
else |
{ |
if (parameters[i].type == FORMAT_CHAR) |
@@ -2078,11 +2098,11 @@ TRIO_ARGS5((type, format, parameters, arglist, argarray), |
*/ |
if (parameters[i].flags & FLAGS_USER_DEFINED) |
parameters[i].data.pointer = (argarray == NULL) |
- ? va_arg(*arglist, trio_pointer_t ) |
+ ? va_arg(TRIO_VA_LIST_DEREF(arglist), trio_pointer_t ) |
: argarray[num]; |
else |
parameters[i].data.number.as_unsigned = (argarray == NULL) |
- ? (trio_uintmax_t)va_arg(*arglist, int) |
+ ? (trio_uintmax_t)va_arg(TRIO_VA_LIST_DEREF(arglist), int) |
: (trio_uintmax_t)(*((int *)argarray[num])); |
break; |
@@ -2091,17 +2111,17 @@ TRIO_ARGS5((type, format, parameters, arglist, argarray), |
{ |
if (parameters[i].flags & FLAGS_LONGDOUBLE) |
parameters[i].data.longdoublePointer = (argarray == NULL) |
- ? va_arg(*arglist, trio_long_double_t *) |
+ ? va_arg(TRIO_VA_LIST_DEREF(arglist), trio_long_double_t *) |
: (trio_long_double_t *)argarray[num]; |
else |
{ |
if (parameters[i].flags & FLAGS_LONG) |
parameters[i].data.doublePointer = (argarray == NULL) |
- ? va_arg(*arglist, double *) |
+ ? va_arg(TRIO_VA_LIST_DEREF(arglist), double *) |
: (double *)argarray[num]; |
else |
parameters[i].data.doublePointer = (argarray == NULL) |
- ? (double *)va_arg(*arglist, float *) |
+ ? (double *)va_arg(TRIO_VA_LIST_DEREF(arglist), float *) |
: (double *)((float *)argarray[num]); |
} |
} |
@@ -2109,13 +2129,13 @@ TRIO_ARGS5((type, format, parameters, arglist, argarray), |
{ |
if (parameters[i].flags & FLAGS_LONGDOUBLE) |
parameters[i].data.longdoubleNumber = (argarray == NULL) |
- ? va_arg(*arglist, trio_long_double_t) |
+ ? va_arg(TRIO_VA_LIST_DEREF(arglist), trio_long_double_t) |
: (trio_long_double_t)(*((trio_long_double_t *)argarray[num])); |
else |
{ |
if (argarray == NULL) |
parameters[i].data.longdoubleNumber = |
- (trio_long_double_t)va_arg(*arglist, double); |
+ (trio_long_double_t)va_arg(TRIO_VA_LIST_DEREF(arglist), double); |
else |
{ |
if (parameters[i].flags & FLAGS_SHORT) |
@@ -2213,7 +2233,7 @@ TRIO_ARGS6((self, number, flags, width, precision, base), |
number &= (unsigned long)-1; |
else |
number &= (unsigned int)-1; |
- |
+ |
/* Build number */ |
pointer = bufferend = &buffer[sizeof(buffer) - 1]; |
*pointer-- = NIL; |
@@ -2260,7 +2280,7 @@ TRIO_ARGS6((self, number, flags, width, precision, base), |
count = (! ((flags & FLAGS_LEFTADJUST) || (precision == NO_PRECISION))) |
? precision |
: 0; |
- |
+ |
/* Adjust width further */ |
if (isNegative || (flags & FLAGS_SHOWSIGN) || (flags & FLAGS_SPACE)) |
width--; |
@@ -2495,7 +2515,7 @@ TRIO_ARGS4((self, wch, flags, width), |
if (width == NO_WIDTH) |
width = sizeof(buffer); |
- |
+ |
size = wctomb(buffer, wch); |
if ((size <= 0) || (size > width) || (buffer[0] == NIL)) |
return 0; |
@@ -2537,13 +2557,13 @@ TRIO_ARGS5((self, wstring, flags, width, precision), |
#if defined(TRIO_COMPILER_SUPPORTS_MULTIBYTE) |
(void)mblen(NULL, 0); |
#endif |
- |
+ |
if (wstring == NULL) |
{ |
TrioWriteString(self, NULL, flags, width, precision); |
return; |
} |
- |
+ |
if (NO_PRECISION == precision) |
{ |
length = INT_MAX; |
@@ -2638,7 +2658,7 @@ TRIO_ARGS6((self, number, flags, width, precision, base), |
BOOLEAN_T keepTrailingZeroes; |
BOOLEAN_T keepDecimalPoint; |
trio_long_double_t epsilon; |
- |
+ |
assert(VALID(self)); |
assert(VALID(self->OutStream)); |
assert(((base >= MIN_BASE) && (base <= MAX_BASE)) || (base == NO_BASE)); |
@@ -2653,7 +2673,7 @@ TRIO_ARGS6((self, number, flags, width, precision, base), |
: NAN_LOWER, |
flags, width, precision); |
return; |
- |
+ |
case TRIO_FP_INFINITE: |
if (isNegative) |
{ |
@@ -2680,7 +2700,7 @@ TRIO_ARGS6((self, number, flags, width, precision, base), |
/* Finitude */ |
break; |
} |
- |
+ |
/* Normal numbers */ |
if (flags & FLAGS_LONGDOUBLE) |
{ |
@@ -2728,13 +2748,13 @@ TRIO_ARGS6((self, number, flags, width, precision, base), |
precision = FLT_DIG; |
} |
} |
- |
+ |
if (isNegative) |
number = -number; |
if (isHex) |
flags |= FLAGS_FLOAT_E; |
- |
+ |
if (flags & FLAGS_FLOAT_G) |
{ |
if (precision == 0) |
@@ -2787,7 +2807,7 @@ TRIO_ARGS6((self, number, flags, width, precision, base), |
integerNumber = floorl(number); |
fractionNumber = number - integerNumber; |
- |
+ |
/* |
* Truncated number. |
* |
@@ -2802,7 +2822,7 @@ TRIO_ARGS6((self, number, flags, width, precision, base), |
: zeroes + precision; |
dblFractionBase = TrioPower(base, fractionDigits); |
- |
+ |
workNumber = number + 0.5 / dblFractionBase; |
if (floorl(number) != floorl(workNumber)) |
{ |
@@ -2855,7 +2875,7 @@ TRIO_ARGS6((self, number, flags, width, precision, base), |
integerThreshold = INT_MAX; |
fractionThreshold = INT_MAX; |
} |
- |
+ |
/* |
* Calculate expected width. |
* sign + integer part + thousands separators + decimal point |
@@ -2891,7 +2911,7 @@ TRIO_ARGS6((self, number, flags, width, precision, base), |
((requireTwoDigitExponent ? sizeof("E+0") : sizeof("E+")) - 1); |
if (isHex) |
expectedWidth += sizeof("0X") - 1; |
- |
+ |
/* Output prefixing */ |
if (flags & FLAGS_NILPADDING) |
{ |
@@ -2937,7 +2957,7 @@ TRIO_ARGS6((self, number, flags, width, precision, base), |
self->OutStream(self, (flags & FLAGS_UPPER) ? 'X' : 'x'); |
} |
} |
- |
+ |
/* Output the integer part and thousand separators */ |
dblIntegerBase = 1.0 / TrioPower(base, integerDigits - 1); |
for (i = 0; i < integerDigits; i++) |
@@ -2953,7 +2973,7 @@ TRIO_ARGS6((self, number, flags, width, precision, base), |
self->OutStream(self, digits[(int)fmodl(workNumber, dblBase)]); |
} |
dblIntegerBase *= dblBase; |
- |
+ |
if (((flags & (FLAGS_FLOAT_E | FLAGS_QUOTE)) == FLAGS_QUOTE) |
&& TrioFollowedBySeparator(integerDigits - i)) |
{ |
@@ -2965,7 +2985,7 @@ TRIO_ARGS6((self, number, flags, width, precision, base), |
} |
} |
} |
- |
+ |
/* Insert decimal point and build the fraction part */ |
trailingZeroes = 0; |
@@ -3014,7 +3034,7 @@ TRIO_ARGS6((self, number, flags, width, precision, base), |
} |
} |
} |
- |
+ |
if (keepTrailingZeroes) |
{ |
while (trailingZeroes > 0) |
@@ -3023,7 +3043,7 @@ TRIO_ARGS6((self, number, flags, width, precision, base), |
trailingZeroes--; |
} |
} |
- |
+ |
/* Output exponent */ |
if (exponentDigits > 0) |
{ |
@@ -3080,13 +3100,13 @@ TRIO_ARGS3((data, format, parameters), |
int precision; |
int base; |
int index; |
- |
+ |
index = 0; |
i = 0; |
#if defined(TRIO_COMPILER_SUPPORTS_MULTIBYTE) |
(void)mblen(NULL, 0); |
#endif |
- |
+ |
while (format[index]) |
{ |
#if defined(TRIO_COMPILER_SUPPORTS_MULTIBYTE) |
@@ -3120,7 +3140,7 @@ TRIO_ARGS3((data, format, parameters), |
/* Skip the parameter entries */ |
while (parameters[i].type == FORMAT_PARAMETER) |
i++; |
- |
+ |
flags = parameters[i].flags; |
/* Find width */ |
@@ -3140,7 +3160,7 @@ TRIO_ARGS3((data, format, parameters), |
width = -width; |
} |
} |
- |
+ |
/* Find precision */ |
if (flags & FLAGS_PRECISION) |
{ |
@@ -3171,7 +3191,7 @@ TRIO_ARGS3((data, format, parameters), |
/* Get base from parameter list */ |
base = (int)parameters[base].data.number.as_signed; |
} |
- |
+ |
switch (parameters[i].type) |
{ |
case FORMAT_CHAR: |
@@ -3251,7 +3271,7 @@ TRIO_ARGS3((data, format, parameters), |
case FORMAT_POINTER: |
{ |
trio_reference_t reference; |
- |
+ |
reference.data = data; |
reference.parameter = ¶meters[i]; |
trio_print_pointer(&reference, parameters[i].data.pointer); |
@@ -3354,7 +3374,7 @@ TRIO_ARGS3((data, format, parameters), |
} |
break; |
#endif /* defined(FORMAT_USER_DEFINED) */ |
- |
+ |
default: |
break; |
} /* switch parameter type */ |
@@ -3380,7 +3400,7 @@ TrioFormatRef |
TRIO_ARGS4((reference, format, arglist, argarray), |
trio_reference_t *reference, |
TRIO_CONST char *format, |
- va_list *arglist, |
+ TRIO_VA_LIST_PTR arglist, |
trio_pointer_t *argarray) |
{ |
int status; |
@@ -3408,7 +3428,7 @@ TRIO_ARGS6((destination, destinationSize, OutStream, format, arglist, argarray), |
size_t destinationSize, |
void (*OutStream) TRIO_PROTO((trio_class_t *, int)), |
TRIO_CONST char *format, |
- va_list *arglist, |
+ TRIO_VA_LIST_PTR arglist, |
trio_pointer_t *argarray) |
{ |
int status; |
@@ -3564,7 +3584,7 @@ TRIO_ARGS2((self, output), |
assert(VALID(self)); |
assert(VALID(self->location)); |
- |
+ |
buffer = (char **)self->location; |
if (self->processed < self->max) |
@@ -3632,9 +3652,9 @@ TRIO_VARGS2((format, va_alist), |
va_list args; |
assert(VALID(format)); |
- |
+ |
TRIO_VA_START(args, format); |
- status = TrioFormat(stdout, 0, TrioOutStreamFile, format, &args, NULL); |
+ status = TrioFormat(stdout, 0, TrioOutStreamFile, format, TRIO_VA_LIST_ADDR(args), NULL); |
TRIO_VA_END(args); |
return status; |
} |
@@ -3654,7 +3674,7 @@ TRIO_ARGS2((format, args), |
{ |
assert(VALID(format)); |
- return TrioFormat(stdout, 0, TrioOutStreamFile, format, &args, NULL); |
+ return TrioFormat(stdout, 0, TrioOutStreamFile, format, TRIO_VA_LIST_ADDR(args), NULL); |
} |
/** |
@@ -3699,9 +3719,9 @@ TRIO_VARGS3((file, format, va_alist), |
assert(VALID(file)); |
assert(VALID(format)); |
- |
+ |
TRIO_VA_START(args, format); |
- status = TrioFormat(file, 0, TrioOutStreamFile, format, &args, NULL); |
+ status = TrioFormat(file, 0, TrioOutStreamFile, format, TRIO_VA_LIST_ADDR(args), NULL); |
TRIO_VA_END(args); |
return status; |
} |
@@ -3723,8 +3743,8 @@ TRIO_ARGS3((file, format, args), |
{ |
assert(VALID(file)); |
assert(VALID(format)); |
- |
- return TrioFormat(file, 0, TrioOutStreamFile, format, &args, NULL); |
+ |
+ return TrioFormat(file, 0, TrioOutStreamFile, format, TRIO_VA_LIST_ADDR(args), NULL); |
} |
/** |
@@ -3744,7 +3764,7 @@ TRIO_ARGS3((file, format, args), |
{ |
assert(VALID(file)); |
assert(VALID(format)); |
- |
+ |
return TrioFormat(file, 0, TrioOutStreamFile, format, NULL, args); |
} |
@@ -3771,9 +3791,9 @@ TRIO_VARGS3((fd, format, va_alist), |
va_list args; |
assert(VALID(format)); |
- |
+ |
TRIO_VA_START(args, format); |
- status = TrioFormat(&fd, 0, TrioOutStreamFileDescriptor, format, &args, NULL); |
+ status = TrioFormat(&fd, 0, TrioOutStreamFileDescriptor, format, TRIO_VA_LIST_ADDR(args), NULL); |
TRIO_VA_END(args); |
return status; |
} |
@@ -3794,8 +3814,8 @@ TRIO_ARGS3((fd, format, args), |
va_list args) |
{ |
assert(VALID(format)); |
- |
- return TrioFormat(&fd, 0, TrioOutStreamFileDescriptor, format, &args, NULL); |
+ |
+ return TrioFormat(&fd, 0, TrioOutStreamFileDescriptor, format, TRIO_VA_LIST_ADDR(args), NULL); |
} |
/** |
@@ -3814,7 +3834,7 @@ TRIO_ARGS3((fd, format, args), |
trio_pointer_t *args) |
{ |
assert(VALID(format)); |
- |
+ |
return TrioFormat(&fd, 0, TrioOutStreamFileDescriptor, format, NULL, args); |
} |
@@ -3839,7 +3859,7 @@ TRIO_VARGS4((stream, closure, format, va_alist), |
TRIO_VA_START(args, format); |
data.stream.out = stream; |
data.closure = closure; |
- status = TrioFormat(&data, 0, TrioOutStreamCustom, format, &args, NULL); |
+ status = TrioFormat(&data, 0, TrioOutStreamCustom, format, TRIO_VA_LIST_ADDR(args), NULL); |
TRIO_VA_END(args); |
return status; |
} |
@@ -3859,7 +3879,7 @@ TRIO_ARGS4((stream, closure, format, args), |
data.stream.out = stream; |
data.closure = closure; |
- return TrioFormat(&data, 0, TrioOutStreamCustom, format, &args, NULL); |
+ return TrioFormat(&data, 0, TrioOutStreamCustom, format, TRIO_VA_LIST_ADDR(args), NULL); |
} |
TRIO_PUBLIC int |
@@ -3904,9 +3924,9 @@ TRIO_VARGS3((buffer, format, va_alist), |
assert(VALID(buffer)); |
assert(VALID(format)); |
- |
+ |
TRIO_VA_START(args, format); |
- status = TrioFormat(&buffer, 0, TrioOutStreamString, format, &args, NULL); |
+ status = TrioFormat(&buffer, 0, TrioOutStreamString, format, TRIO_VA_LIST_ADDR(args), NULL); |
*buffer = NIL; /* Terminate with NIL character */ |
TRIO_VA_END(args); |
return status; |
@@ -3932,7 +3952,7 @@ TRIO_ARGS3((buffer, format, args), |
assert(VALID(buffer)); |
assert(VALID(format)); |
- status = TrioFormat(&buffer, 0, TrioOutStreamString, format, &args, NULL); |
+ status = TrioFormat(&buffer, 0, TrioOutStreamString, format, TRIO_VA_LIST_ADDR(args), NULL); |
*buffer = NIL; |
return status; |
} |
@@ -3991,7 +4011,7 @@ TRIO_VARGS4((buffer, max, format, va_alist), |
TRIO_VA_START(args, format); |
status = TrioFormat(&buffer, max > 0 ? max - 1 : 0, |
- TrioOutStreamStringMax, format, &args, NULL); |
+ TrioOutStreamStringMax, format, TRIO_VA_LIST_ADDR(args), NULL); |
if (max > 0) |
*buffer = NIL; |
TRIO_VA_END(args); |
@@ -4021,7 +4041,7 @@ TRIO_ARGS4((buffer, max, format, args), |
assert(VALID(format)); |
status = TrioFormat(&buffer, max > 0 ? max - 1 : 0, |
- TrioOutStreamStringMax, format, &args, NULL); |
+ TrioOutStreamStringMax, format, TRIO_VA_LIST_ADDR(args), NULL); |
if (max > 0) |
*buffer = NIL; |
return status; |
@@ -4082,7 +4102,7 @@ TRIO_VARGS4((buffer, max, format, va_alist), |
buffer = &buffer[buf_len]; |
status = TrioFormat(&buffer, max - 1 - buf_len, |
- TrioOutStreamStringMax, format, &args, NULL); |
+ TrioOutStreamStringMax, format, TRIO_VA_LIST_ADDR(args), NULL); |
TRIO_VA_END(args); |
*buffer = NIL; |
return status; |
@@ -4098,14 +4118,14 @@ TRIO_ARGS4((buffer, max, format, args), |
{ |
int status; |
size_t buf_len; |
- |
+ |
assert(VALID(buffer)); |
assert(VALID(format)); |
buf_len = trio_length(buffer); |
buffer = &buffer[buf_len]; |
status = TrioFormat(&buffer, max - 1 - buf_len, |
- TrioOutStreamStringMax, format, &args, NULL); |
+ TrioOutStreamStringMax, format, TRIO_VA_LIST_ADDR(args), NULL); |
*buffer = NIL; |
return status; |
} |
@@ -4126,13 +4146,13 @@ TRIO_VARGS2((format, va_alist), |
char *result = NULL; |
assert(VALID(format)); |
- |
+ |
info = trio_xstring_duplicate(""); |
if (info) |
{ |
TRIO_VA_START(args, format); |
(void)TrioFormat(info, 0, TrioOutStreamStringDynamic, |
- format, &args, NULL); |
+ format, TRIO_VA_LIST_ADDR(args), NULL); |
TRIO_VA_END(args); |
trio_string_terminate(info); |
@@ -4151,14 +4171,14 @@ TRIO_ARGS2((format, args), |
{ |
trio_string_t *info; |
char *result = NULL; |
- |
+ |
assert(VALID(format)); |
- |
+ |
info = trio_xstring_duplicate(""); |
if (info) |
{ |
(void)TrioFormat(info, 0, TrioOutStreamStringDynamic, |
- format, &args, NULL); |
+ format, TRIO_VA_LIST_ADDR(args), NULL); |
trio_string_terminate(info); |
result = trio_string_extract(info); |
trio_string_destroy(info); |
@@ -4180,7 +4200,7 @@ TRIO_VARGS3((result, format, va_alist), |
assert(VALID(format)); |
*result = NULL; |
- |
+ |
info = trio_xstring_duplicate(""); |
if (info == NULL) |
{ |
@@ -4190,7 +4210,7 @@ TRIO_VARGS3((result, format, va_alist), |
{ |
TRIO_VA_START(args, format); |
status = TrioFormat(info, 0, TrioOutStreamStringDynamic, |
- format, &args, NULL); |
+ format, TRIO_VA_LIST_ADDR(args), NULL); |
TRIO_VA_END(args); |
if (status >= 0) |
{ |
@@ -4211,11 +4231,11 @@ TRIO_ARGS3((result, format, args), |
{ |
int status; |
trio_string_t *info; |
- |
+ |
assert(VALID(format)); |
*result = NULL; |
- |
+ |
info = trio_xstring_duplicate(""); |
if (info == NULL) |
{ |
@@ -4224,7 +4244,7 @@ TRIO_ARGS3((result, format, args), |
else |
{ |
status = TrioFormat(info, 0, TrioOutStreamStringDynamic, |
- format, &args, NULL); |
+ format, TRIO_VA_LIST_ADDR(args), NULL); |
if (status >= 0) |
{ |
trio_string_terminate(info); |
@@ -4264,7 +4284,7 @@ TRIO_ARGS3((result, format, args), |
@param name |
@return Handle. |
*/ |
-TRIO_PUBLIC trio_pointer_t |
+TRIO_PUBLIC trio_pointer_t |
trio_register |
TRIO_ARGS2((callback, name), |
trio_callback_t callback, |
@@ -4291,23 +4311,23 @@ TRIO_ARGS2((callback, name), |
} |
return NULL; |
} |
- |
+ |
/* Bail out if namespace is too long */ |
if (trio_length(name) >= MAX_USER_NAME) |
return NULL; |
- |
+ |
/* Bail out if namespace already is registered */ |
def = TrioFindNamespace(name, &prev); |
if (def) |
return NULL; |
} |
- |
+ |
def = (trio_userdef_t *)TRIO_MALLOC(sizeof(trio_userdef_t)); |
if (def) |
{ |
if (internalEnterCriticalRegion) |
(void)internalEnterCriticalRegion(NULL); |
- |
+ |
if (name) |
{ |
/* Link into internal list */ |
@@ -4352,12 +4372,12 @@ TRIO_ARGS1((handle), |
{ |
if (internalEnterCriticalRegion) |
(void)internalEnterCriticalRegion(NULL); |
- |
+ |
if (prev == NULL) |
internalUserDef = NULL; |
else |
prev->next = def->next; |
- |
+ |
if (internalLeaveCriticalRegion) |
(void)internalLeaveCriticalRegion(NULL); |
} |
@@ -4377,14 +4397,14 @@ TRIO_ARGS1((ref), |
#if defined(FORMAT_USER_DEFINED) |
assert(((trio_reference_t *)ref)->parameter->type == FORMAT_USER_DEFINED); |
#endif |
- |
+ |
return (((trio_reference_t *)ref)->parameter->user_data); |
} |
/************************************************************************* |
* trio_get_argument [public] |
*/ |
-trio_pointer_t |
+trio_pointer_t |
trio_get_argument |
TRIO_ARGS1((ref), |
trio_pointer_t ref) |
@@ -4392,7 +4412,7 @@ TRIO_ARGS1((ref), |
#if defined(FORMAT_USER_DEFINED) |
assert(((trio_reference_t *)ref)->parameter->type == FORMAT_USER_DEFINED); |
#endif |
- |
+ |
return ((trio_reference_t *)ref)->parameter->data.pointer; |
} |
@@ -4924,9 +4944,9 @@ TRIO_VARGS3((ref, format, va_alist), |
va_list arglist; |
assert(VALID(format)); |
- |
+ |
TRIO_VA_START(arglist, format); |
- status = TrioFormatRef((trio_reference_t *)ref, format, &arglist, NULL); |
+ status = TrioFormatRef((trio_reference_t *)ref, format, TRIO_VA_LIST_ADDR(arglist), NULL); |
TRIO_VA_END(arglist); |
return status; |
} |
@@ -4942,8 +4962,8 @@ TRIO_ARGS3((ref, format, arglist), |
va_list arglist) |
{ |
assert(VALID(format)); |
- |
- return TrioFormatRef((trio_reference_t *)ref, format, &arglist, NULL); |
+ |
+ return TrioFormatRef((trio_reference_t *)ref, format, TRIO_VA_LIST_ADDR(arglist), NULL); |
} |
/************************************************************************* |
@@ -4957,7 +4977,7 @@ TRIO_ARGS3((ref, format, argarray), |
trio_pointer_t *argarray) |
{ |
assert(VALID(format)); |
- |
+ |
return TrioFormatRef((trio_reference_t *)ref, format, NULL, argarray); |
} |
@@ -5206,7 +5226,7 @@ TRIO_ARGS4((format, indexPointer, flagsPointer, characterclass), |
switch (ch) |
{ |
case QUALIFIER_MINUS: /* Scanlist ranges */ |
- |
+ |
/* |
* Both C99 and UNIX98 describes ranges as implementation- |
* defined. |
@@ -5233,17 +5253,17 @@ TRIO_ARGS4((format, indexPointer, flagsPointer, characterclass), |
return TRIO_ERROR_RETURN(TRIO_EINVAL, index); |
if (range_begin > range_end) |
return TRIO_ERROR_RETURN(TRIO_ERANGE, index); |
- |
+ |
for (i = (int)range_begin; i <= (int)range_end; i++) |
characterclass[i]++; |
- |
+ |
ch = range_end; |
break; |
- |
+ |
#if TRIO_EXTENSION |
case SPECIFIER_GROUP: |
- |
+ |
switch (format[index + 1]) |
{ |
case QUALIFIER_DOT: /* Collating symbol */ |
@@ -5262,15 +5282,15 @@ TRIO_ARGS4((format, indexPointer, flagsPointer, characterclass), |
} |
if (format[++i] != SPECIFIER_UNGROUP) |
return -1; |
- |
+ |
index = i; |
break; |
- |
+ |
case QUALIFIER_EQUAL: /* Equivalence class expressions */ |
{ |
unsigned int j; |
unsigned int k; |
- |
+ |
if (internalCollationUnconverted) |
{ |
/* Lazy evaluation of collation array */ |
@@ -5294,13 +5314,13 @@ TRIO_ARGS4((format, indexPointer, flagsPointer, characterclass), |
} |
if (format[++i] != SPECIFIER_UNGROUP) |
return -1; |
- |
+ |
index = i; |
} |
break; |
- |
+ |
case QUALIFIER_COLON: /* Character class expressions */ |
- |
+ |
if (trio_equal_max(CLASS_ALNUM, sizeof(CLASS_ALNUM) - 1, |
&format[index])) |
{ |
@@ -5400,9 +5420,9 @@ TRIO_ARGS4((format, indexPointer, flagsPointer, characterclass), |
break; |
} |
break; |
- |
+ |
#endif /* TRIO_EXTENSION */ |
- |
+ |
default: |
characterclass[(int)ch]++; |
break; |
@@ -5448,9 +5468,9 @@ TRIO_ARGS5((self, target, flags, width, base), |
} |
internalDigitsUnconverted = FALSE; |
} |
- |
+ |
TrioSkipWhitespaces(self); |
- |
+ |
if (!(flags & FLAGS_UNSIGNED)) |
{ |
/* Leading sign */ |
@@ -5464,9 +5484,9 @@ TRIO_ARGS5((self, target, flags, width, base), |
isNegative = TRUE; |
} |
} |
- |
+ |
count = self->processed; |
- |
+ |
if (flags & FLAGS_ALTERNATIVE) |
{ |
switch (base) |
@@ -5527,7 +5547,7 @@ TRIO_ARGS5((self, target, flags, width, base), |
} |
else |
break; |
- |
+ |
number *= base; |
number += digit; |
gotNumber = TRUE; /* we need at least one digit */ |
@@ -5538,7 +5558,7 @@ TRIO_ARGS5((self, target, flags, width, base), |
/* Was anything read at all? */ |
if (!gotNumber) |
return FALSE; |
- |
+ |
if (target) |
*target = (isNegative) ? -((trio_intmax_t)number) : number; |
return TRUE; |
@@ -5558,7 +5578,7 @@ TRIO_ARGS4((self, target, flags, width), |
int i; |
char ch; |
trio_uintmax_t number; |
- |
+ |
assert(VALID(self)); |
assert(VALID(self->InStream)); |
@@ -5603,7 +5623,7 @@ TRIO_ARGS4((self, target, flags, width), |
break; |
} |
} |
- |
+ |
if (target) |
target[i] = ch; |
} |
@@ -5622,12 +5642,12 @@ TRIO_ARGS4((self, target, flags, width), |
int width) |
{ |
int i; |
- |
+ |
assert(VALID(self)); |
assert(VALID(self->InStream)); |
TrioSkipWhitespaces(self); |
- |
+ |
/* |
* Continue until end of string is reached, a whitespace is encountered, |
* or width is exceeded |
@@ -5663,7 +5683,7 @@ TRIO_ARGS4((self, target, flags, width), |
int amount = 0; |
trio_wchar_t wch; |
char buffer[MB_LEN_MAX + 1]; |
- |
+ |
assert(VALID(self)); |
assert(VALID(self->InStream)); |
@@ -5720,7 +5740,7 @@ TRIO_ARGS4((self, target, flags, width), |
{ |
int i; |
int size; |
- |
+ |
assert(VALID(self)); |
assert(VALID(self->InStream)); |
@@ -5729,7 +5749,7 @@ TRIO_ARGS4((self, target, flags, width), |
#if defined(TRIO_COMPILER_SUPPORTS_MULTIBYTE) |
(void)mblen(NULL, 0); |
#endif |
- |
+ |
/* |
* Continue until end of string is reached, a whitespace is encountered, |
* or width is exceeded |
@@ -5767,7 +5787,7 @@ TRIO_ARGS5((self, target, characterclass, flags, width), |
{ |
int ch; |
int i; |
- |
+ |
assert(VALID(self)); |
assert(VALID(self->InStream)); |
@@ -5782,7 +5802,7 @@ TRIO_ARGS5((self, target, characterclass, flags, width), |
target[i] = (char)ch; |
self->InStream(self, &ch); |
} |
- |
+ |
if (target) |
target[i] = NIL; |
return TRUE; |
@@ -5811,12 +5831,12 @@ TRIO_ARGS4((self, target, flags, width), |
BOOLEAN_T isHex = FALSE; |
doubleString[0] = 0; |
- |
+ |
if ((width == NO_WIDTH) || (width > (int)sizeof(doubleString) - 1)) |
width = sizeof(doubleString) - 1; |
- |
+ |
TrioSkipWhitespaces(self); |
- |
+ |
/* |
* Read entire double number from stream. trio_to_double requires |
* a string as input, but InStream can be anything, so we have to |
@@ -5902,11 +5922,11 @@ TRIO_ARGS4((self, target, flags, width), |
self->InStream(self, &ch); |
} |
break; |
- |
+ |
default: |
break; |
} |
- |
+ |
while ((ch != EOF) && (index - start < width)) |
{ |
/* Integer part */ |
@@ -5966,7 +5986,7 @@ TRIO_ARGS4((self, target, flags, width), |
return FALSE; |
doubleString[index] = 0; |
- |
+ |
if (flags & FLAGS_LONGDOUBLE) |
{ |
*((trio_long_double_t *)target) = trio_to_long_double(doubleString, NULL); |
@@ -5992,7 +6012,7 @@ TRIO_ARGS3((self, target, flags), |
char buffer[sizeof(internalNullString)]; |
flags |= (FLAGS_UNSIGNED | FLAGS_ALTERNATIVE | FLAGS_NILPADDING); |
- |
+ |
if (TrioReadNumber(self, |
&number, |
flags, |
@@ -6013,7 +6033,7 @@ TRIO_ARGS3((self, target, flags), |
: buffer, |
0, |
sizeof(internalNullString) - 1)) |
- { |
+ { |
if (trio_equal_case(buffer, internalNullString)) |
{ |
if (target) |
@@ -6077,12 +6097,12 @@ TRIO_ARGS3((data, format, parameters), |
} |
} |
#endif /* TRIO_COMPILER_SUPPORTS_MULTIBYTE */ |
- |
+ |
if ((EOF == ch) && (parameters[i].type != FORMAT_COUNT)) |
{ |
return (assignment > 0) ? assignment : EOF; |
} |
- |
+ |
if (CHAR_IDENTIFIER == format[index]) |
{ |
if (CHAR_IDENTIFIER == format[index + 1]) |
@@ -6101,7 +6121,7 @@ TRIO_ARGS3((data, format, parameters), |
/* Skip the parameter entries */ |
while (parameters[i].type == FORMAT_PARAMETER) |
i++; |
- |
+ |
flags = parameters[i].flags; |
/* Find width */ |
width = parameters[i].width; |
@@ -6117,7 +6137,7 @@ TRIO_ARGS3((data, format, parameters), |
/* Get base from parameter list */ |
base = (int)parameters[base].data.number.as_signed; |
} |
- |
+ |
switch (parameters[i].type) |
{ |
case FORMAT_INT: |
@@ -6165,7 +6185,7 @@ TRIO_ARGS3((data, format, parameters), |
} |
} |
break; /* FORMAT_INT */ |
- |
+ |
case FORMAT_STRING: |
#if TRIO_WIDECHAR |
if (flags & FLAGS_WIDECHAR) |
@@ -6229,7 +6249,7 @@ TRIO_ARGS3((data, format, parameters), |
} |
/* Skip over group specifier */ |
index++; |
- |
+ |
memset(characterclass, 0, sizeof(characterclass)); |
rc = TrioGetCharacterClass(format, |
&index, |
@@ -6291,7 +6311,7 @@ TRIO_ARGS3((data, format, parameters), |
} |
} |
break; /* FORMAT_COUNT */ |
- |
+ |
case FORMAT_CHAR: |
#if TRIO_WIDECHAR |
if (flags & FLAGS_WIDECHAR) |
@@ -6353,7 +6373,7 @@ TRIO_ARGS3((data, format, parameters), |
} |
else |
return assignment; |
- |
+ |
index++; |
} |
} |
@@ -6370,7 +6390,7 @@ TRIO_ARGS6((source, sourceSize, InStream, format, arglist, argarray), |
size_t sourceSize, |
void (*InStream) TRIO_PROTO((trio_class_t *, int *)), |
TRIO_CONST char *format, |
- va_list *arglist, |
+ TRIO_VA_LIST_PTR arglist, |
trio_pointer_t *argarray) |
{ |
int status; |
@@ -6392,7 +6412,7 @@ TRIO_ARGS6((source, sourceSize, InStream, format, arglist, argarray), |
TrioSetLocale(); |
} |
#endif |
- |
+ |
status = TrioParse(TYPE_SCAN, format, parameters, arglist, argarray); |
if (status < 0) |
return status; |
@@ -6414,11 +6434,14 @@ TRIO_ARGS2((self, intPointer), |
trio_class_t *self, |
int *intPointer) |
{ |
- FILE *file = (FILE *)self->location; |
+ FILE *file; |
assert(VALID(self)); |
+ assert(VALID(self->location)); |
assert(VALID(file)); |
+ file = (FILE *)self->location; |
+ |
self->current = fgetc(file); |
if (self->current == EOF) |
{ |
@@ -6431,7 +6454,7 @@ TRIO_ARGS2((self, intPointer), |
self->processed++; |
self->committed++; |
} |
- |
+ |
if (VALID(intPointer)) |
{ |
*intPointer = self->current; |
@@ -6447,11 +6470,14 @@ TRIO_ARGS2((self, intPointer), |
trio_class_t *self, |
int *intPointer) |
{ |
- int fd = *((int *)self->location); |
+ int fd; |
int size; |
unsigned char input; |
assert(VALID(self)); |
+ assert(VALID(self->location)); |
+ |
+ fd = *((int *)self->location); |
size = read(fd, &input, sizeof(char)); |
if (size == -1) |
@@ -6468,7 +6494,7 @@ TRIO_ARGS2((self, intPointer), |
self->committed++; |
self->processed++; |
} |
- |
+ |
if (VALID(intPointer)) |
{ |
*intPointer = self->current; |
@@ -6485,7 +6511,7 @@ TRIO_ARGS2((self, intPointer), |
int *intPointer) |
{ |
trio_custom_t *data; |
- |
+ |
assert(VALID(self)); |
assert(VALID(self->location)); |
@@ -6494,7 +6520,7 @@ TRIO_ARGS2((self, intPointer), |
self->current = (data->stream.in == NULL) |
? NIL |
: (data->stream.in)(data->closure); |
- |
+ |
if (self->current == NIL) |
{ |
self->current = EOF; |
@@ -6504,7 +6530,7 @@ TRIO_ARGS2((self, intPointer), |
self->processed++; |
self->committed++; |
} |
- |
+ |
if (VALID(intPointer)) |
{ |
*intPointer = self->current; |
@@ -6537,7 +6563,7 @@ TRIO_ARGS2((self, intPointer), |
self->processed++; |
self->committed++; |
} |
- |
+ |
if (VALID(intPointer)) |
{ |
*intPointer = self->current; |
@@ -6578,11 +6604,11 @@ TRIO_VARGS2((format, va_alist), |
va_list args; |
assert(VALID(format)); |
- |
+ |
TRIO_VA_START(args, format); |
status = TrioScan((trio_pointer_t)stdin, 0, |
TrioInStreamFile, |
- format, &args, NULL); |
+ format, TRIO_VA_LIST_ADDR(args), NULL); |
TRIO_VA_END(args); |
return status; |
} |
@@ -6594,10 +6620,10 @@ TRIO_ARGS2((format, args), |
va_list args) |
{ |
assert(VALID(format)); |
- |
+ |
return TrioScan((trio_pointer_t)stdin, 0, |
TrioInStreamFile, |
- format, &args, NULL); |
+ format, TRIO_VA_LIST_ADDR(args), NULL); |
} |
TRIO_PUBLIC int |
@@ -6607,7 +6633,7 @@ TRIO_ARGS2((format, args), |
trio_pointer_t *args) |
{ |
assert(VALID(format)); |
- |
+ |
return TrioScan((trio_pointer_t)stdin, 0, |
TrioInStreamFile, |
format, NULL, args); |
@@ -6628,11 +6654,11 @@ TRIO_VARGS3((file, format, va_alist), |
assert(VALID(file)); |
assert(VALID(format)); |
- |
+ |
TRIO_VA_START(args, format); |
status = TrioScan((trio_pointer_t)file, 0, |
TrioInStreamFile, |
- format, &args, NULL); |
+ format, TRIO_VA_LIST_ADDR(args), NULL); |
TRIO_VA_END(args); |
return status; |
} |
@@ -6646,10 +6672,10 @@ TRIO_ARGS3((file, format, args), |
{ |
assert(VALID(file)); |
assert(VALID(format)); |
- |
+ |
return TrioScan((trio_pointer_t)file, 0, |
TrioInStreamFile, |
- format, &args, NULL); |
+ format, TRIO_VA_LIST_ADDR(args), NULL); |
} |
TRIO_PUBLIC int |
@@ -6661,7 +6687,7 @@ TRIO_ARGS3((file, format, args), |
{ |
assert(VALID(file)); |
assert(VALID(format)); |
- |
+ |
return TrioScan((trio_pointer_t)file, 0, |
TrioInStreamFile, |
format, NULL, args); |
@@ -6681,11 +6707,11 @@ TRIO_VARGS3((fd, format, va_alist), |
va_list args; |
assert(VALID(format)); |
- |
+ |
TRIO_VA_START(args, format); |
status = TrioScan((trio_pointer_t)&fd, 0, |
TrioInStreamFileDescriptor, |
- format, &args, NULL); |
+ format, TRIO_VA_LIST_ADDR(args), NULL); |
TRIO_VA_END(args); |
return status; |
} |
@@ -6698,10 +6724,10 @@ TRIO_ARGS3((fd, format, args), |
va_list args) |
{ |
assert(VALID(format)); |
- |
+ |
return TrioScan((trio_pointer_t)&fd, 0, |
TrioInStreamFileDescriptor, |
- format, &args, NULL); |
+ format, TRIO_VA_LIST_ADDR(args), NULL); |
} |
TRIO_PUBLIC int |
@@ -6712,7 +6738,7 @@ TRIO_ARGS3((fd, format, args), |
trio_pointer_t *args) |
{ |
assert(VALID(format)); |
- |
+ |
return TrioScan((trio_pointer_t)&fd, 0, |
TrioInStreamFileDescriptor, |
format, NULL, args); |
@@ -6735,11 +6761,11 @@ TRIO_VARGS4((stream, closure, format, va_alist), |
assert(VALID(stream)); |
assert(VALID(format)); |
- |
+ |
TRIO_VA_START(args, format); |
data.stream.in = stream; |
data.closure = closure; |
- status = TrioScan(&data, 0, TrioInStreamCustom, format, &args, NULL); |
+ status = TrioScan(&data, 0, TrioInStreamCustom, format, TRIO_VA_LIST_ADDR(args), NULL); |
TRIO_VA_END(args); |
return status; |
} |
@@ -6753,13 +6779,13 @@ TRIO_ARGS4((stream, closure, format, args), |
va_list args) |
{ |
trio_custom_t data; |
- |
+ |
assert(VALID(stream)); |
assert(VALID(format)); |
data.stream.in = stream; |
data.closure = closure; |
- return TrioScan(&data, 0, TrioInStreamCustom, format, &args, NULL); |
+ return TrioScan(&data, 0, TrioInStreamCustom, format, TRIO_VA_LIST_ADDR(args), NULL); |
} |
TRIO_PUBLIC int |
@@ -6771,7 +6797,7 @@ TRIO_ARGS4((stream, closure, format, args), |
trio_pointer_t *args) |
{ |
trio_custom_t data; |
- |
+ |
assert(VALID(stream)); |
assert(VALID(format)); |
@@ -6795,11 +6821,11 @@ TRIO_VARGS3((buffer, format, va_alist), |
assert(VALID(buffer)); |
assert(VALID(format)); |
- |
+ |
TRIO_VA_START(args, format); |
status = TrioScan((trio_pointer_t)&buffer, 0, |
TrioInStreamString, |
- format, &args, NULL); |
+ format, TRIO_VA_LIST_ADDR(args), NULL); |
TRIO_VA_END(args); |
return status; |
} |
@@ -6813,10 +6839,10 @@ TRIO_ARGS3((buffer, format, args), |
{ |
assert(VALID(buffer)); |
assert(VALID(format)); |
- |
+ |
return TrioScan((trio_pointer_t)&buffer, 0, |
TrioInStreamString, |
- format, &args, NULL); |
+ format, TRIO_VA_LIST_ADDR(args), NULL); |
} |
TRIO_PUBLIC int |
@@ -6828,7 +6854,7 @@ TRIO_ARGS3((buffer, format, args), |
{ |
assert(VALID(buffer)); |
assert(VALID(format)); |
- |
+ |
return TrioScan((trio_pointer_t)&buffer, 0, |
TrioInStreamString, |
format, NULL, args); |