Completed _scanf.c, added vsscanf.c, rewrote sscanf.c.
Added an assembler include _file.inc and changed asm code that uses struct FILE to be independent of its size. Fixed return codes in several files to use EOF instead of -1. git-svn-id: svn://svn.cc65.org/cc65/trunk@1205 b7a2c559-68d2-44c3-8de9-860c34a00d81
This commit is contained in:
@@ -1,15 +1,13 @@
|
||||
/*
|
||||
* sscanf.c
|
||||
*
|
||||
* (C) Copyright 2001 Ullrich von Bassewitz (uz@cc65.org)
|
||||
* (C) Copyright 2001-2002 Ullrich von Bassewitz (uz@cc65.org)
|
||||
*
|
||||
*/
|
||||
|
||||
|
||||
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
#include "_scanf.h"
|
||||
|
||||
|
||||
|
||||
@@ -19,39 +17,18 @@
|
||||
|
||||
|
||||
|
||||
static char get (struct indesc* d)
|
||||
/* Read a character from the input string and return it */
|
||||
{
|
||||
char C;
|
||||
if (C = d->buf[d->ridx]) {
|
||||
/* Increment index only if end not reached */
|
||||
++d->ridx;
|
||||
}
|
||||
return C;
|
||||
}
|
||||
|
||||
|
||||
|
||||
int sscanf (const char* str, const char* format, ...)
|
||||
/* Standard C function */
|
||||
{
|
||||
struct indesc id;
|
||||
va_list ap;
|
||||
|
||||
/* Initialize the indesc struct. We leave all fields uninitialized that we
|
||||
* don't need
|
||||
*/
|
||||
id.fin = (infunc) get;
|
||||
id.buf = (char*) str;
|
||||
id.ridx = 0;
|
||||
|
||||
/* Setup for variable arguments */
|
||||
va_start (ap, format);
|
||||
|
||||
/* Call the internal function. Since we know that va_end won't do anything,
|
||||
* we will save the call and return the value directly.
|
||||
/* Call vsscanf(). Since we know that va_end won't do anything, we will
|
||||
* save the call and return the value directly.
|
||||
*/
|
||||
return _scanf (&id, format, ap);
|
||||
return vsscanf (str, format, ap);
|
||||
}
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user