Subversion Repositories Kolibri OS

Rev

Rev 8687 | Go to most recent revision | Only display areas with differences | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 8687 Rev 8718
1
#include 
1
#include 
-
 
2
#include 
-
 
3
 
-
 
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
-
 
6
{
-
 
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
};
2
 
34
 
3
int sscanf(const char * s, const char * format, ...)
35
int sscanf ( const char * s, const char * format, ...)
4
{
36
{
5
   va_list arg;
37
   va_list      arg;
6
   int  n;
38
   int  n;
7
   va_start(arg, format);
39
   va_start(arg, format);
-
 
40
 
8
   n = vsscanf(s, format, arg);
41
   n = vsscanf(s, format, arg);
-
 
42
 
9
   va_end(arg);
43
   va_end(arg);
10
   return n;
44
   return n;
11
}
45
}