Patchwork Declare memccpy, strdup, strndup for C2X

mail settings
Submitter Joseph Myers
Date Aug. 9, 2019, 10:10 p.m.
Message ID <>
Download mbox | patch
Permalink /patch/34027/
State New
Headers show


Joseph Myers - Aug. 9, 2019, 10:10 p.m.
C2X adds the memccpy, strdup and strndup functions.  This patch duly
adds __GLIBC_USE (ISOC2X) to the conditions under which <string.h>
declares them.

Tested for x86_64.

2019-08-09  Joseph Myers  <>

	* string/string.h (memccpy): Also declare if [__GLIBC_USE (ISOC2X)].
	(strdup): Likewise.
	(strndup): Likewise.


This patch is relative to a tree with
<> applied.
Andreas Schwab - Aug. 13, 2019, 7:22 a.m.
On Aug 09 2019, Joseph Myers <> wrote:

> 	* string/string.h (memccpy): Also declare if [__GLIBC_USE (ISOC2X)].
> 	(strdup): Likewise.
> 	(strndup): Likewise.




diff --git a/string/string.h b/string/string.h
index c38eea971f..f51a9e2270 100644
--- a/string/string.h
+++ b/string/string.h
@@ -49,7 +49,7 @@  extern void *memmove (void *__dest, const void *__src, size_t __n)
 /* Copy no more than N bytes of SRC to DEST, stopping when C is found.
    Return the position in DEST one byte past where C was copied,
    or NULL if C was not found in the first N bytes of SRC.  */
-#if defined __USE_MISC || defined __USE_XOPEN
+#if defined __USE_MISC || defined __USE_XOPEN || __GLIBC_USE (ISOC2X)
 extern void *memccpy (void *__restrict __dest, const void *__restrict __src,
 		      int __c, size_t __n)
      __THROW __nonnull ((1, 2));
@@ -161,7 +161,7 @@  extern size_t strxfrm_l (char *__dest, const char *__src, size_t __n,
 #if (defined __USE_XOPEN_EXTENDED || defined __USE_XOPEN2K8	\
-     || __GLIBC_USE (LIB_EXT2))
+     || __GLIBC_USE (LIB_EXT2) || __GLIBC_USE (ISOC2X))
 /* Duplicate S, returning an identical malloc'd string.  */
 extern char *strdup (const char *__s)
      __THROW __attribute_malloc__ __nonnull ((1));
@@ -170,7 +170,7 @@  extern char *strdup (const char *__s)
 /* Return a malloc'd copy of at most N bytes of STRING.  The
    resultant string is terminated even if no null terminator
    appears before STRING[N].  */
-#if defined __USE_XOPEN2K8 || __GLIBC_USE (LIB_EXT2)
+#if defined __USE_XOPEN2K8 || __GLIBC_USE (LIB_EXT2) || __GLIBC_USE (ISOC2X)
 extern char *strndup (const char *__string, size_t __n)
      __THROW __attribute_malloc__ __nonnull ((1));