1 /******************************************************************************
2 * Copyright (c) 2004, 2008 IBM Corporation
4 * This program and the accompanying materials
5 * are made available under the terms of the BSD License
6 * which accompanies this distribution, and is available at
7 * http://www.opensource.org/licenses/bsd-license.php
10 * IBM Corporation - initial implementation
11 *****************************************************************************/
19 _scanf(const char **buffer, const char *fmt, va_list *ap)
33 if(length == 0) length = 256;
35 for(i = 0; **buffer != ' ' && **buffer != '\t' && **buffer != '\n' && i < length; i++) {
41 *(va_arg(*ap, int *)) = strtol(tbuf, NULL, 10);
45 if(length == 0) length = 256;
47 for(i = 0; **buffer != ' ' && **buffer != '\t' && **buffer != '\n' && i < length; i++) {
53 *(va_arg(*ap, int *)) = strtol(tbuf, NULL, 16);
57 if(length == 0) length = 256;
59 for(i = 0; **buffer != ' ' && **buffer != '\t' && **buffer != '\n' && i < length; i++) {
65 *(va_arg(*ap, int *)) = strtol(tbuf, NULL, 8);
68 *(va_arg(*ap, char *)) = **buffer;
71 for(i = 1; i < length; i++)
75 if(length == 0) length = 256;
77 for(i = 0; **buffer != ' ' && **buffer != '\t' && **buffer != '\n' && i < length; i++) {
84 strcpy(va_arg(*ap, char *), tbuf);
87 if(*fmt >= '0' && *fmt <= '9')
98 vsscanf(const char *buffer, const char *fmt, va_list ap)
101 while(*fmt != '\0') {
112 } while(!(*fmt == 'd' || *fmt == 'i' || *fmt == 'x' || *fmt == 'X'
113 || *fmt == 'p' || *fmt == 'c' || *fmt == 's' || *fmt == '%'
114 || *fmt == 'O' || *fmt == 'o' ));
118 while(*buffer == ' ' || *buffer == '\t' || *buffer == '\n')
120 _scanf(&buffer, formstr, &ap);