diff options
Diffstat (limited to 'libc/stdio/scanf.c')
-rw-r--r-- | libc/stdio/scanf.c | 114 |
1 files changed, 64 insertions, 50 deletions
diff --git a/libc/stdio/scanf.c b/libc/stdio/scanf.c index 7fe11514d..8def91c6b 100644 --- a/libc/stdio/scanf.c +++ b/libc/stdio/scanf.c @@ -43,14 +43,6 @@ * standards and from an official C standard defect report. */ -#define wcslen __wcslen -#define mbsrtowcs __mbsrtowcs -#define mbrtowc __mbrtowc -#define ungetc __ungetc -#define ungetwc __ungetwc -#define iswspace __iswspace -#define wcrtomb __wcrtomb - #define _ISOC99_SOURCE /* for LLONG_MAX primarily... */ #define _GNU_SOURCE #include <features.h> @@ -86,6 +78,27 @@ #include <bits/uClibc_fpmax.h> #endif /* __UCLIBC_HAS_FLOATS__ */ +libc_hidden_proto(memcmp) +libc_hidden_proto(memset) +libc_hidden_proto(strcpy) +libc_hidden_proto(strlen) +libc_hidden_proto(ungetc) +libc_hidden_proto(vfscanf) +libc_hidden_proto(vsscanf) +libc_hidden_proto(fclose) +libc_hidden_proto(getc_unlocked) +libc_hidden_proto(__fgetc_unlocked) +#ifdef __UCLIBC_HAS_WCHAR__ +libc_hidden_proto(wcslen) +libc_hidden_proto(vfwscanf) +libc_hidden_proto(vswscanf) +libc_hidden_proto(mbsrtowcs) +libc_hidden_proto(mbrtowc) +libc_hidden_proto(ungetwc) +libc_hidden_proto(iswspace) +libc_hidden_proto(fgetwc_unlocked) +#endif + #ifdef __UCLIBC_HAS_SCANF_GLIBC_A_FLAG__ #ifdef L_vfscanf /* only emit this once */ @@ -147,18 +160,19 @@ _stdlib_strto_l(register const char * __restrict str, /**********************************************************************/ #ifdef L_fscanf -int attribute_hidden __fscanf(FILE * __restrict stream, const char * __restrict format, ...) +int fscanf(FILE * __restrict stream, const char * __restrict format, ...) { va_list arg; int rv; va_start(arg, format); - rv = __vfscanf(stream, format, arg); + rv = vfscanf(stream, format, arg); va_end(arg); return rv; } -strong_alias(__fscanf,fscanf) +libc_hidden_proto(fscanf) +libc_hidden_def(fscanf) #endif /**********************************************************************/ @@ -170,7 +184,7 @@ int scanf(const char * __restrict format, ...) int rv; va_start(arg, format); - rv = __vfscanf(stdin, format, arg); + rv = vfscanf(stdin, format, arg); va_end(arg); return rv; @@ -182,18 +196,19 @@ int scanf(const char * __restrict format, ...) #ifdef __STDIO_HAS_VSSCANF -int attribute_hidden __sscanf(const char * __restrict str, const char * __restrict format, ...) +int sscanf(const char * __restrict str, const char * __restrict format, ...) { va_list arg; int rv; va_start(arg, format); - rv = __vsscanf(str, format, arg); + rv = vsscanf(str, format, arg); va_end(arg); return rv; } -strong_alias(__sscanf,sscanf) +libc_hidden_proto(sscanf) +libc_hidden_def(sscanf) #else /* __STDIO_HAS_VSSCANF */ #warning Skipping sscanf since no vsscanf! @@ -203,11 +218,12 @@ strong_alias(__sscanf,sscanf) /**********************************************************************/ #ifdef L_vscanf -int attribute_hidden __vscanf(const char * __restrict format, va_list arg) +int vscanf(const char * __restrict format, va_list arg) { - return __vfscanf(stdin, format, arg); + return vfscanf(stdin, format, arg); } -strong_alias(__vscanf,vscanf) +libc_hidden_proto(vscanf) +libc_hidden_def(vscanf) #endif /**********************************************************************/ @@ -219,7 +235,7 @@ strong_alias(__vscanf,vscanf) #ifdef __STDIO_BUFFERS -int attribute_hidden __vsscanf(__const char *sp, __const char *fmt, va_list ap) +int vsscanf(__const char *sp, __const char *fmt, va_list ap) { FILE f; @@ -253,22 +269,22 @@ int attribute_hidden __vsscanf(__const char *sp, __const char *fmt, va_list ap) f.__bufstart = f.__bufpos = (unsigned char *) ((void *) sp); f.__bufread = - f.__bufend = f.__bufstart + __strlen(sp); + f.__bufend = f.__bufstart + strlen(sp); __STDIO_STREAM_ENABLE_GETC(&f); __STDIO_STREAM_DISABLE_PUTC(&f); - return __vfscanf(&f, fmt, ap); + return vfscanf(&f, fmt, ap); } -strong_alias(__vsscanf,vsscanf) +libc_hidden_def(vsscanf) #elif !defined(__UCLIBC_HAS_WCHAR__) -int attribute_hidden __vsscanf(__const char *sp, __const char *fmt, va_list ap) +int vsscanf(__const char *sp, __const char *fmt, va_list ap) { __FILE_vsscanf f; f.bufpos = (unsigned char *) ((void *) sp); - f.bufread = f.bufpos + __strlen(sp); + f.bufread = f.bufpos + strlen(sp); /* __STDIO_STREAM_RESET_GCS(&f.f); */ #ifdef __UCLIBC_HAS_GLIBC_CUSTOM_STREAMS__ @@ -296,25 +312,25 @@ int attribute_hidden __vsscanf(__const char *sp, __const char *fmt, va_list ap) #endif f.f.__nextopen = NULL; - return __vfscanf(&f.f, fmt, ap); + return vfscanf(&f.f, fmt, ap); } -strong_alias(__vsscanf,vsscanf) +libc_hidden_def(vsscanf) #elif defined(__UCLIBC_HAS_GLIBC_CUSTOM_STREAMS__) -int attribute_hidden __vsscanf(__const char *sp, __const char *fmt, va_list ap) +int vsscanf(__const char *sp, __const char *fmt, va_list ap) { FILE *f; int rv = EOF; - if ((f = fmemopen((char *)sp, __strlen(sp), "r")) != NULL) { - rv = __vfscanf(f, fmt, ap); + if ((f = fmemopen((char *)sp, strlen(sp), "r")) != NULL) { + rv = vfscanf(f, fmt, ap); fclose(f); } return rv; } -strong_alias(__vsscanf,vsscanf) +libc_hidden_def(vsscanf) #else #warning Skipping vsscanf since no buffering, no custom streams, and wchar enabled! @@ -333,7 +349,7 @@ int fwscanf(FILE * __restrict stream, const wchar_t * __restrict format, ...) int rv; va_start(arg, format); - rv = __vfwscanf(stream, format, arg); + rv = vfwscanf(stream, format, arg); va_end(arg); return rv; @@ -349,7 +365,7 @@ int wscanf(const wchar_t * __restrict format, ...) int rv; va_start(arg, format); - rv = __vfwscanf(stdin, format, arg); + rv = vfwscanf(stdin, format, arg); va_end(arg); return rv; @@ -368,7 +384,7 @@ int swscanf(const wchar_t * __restrict str, const wchar_t * __restrict format, int rv; va_start(arg, format); - rv = __vswscanf(str, format, arg); + rv = vswscanf(str, format, arg); va_end(arg); return rv; @@ -383,7 +399,7 @@ int swscanf(const wchar_t * __restrict str, const wchar_t * __restrict format, int vwscanf(const wchar_t * __restrict format, va_list arg) { - return __vfwscanf(stdin, format, arg); + return vfwscanf(stdin, format, arg); } #endif @@ -392,7 +408,7 @@ int vwscanf(const wchar_t * __restrict format, va_list arg) #ifdef __STDIO_BUFFERS -int attribute_hidden __vswscanf(const wchar_t * __restrict str, const wchar_t * __restrict format, +int vswscanf(const wchar_t * __restrict str, const wchar_t * __restrict format, va_list arg) { FILE f; @@ -429,9 +445,9 @@ int attribute_hidden __vswscanf(const wchar_t * __restrict str, const wchar_t * #endif f.__nextopen = NULL; - return __vfwscanf(&f, format, arg); + return vfwscanf(&f, format, arg); } -strong_alias(__vswscanf,vswscanf) +libc_hidden_def(vswscanf) #else /* __STDIO_BUFFERS */ #warning Skipping vswscanf since no buffering! #endif /* __STDIO_BUFFERS */ @@ -580,7 +596,6 @@ enum { #define Wchar wchar_t #define Wuchar __uwchar_t #define ISSPACE(C) iswspace((C)) -#define HIDDEN_VFSCANF __vfwscanf #define VFSCANF vfwscanf #define GETC(SC) (SC)->sc_getc((SC)) #else @@ -590,12 +605,11 @@ typedef unsigned char __uchar_t; #define Wchar char #define Wuchar __uchar_t #define ISSPACE(C) isspace((C)) -#define HIDDEN_VFSCANF __vfscanf #define VFSCANF vfscanf #ifdef __UCLIBC_HAS_WCHAR__ #define GETC(SC) (SC)->sc_getc((SC)) #else /* __UCLIBC_HAS_WCHAR__ */ -#define GETC(SC) __getc_unlocked((SC)->fp) +#define GETC(SC) getc_unlocked((SC)->fp) #endif /* __UCLIBC_HAS_WCHAR__ */ #endif @@ -959,7 +973,7 @@ int attribute_hidden __psfs_parse_spec(register psfs_t *psfs) #ifdef L_vfscanf static int sc_getc(register struct scan_cookie *sc) { - return (__getc_unlocked)(sc->fp); /* Disable the macro. */ + return (getc_unlocked)(sc->fp); /* Disable the macro. */ } static int scan_getwc(register struct scan_cookie *sc) @@ -1031,7 +1045,7 @@ static int sc_getc(register struct scan_cookie *sc) sc->fp->__modeflags |= __FLAG_EOF; return EOF; } - } else if ((wc = __fgetwc_unlocked(sc->fp)) == WEOF) { + } else if ((wc = fgetwc_unlocked(sc->fp)) == WEOF) { return EOF; } @@ -1077,7 +1091,7 @@ static int scan_getwc(register struct scan_cookie *sc) sc->ungot_flag |= 2; return -1; } - } else if ((wc = __fgetwc_unlocked(sc->fp)) == WEOF) { + } else if ((wc = fgetwc_unlocked(sc->fp)) == WEOF) { sc->ungot_flag |= 2; return -1; } @@ -1148,7 +1162,7 @@ static const char fake_thousands_sep_str[] = ","; #endif /* L_vfwscanf */ -int attribute_hidden HIDDEN_VFSCANF (FILE *__restrict fp, const Wchar *__restrict format, va_list arg) +int VFSCANF (FILE *__restrict fp, const Wchar *__restrict format, va_list arg) { const Wuchar *fmt; unsigned char *b; @@ -1201,7 +1215,7 @@ int attribute_hidden HIDDEN_VFSCANF (FILE *__restrict fp, const Wchar *__restric #if defined(NL_ARGMAX) && (NL_ARGMAX > 0) psfs.num_pos_args = -1; /* Must start at -1. */ /* Initialize positional arg ptrs to NULL. */ - __memset(psfs.pos_args, 0, sizeof(psfs.pos_args)); + memset(psfs.pos_args, 0, sizeof(psfs.pos_args)); #endif /* defined(NL_ARGMAX) && (NL_ARGMAX > 0) */ __STDIO_AUTO_THREADLOCK(fp); @@ -1433,7 +1447,7 @@ int attribute_hidden HIDDEN_VFSCANF (FILE *__restrict fp, const Wchar *__restric ++fmt; invert = 1; } - __memset(scanset, invert, sizeof(scanset)); + memset(scanset, invert, sizeof(scanset)); invert = 1-invert; if (*fmt == ']') { @@ -1752,7 +1766,7 @@ int attribute_hidden HIDDEN_VFSCANF (FILE *__restrict fp, const Wchar *__restric return psfs.cnt; } -strong_alias(HIDDEN_VFSCANF,VFSCANF) +libc_hidden_def(VFSCANF) #endif /**********************************************************************/ #ifdef L___psfs_do_numeric @@ -1983,14 +1997,14 @@ int attribute_hidden __psfs_do_numeric(psfs_t *psfs, struct scan_cookie *sc) if ((psfs->conv_num > CONV_i) /* float conversion */ && (!pass || (i == nblk1)) /* possible last */ - && !__memcmp(sc->thousands_sep, sc->fake_decpt, k) + && !memcmp(sc->thousands_sep, sc->fake_decpt, k) /* and prefix matched, so could be decpt */ ) { __scan_getc(sc); p = sc->fake_decpt + k; do { if (!*++p) { - __strcpy(b, sc->decpt); + strcpy(b, sc->decpt); b += sc->decpt_len; goto GOT_DECPT; } @@ -2084,7 +2098,7 @@ int attribute_hidden __psfs_do_numeric(psfs_t *psfs, struct scan_cookie *sc) p = sc->fake_decpt; do { if (!*p) { - __strcpy(b, sc->decpt); + strcpy(b, sc->decpt); b += sc->decpt_len; break; } |