Subversion Repositories Kolibri OS

Rev

Rev 8687 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 8687 Rev 8718
Line 1... Line 1...
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
};
Line 2... Line 34...
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;
-
 
39
   va_start(arg, format);
7
   va_start(arg, format);
40
 
-
 
41
   n = vsscanf(s, format, arg);
8
   n = vsscanf(s, format, arg);
42
 
9
   va_end(arg);
43
   va_end(arg);
10
   return n;
44
   return n;