diff --git a/include/stdio.h b/include/stdio.h index a91bdc552b..035cf0e54f 100644 --- a/include/stdio.h +++ b/include/stdio.h @@ -1,8 +1,8 @@ /**************************************************************************** * include/stdio.h * - * Copyright (C) 2007-2009, 2011, 2013-2015, 2018 Gregory Nutt. All rights - * reserved. + * Copyright (C) 2007-2009, 2011, 2013-2015, 2018-2019 Gregory Nutt. All + * rights reserved. * Author: Gregory Nutt * * Redistribution and use in source and binary forms, with or without @@ -158,6 +158,7 @@ int fputs(FAR const char *s, FAR FILE *stream); size_t fread(FAR void *ptr, size_t size, size_t n_items, FAR FILE *stream); FAR FILE *freopen(FAR const char *path, FAR const char *mode, FAR FILE *stream); +int fscanf(FAR FILE *stream, FAR const IPTR char *fmt, ...); int fseek(FAR FILE *stream, long int offset, int whence); int fsetpos(FAR FILE *stream, FAR fpos_t *pos); long ftell(FAR FILE *stream); @@ -168,31 +169,29 @@ FAR char *gets_s(FAR char *s, rsize_t n); void setbuf(FAR FILE *stream, FAR char *buf); int setvbuf(FAR FILE *stream, FAR char *buffer, int mode, size_t size); int ungetc(int c, FAR FILE *stream); -int fscanf(FAR FILE *stream, FAR const IPTR char *format, ...); /* Operations on the stdout stream, buffers, paths, and the whole printf-family */ -int printf(FAR const IPTR char *format, ...); +void perror(FAR const char *s); +int printf(FAR const IPTR char *fmt, ...); int puts(FAR const char *s); int rename(FAR const char *oldpath, FAR const char *newpath); -int sprintf(FAR char *buf, FAR const IPTR char *format, ...); +int sprintf(FAR char *buf, FAR const IPTR char *fmt, ...); int asprintf (FAR char **ptr, FAR const IPTR char *fmt, ...); int snprintf(FAR char *buf, size_t size, - FAR const IPTR char *format, ...); + FAR const IPTR char *fmt, ...); int sscanf(FAR const char *buf, FAR const IPTR char *fmt, ...); -void perror(FAR const char *s); -int vprintf(FAR const IPTR FAR char *format, va_list ap); -int vfprintf(FAR FILE *stream, FAR const IPTR char *format, - va_list ap); -int vsprintf(FAR char *buf, FAR const IPTR char *format, va_list ap); +int scanf(FAR const IPTR char *fmt, ...); int vasprintf(FAR char **ptr, FAR const IPTR char *fmt, va_list ap); -int vsnprintf(FAR char *buf, size_t size, FAR const IPTR char *format, +int vfprintf(FAR FILE *stream, FAR const IPTR char *fmt, va_list ap); -int vsscanf(FAR const char *buf, FAR const char *s, va_list ap); -int scanf(FAR const IPTR char *format, ...); -int vfscanf(FAR FILE *stream, FAR const IPTR char *format, +int vfscanf(FAR FILE *stream, FAR const IPTR char *fmt, va_list ap); +int vprintf(FAR const IPTR FAR char *fmt, va_list ap); +int vsnprintf(FAR char *buf, size_t size, FAR const IPTR char *fmt, va_list ap); +int vsprintf(FAR char *buf, FAR const IPTR char *fmt, va_list ap); +int vsscanf(FAR const char *buf, FAR const char *fmt, va_list ap); /* Operations on file descriptors including: * diff --git a/libs/libc/stdio/Make.defs b/libs/libc/stdio/Make.defs index 49193f749e..cd2180edb7 100644 --- a/libs/libc/stdio/Make.defs +++ b/libs/libc/stdio/Make.defs @@ -43,7 +43,8 @@ CSRCS += lib_vsnprintf.c lib_dprintf.c lib_vdprintf.c CSRCS += lib_meminstream.c lib_memoutstream.c lib_memsistream.c CSRCS += lib_memsostream.c lib_lowoutstream.c CSRCS += lib_zeroinstream.c lib_nullinstream.c lib_nulloutstream.c -CSRCS += lib_sscanf.c lib_libsscanf.c lib_libnoflush.c lib_libsnoflush.c +CSRCS += lib_sscanf.c lib_vsscanf.c lib_libsscanf.c lib_libnoflush.c +CSRCS += lib_libsnoflush.c ifeq ($(CONFIG_NANO_PRINTF),y) diff --git a/libs/libc/stdio/lib_fscanf.c b/libs/libc/stdio/lib_fscanf.c index 7dafe8e487..34b8c39bf0 100644 --- a/libs/libc/stdio/lib_fscanf.c +++ b/libs/libc/stdio/lib_fscanf.c @@ -38,6 +38,8 @@ ****************************************************************************/ #include +#include +#include "libc.h" /**************************************************************************** * Public Functions @@ -52,7 +54,7 @@ int fscanf(FAR FILE *stream, FAR const IPTR char *fmt, ...) va_list ap; int n; - /* vfprintf into the stream */ + /* vscanf from the stream */ va_start(ap, fmt); n = vfscanf(stream, fmt, ap); diff --git a/libs/libc/stdio/lib_libsscanf.c b/libs/libc/stdio/lib_libsscanf.c index 7f486d9181..f744dc8932 100644 --- a/libs/libc/stdio/lib_libsscanf.c +++ b/libs/libc/stdio/lib_libsscanf.c @@ -52,6 +52,8 @@ #include #include +#include + #include "libc.h" /**************************************************************************** @@ -74,17 +76,6 @@ # define MAX(a,b) (((a) > (b)) ? (a) : (b)) #endif -/**************************************************************************** - * Public Function Prototypes - ****************************************************************************/ - -int lib_vsscanf(FAR struct lib_instream_s *obj, FAR int *lastc, - FAR const IPTR char *fmt, va_list ap); - -/**************************************************************************** - * Private Data - ****************************************************************************/ - /**************************************************************************** * Private Functions ****************************************************************************/ diff --git a/libs/libc/stdio/lib_sscanf.c b/libs/libc/stdio/lib_sscanf.c index 67ffe4274a..144700ca36 100644 --- a/libs/libc/stdio/lib_sscanf.c +++ b/libs/libc/stdio/lib_sscanf.c @@ -40,6 +40,7 @@ #include #include +#include #include "libc.h" /**************************************************************************** @@ -52,20 +53,14 @@ int sscanf(FAR const char *buf, FAR const IPTR char *fmt, ...) { - struct lib_meminstream_s meminstream; va_list ap; int n; - /* Initialize a memory stream to write to the buffer */ - - lib_meminstream((FAR struct lib_meminstream_s *)&meminstream, buf, - LIB_BUFLEN_UNKNOWN); - - /* Then let lib_vsscanf do the real work */ + /* vsscanf from the buffer */ va_start(ap, fmt); - n = lib_vsscanf((FAR struct lib_instream_s *)&meminstream.public, NULL, - fmt, ap); + n = vsscanf(buf, fmt, ap); va_end(ap); + return n; } diff --git a/libs/libc/stdio/lib_vfscanf.c b/libs/libc/stdio/lib_vfscanf.c index 7c5cb21768..3f2c1a3b2a 100644 --- a/libs/libc/stdio/lib_vfscanf.c +++ b/libs/libc/stdio/lib_vfscanf.c @@ -42,6 +42,8 @@ #include #include +#include + #include "libc.h" /****************************************************************************