- inch();
- while (!fin)
- {
- if (*format == '\0')
- {
- fin = 1;
- }
- else if (*format == '%')
- {
- format++;
- if (*format == '%')
- {
- if (ch != '%') return (cnt);
- inch();
- }
- else if (*format == 's')
- {
- cptr = va_arg(arg, char *);
- *cptr++ = (char)ch;
- inch();
- while ((ch >= 0) && (!isspace(ch)))
- {
- *cptr++ = (char)ch;
- inch();
- }
- *cptr = '\0';
- if (ch < 0)
- {
- fin = 1;
- }
- }
- else if (*format == 'd')
- {
- iptr = va_arg(arg, int *);
- if (!isdigit(ch)) return (cnt);
- *iptr = ch - '0';
- inch();
- while ((ch >= 0) && (isdigit(ch)))
- {
- *iptr = *iptr * 10 + (ch - '0');
- inch();
- }
- if (ch < 0)
- {
- fin = 1;
- }
- }
- }
- else
- {
- if (ch != *format) return (cnt);
- inch();
- }
- }
- return (cnt);
+#ifdef TEST
+#define _PDCLIB_FILEID "stdio/fscanf.c"
+#define _PDCLIB_FILEIO
+
+#include <_PDCLIB_test.h>
+
+#define testscanf( stream, format, ... ) fscanf( stream, format, __VA_ARGS__ )
+
+int main( void )
+{
+ FILE * source;
+ TESTCASE( ( source = tmpfile() ) != NULL );
+#include "scanf_testcases.h"
+ TESTCASE( fclose( source ) == 0 );
+ return TEST_RESULTS;