#include <stdio.h>
#include <stdarg.h>
#include <stdint.h>
+#include <limits.h>
#ifndef REGTEST
-int vfprintf( struct _PDCLIB_file_t * _PDCLIB_restrict stream, const char * _PDCLIB_restrict format, va_list arg )
+int vfprintf_unlocked( struct _PDCLIB_file_t * _PDCLIB_restrict stream,
+ const char * _PDCLIB_restrict format,
+ va_list arg )
{
/* TODO: This function should interpret format as multibyte characters. */
struct _PDCLIB_status_t status;
status.base = 0;
status.flags = 0;
- status.n = SIZE_MAX;
+ status.n = UINT_MAX;
status.i = 0;
status.current = 0;
status.s = NULL;
return status.i;
}
+int vfprintf( struct _PDCLIB_file_t * _PDCLIB_restrict stream,
+ const char * _PDCLIB_restrict format,
+ va_list arg )
+{
+ flockfile( stream );
+ int r = vfprintf_unlocked( stream, format, arg );
+ funlockfile( stream );
+ return r;
+}
+
#endif
#ifdef TEST
-#include <stdlib.h>
-#include <limits.h>
-#include <string.h>
+#define _PDCLIB_FILEID "stdio/vfprintf.c"
+#define _PDCLIB_FILEIO
+
#include <_PDCLIB_test.h>
static int testprintf( FILE * stream, const char * format, ... )
return i;
}
-#define TESTCASE_SPRINTF( x )
-
int main( void )
{
FILE * target;
- TESTCASE( ( target = fopen( testfile, "wb" ) ) != NULL );
-#include "printf_testcases.incl"
+ TESTCASE( ( target = tmpfile() ) != NULL );
+#include "printf_testcases.h"
TESTCASE( fclose( target ) == 0 );
-#include "fprintf_reftest.incl"
- TESTCASE( remove( testfile ) == 0 );
return TEST_RESULTS;
}