ack/lang/cem/libcc.ansi/sys/stdio/sscanf.c
David Given 9109d7af7f First stage in modularising FILE*. Refactor so that printf/scanf don't rely on
FILE* innards; allow plats to replace the entire emulated FILE* system.
2019-06-15 13:07:10 +02:00

46 lines
652 B
C

/*
* sscanf - read formatted output from a string
*/
/* $Id$ */
#include <stdio.h>
#include <stdarg.h>
#include <string.h>
#include "loc_incl.h"
#if ACKCONF_WANT_STDIO
static const char* input_buffer;
static int sscanf_getc(void)
{
char c = *input_buffer;
if (c == 0)
return EOF;
input_buffer++;
return c;
}
static void sscanf_ungetc(int c)
{
/* sscanf always ungets the last character read. */
input_buffer--;
}
int sscanf(const char* s, const char* format, ...)
{
va_list ap;
int retval;
va_start(ap, format);
input_buffer = s;
retval = _doscan(format, ap, sscanf_getc, sscanf_ungetc);
va_end(ap);
return retval;
}
#endif