Patchwork [review] Use DEPRECATED_SCANF macro for remaining C99-compliant scanf functions

login
register
mail settings
Submitter Simon Marchi (Code Review)
Date Nov. 21, 2019, 2:32 p.m.
Message ID <gerrit.1574346742000.I706b344a3fb50be017cdab9251d9da18a3ba8c60@gnutoolchain-gerrit.osci.io>
Download mbox | patch
Permalink /patch/36091/
State New
Headers show

Comments

Simon Marchi (Code Review) - Nov. 21, 2019, 2:32 p.m.
Change URL: https://gnutoolchain-gerrit.osci.io/r/c/glibc/+/698
......................................................................

Use DEPRECATED_SCANF macro for remaining C99-compliant scanf functions

When the commit

commit 03992356e6fedc5a5e9d32df96c1a2c79ea28a8f
Author: Zack Weinberg <zackw@panix.com>
Date:   Sat Feb 10 11:58:35 2018 -0500

    Use C99-compliant scanf under _GNU_SOURCE with modern compilers.

added the DEPRECATED_SCANF macro to select when redirections of *scanf
functions to their ISO C99 compliant versions should happen, it
accidentally missed doing it for vfwscanf, vwscanf, and vswscanf.

Tested for powerpc64le and with build-many-glibcs (i686-linux-gnu and
nios2-linux-gnu are failing with current master, and with this patch,
but I didn't see a regression).

Change-Id: I706b344a3fb50be017cdab9251d9da18a3ba8c60
---
M include/wchar.h
M libio/iovswscanf.c
M wcsmbs/wchar.h
3 files changed, 1 insertion(+), 9 deletions(-)
Simon Marchi (Code Review) - Nov. 21, 2019, 4:13 p.m.
Florian Weimer has posted comments on this change.

Change URL: https://gnutoolchain-gerrit.osci.io/r/c/glibc/+/698
......................................................................


Patch Set 1: Code-Review+1

(1 comment)

| --- wcsmbs/wchar.h
| +++ wcsmbs/wchar.h
| @@ -680,18 +680,18 @@ extern int vwscanf (const wchar_t *__restrict __format,
|  		    __gnuc_va_list __arg)
|       /* __attribute__ ((__format__ (__wscanf__, 1, 0))) */;
|  /* Read formatted input from S into argument list ARG.  */
|  extern int vswscanf (const wchar_t *__restrict __s,
|  		     const wchar_t *__restrict __format,
|  		     __gnuc_va_list __arg)
|       __THROW /* __attribute__ ((__format__ (__wscanf__, 2, 0))) */;
|  
| -# if !defined __USE_GNU \
| +# if !__GLIBC_USE (DEPRECATED_SCANF) \

PS1, Line 688:

Maybe reference fwscanf above here in a comment?

|       && (!defined __LDBL_COMPAT || !defined __REDIRECT) \
|       && (defined __STRICT_ANSI__ || defined __USE_XOPEN2K)
|  #  ifdef __REDIRECT
|  extern int __REDIRECT (vfwscanf, (__FILE *__restrict __s,
|  				  const wchar_t *__restrict __format,
|  				  __gnuc_va_list __arg), __isoc99_vfwscanf)
|       /* __attribute__ ((__format__ (__wscanf__, 2, 0))) */;
|  extern int __REDIRECT (vwscanf, (const wchar_t *__restrict __format,
|  				 __gnuc_va_list __arg), __isoc99_vwscanf)
Simon Marchi (Code Review) - Nov. 21, 2019, 8:39 p.m.
Gabriel F. T. Gomes has posted comments on this change.

Change URL: https://gnutoolchain-gerrit.osci.io/r/c/glibc/+/698
......................................................................


Patch Set 1:

(1 comment)

| --- wcsmbs/wchar.h
| +++ wcsmbs/wchar.h
| @@ -680,18 +680,18 @@ extern int vwscanf (const wchar_t *__restrict __format,
|  		    __gnuc_va_list __arg)
|       /* __attribute__ ((__format__ (__wscanf__, 1, 0))) */;
|  /* Read formatted input from S into argument list ARG.  */
|  extern int vswscanf (const wchar_t *__restrict __s,
|  		     const wchar_t *__restrict __format,
|  		     __gnuc_va_list __arg)
|       __THROW /* __attribute__ ((__format__ (__wscanf__, 2, 0))) */;
|  
| -# if !defined __USE_GNU \
| +# if !__GLIBC_USE (DEPRECATED_SCANF) \

PS1, Line 688:

For consistency with stdio.h, I'll add the following message:

/* Same redirection as above for the v*wscanf family.  */

|       && (!defined __LDBL_COMPAT || !defined __REDIRECT) \
|       && (defined __STRICT_ANSI__ || defined __USE_XOPEN2K)
|  #  ifdef __REDIRECT
|  extern int __REDIRECT (vfwscanf, (__FILE *__restrict __s,
|  				  const wchar_t *__restrict __format,
|  				  __gnuc_va_list __arg), __isoc99_vfwscanf)
|       /* __attribute__ ((__format__ (__wscanf__, 2, 0))) */;
|  extern int __REDIRECT (vwscanf, (const wchar_t *__restrict __format,
|  				 __gnuc_va_list __arg), __isoc99_vwscanf)
Simon Marchi (Code Review) - Nov. 22, 2019, 11:51 a.m.
Florian Weimer has posted comments on this change.

Change URL: https://gnutoolchain-gerrit.osci.io/r/c/glibc/+/698
......................................................................


Patch Set 2: Code-Review+2

Patch

diff --git a/include/wchar.h b/include/wchar.h
index 2cb4495..c792b38 100644
--- a/include/wchar.h
+++ b/include/wchar.h
@@ -114,8 +114,6 @@ 
 libc_hidden_proto (putwc_unlocked)
 libc_hidden_proto (putwc)
 
-libc_hidden_proto (vswscanf)
-
 libc_hidden_proto (mbrtowc)
 libc_hidden_proto (wcrtomb)
 extern int __wcscmp (const wchar_t *__s1, const wchar_t *__s2)
@@ -237,11 +235,7 @@ 
 extern int __isoc99_vswscanf (const wchar_t *__restrict __s,
 			      const wchar_t *__restrict __format,
 			      __gnuc_va_list __arg) __THROW;
-extern int __vswscanf (const wchar_t *__restrict __s,
-		       const wchar_t *__restrict __format,
-		       __gnuc_va_list __arg) __THROW;
 libc_hidden_proto (__isoc99_vswscanf)
-libc_hidden_proto (__vswscanf)
 libc_hidden_proto (__isoc99_vfwscanf)
 
 /* Internal functions.  */
diff --git a/libio/iovswscanf.c b/libio/iovswscanf.c
index b0759ec..3876ce7 100644
--- a/libio/iovswscanf.c
+++ b/libio/iovswscanf.c
@@ -40,6 +40,4 @@ 
   FILE *f = _IO_strfile_readw (&sf, &wd, string);
   return __vfwscanf_internal (f, format, args, 0);
 }
-libc_hidden_def (__vswscanf)
-ldbl_hidden_def (__vswscanf, vswscanf)
 ldbl_weak_alias (__vswscanf, vswscanf)
diff --git a/wcsmbs/wchar.h b/wcsmbs/wchar.h
index 4b731eb..3ba9488 100644
--- a/wcsmbs/wchar.h
+++ b/wcsmbs/wchar.h
@@ -685,7 +685,7 @@ 
 		     __gnuc_va_list __arg)
      __THROW /* __attribute__ ((__format__ (__wscanf__, 2, 0))) */;
 
-# if !defined __USE_GNU \
+# if !__GLIBC_USE (DEPRECATED_SCANF) \
      && (!defined __LDBL_COMPAT || !defined __REDIRECT) \
      && (defined __STRICT_ANSI__ || defined __USE_XOPEN2K)
 #  ifdef __REDIRECT