Rewrote _scanf. It does need some tests and improvements, but it's a more
standard version than before, and it does support the necessary functionality to support scanf functions for files. Added vfscanf, fscanf and vfscanf. git-svn-id: svn://svn.cc65.org/cc65/trunk@3301 b7a2c559-68d2-44c3-8de9-860c34a00d81
This commit is contained in:
@@ -12,13 +12,11 @@
|
||||
|
||||
|
||||
|
||||
/* Forward */
|
||||
struct indesc;
|
||||
|
||||
/* Type of the function that is called to input data. The function will
|
||||
* return EOF if no more data is available.
|
||||
*/
|
||||
typedef char (*infunc) (struct indesc* desc);
|
||||
typedef int __fastcall__ (*getfunc) (void* data);
|
||||
typedef int __fastcall__ (*ungetfunc) (int c, void* data);
|
||||
|
||||
|
||||
|
||||
@@ -26,21 +24,19 @@ typedef char (*infunc) (struct indesc* desc);
|
||||
* Beware: The low level functions will access the structure on the assembly
|
||||
* level, so check this when altering the structure.
|
||||
*/
|
||||
struct indesc {
|
||||
infunc fin; /* Pointer to input routine */
|
||||
unsigned ccount; /* Number of chars read */
|
||||
struct scanfdata {
|
||||
getfunc get; /* Pointer to input routine */
|
||||
ungetfunc unget; /* Pointer to pushback routine */
|
||||
unsigned ccount; /* Number of chars read */
|
||||
|
||||
/* Fields used outside of _scanf */
|
||||
char* buf; /* Pointer to input buffer */
|
||||
unsigned size; /* Size of input buffer */
|
||||
unsigned fill; /* Fill mark of input buffer */
|
||||
unsigned ridx; /* Read index of input buffer */
|
||||
void* data; /* Caller data */
|
||||
};
|
||||
|
||||
|
||||
|
||||
/* Internal scanning routine */
|
||||
int _scanf (struct indesc* d, const char* format, va_list ap);
|
||||
int _scanf (struct scanfdata* d, const char* format, va_list ap);
|
||||
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user