Subversion Repositories Kolibri OS

Rev

Rev 8687 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
8687 turbocat 1
#include 
8718 turbocat 2
#include 
8687 turbocat 3
 
8718 turbocat 4
int virtual_getc_str(void *sp, const void *obj)
5
// get next chat from string obj, save point is ptr to string char ptr
8687 turbocat 6
{
8718 turbocat 7
    int ch;
8
    const char *s = (const char *)obj;
9
    const char**spc= (const char**)sp;
10
    if (!s || !spc) return EOF;  // error
11
 
12
    if (!*spc) *spc = s;    // first call, init savepoint
13
 
14
    if (!**spc) return EOF;  // EOS
15
 
16
    ch = **spc; (*spc)++ ;
17
 
18
    return ch;
19
}
20
 
21
void virtual_ungetc_str(void *sp, int c, const void *obj)
22
// if can, one step back savepoint in s
23
{
24
    const char *s = (const char *)obj;
25
    const char**spc= (const char**)sp;
26
 
27
    if (s && spc && *spc > s) (*spc)--;
28
}
29
 
30
int vsscanf ( const char * s, const char * format, va_list arg )
31
{
32
    return format_scan(s, format, arg, &virtual_getc_str, &virtual_ungetc_str);
33
};
34
 
35
int sscanf ( const char * s, const char * format, ...)
36
{
37
   va_list      arg;
8687 turbocat 38
   int  n;
39
   va_start(arg, format);
8718 turbocat 40
 
8687 turbocat 41
   n = vsscanf(s, format, arg);
8718 turbocat 42
 
8687 turbocat 43
   va_end(arg);
44
   return n;
45
}
46