ack/lang/cem/libcc.ansi/core/scanf/sscanf.c

48 lines
682 B
C
Raw Normal View History

1989-05-30 13:34:25 +00:00
/*
* sscanf - read formatted output from a string
*/
1994-06-24 14:02:31 +00:00
/* $Id$ */
1989-05-30 13:34:25 +00:00
2018-06-21 20:33:47 +00:00
#include <stdio.h>
#include <stdarg.h>
#include <string.h>
#include "doscan.h"
1989-05-30 13:34:25 +00:00
2018-06-23 16:54:40 +00:00
#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--;
}
2018-06-21 20:33:47 +00:00
int sscanf(const char* s, const char* format, ...)
1989-05-30 13:34:25 +00:00
{
va_list ap;
int retval;
va_start(ap, format);
input_buffer = s;
_doscan_get = sscanf_getc;
_doscan_unget = sscanf_ungetc;
retval = _doscan(format, ap);
1989-05-30 13:34:25 +00:00
va_end(ap);
return retval;
}
2018-06-23 16:54:40 +00:00
#endif