mirror of
https://sourceware.org/git/glibc.git
synced 2025-07-30 22:43:12 +03:00
Update.
1998-03-18 Andreas Jaeger <aj@arthur.rhein-neckar.de> * manual/memory.texi (Heap Consistency Checking): Document MALLOC_CHECK_. Based on a text by Wolfram Gloger. 1998-03-18 17:11 Zack Weinberg <zack@rabi.phys.columbia.edu> * manual/Makefile: Add missing rules. 1998-03-18 Ulrich Drepper <drepper@cygnus.com> * timezone/Makefile (generated): Define to remove all stamp files. * sysdeps/generic/strsep.c: Also undefine __strsep. * string/strdup.c: Undefine __strdup and strdup first. * string/strndup.c: Likewise. * string/bits/string2.h: Correct strtok_r and strsep. Add strndup optimization. * sysdeps/generic/strsep.c: Little optimization.
This commit is contained in:
@ -710,8 +710,8 @@ strnlen (__const char *__string, size_t __maxlen)
|
||||
? (((__const unsigned char *) (sep))[0] != '\0' \
|
||||
&& ((__const unsigned char *) (sep))[1] == '\0' \
|
||||
? __strtok_r_1c (s, ((__const char *) (sep))[0], nextp) \
|
||||
: strtok_r (s, sep, nextp)) \
|
||||
: strtok_r (s, sep, nextp)))
|
||||
: __strtok_r (s, sep, nextp)) \
|
||||
: __strtok_r (s, sep, nextp)))
|
||||
|
||||
__STRING_INLINE char *__strtok_r_1c (char *__s, char __sep, char **__nextp);
|
||||
__STRING_INLINE char *
|
||||
@ -740,7 +740,7 @@ __strtok_r_1c (char *__s, char __sep, char **__nextp)
|
||||
return __result;
|
||||
}
|
||||
# if defined __USE_POSIX || defined __USE_MISC
|
||||
# define strtok_r(s, sep, nextp) __strtok_r (s, sep, nextp)
|
||||
# define strtok_r(s, sep, nextp) __strtok_r ((s), (sep), (nextp))
|
||||
# endif
|
||||
#endif
|
||||
|
||||
@ -845,7 +845,7 @@ __strsep_g (char **__s, __const char *__reject)
|
||||
return __retval;
|
||||
}
|
||||
# ifdef __USE_BSD
|
||||
# define strsep(s, reject) __strsep (s, reject)
|
||||
# define strsep(s, reject) __strsep ((s), (reject))
|
||||
# endif
|
||||
#endif
|
||||
|
||||
@ -857,15 +857,15 @@ __strsep_g (char **__s, __const char *__reject)
|
||||
# include <stdlib.h>
|
||||
|
||||
# define __strdup(s) \
|
||||
(__extension__ (__builtin_constant_p (s) && __string2_1bptr_p (s)
|
||||
? (((__const unsigned char *) (s))[0] == '\0'
|
||||
? return (char *) calloc (1, 1);
|
||||
: ({ size_t len = strlen (s) + 1;
|
||||
char *retval = (char *) malloc (len);
|
||||
if (retval != NULL)
|
||||
retval = (char *) memcpy (retval, s, len);
|
||||
retval; }))
|
||||
: strdup (s)))
|
||||
(__extension__ (__builtin_constant_p (s) && __string2_1bptr_p (s) \
|
||||
? (((__const unsigned char *) (s))[0] == '\0' \
|
||||
? (char *) calloc (1, 1) \
|
||||
: ({ size_t __len = strlen (s) + 1; \
|
||||
char *__retval = (char *) malloc (__len); \
|
||||
if (__retval != NULL) \
|
||||
__retval = (char *) memcpy (__retval, s, __len); \
|
||||
__retval; })) \
|
||||
: __strdup (s)))
|
||||
|
||||
# if defined __USE_SVID || defined __USE_BSD || defined __USE_XOPEN_EXTENDED
|
||||
# define strdup(s) __strdup (s)
|
||||
@ -873,6 +873,37 @@ __strsep_g (char **__s, __const char *__reject)
|
||||
#endif
|
||||
|
||||
|
||||
#if !defined _HAVE_STRING_ARCH_strndup && !defined __STRICT_ANSI__
|
||||
|
||||
/* We need the memory allocation functions. Including this header is
|
||||
not allowed. */
|
||||
# include <stdlib.h>
|
||||
|
||||
# define __strndup(s, n) \
|
||||
(__extension__ (__builtin_constant_p (s) && __string2_1bptr_p (s) \
|
||||
? (((__const unsigned char *) (s))[0] == '\0' \
|
||||
? (char *) calloc (1, 1) \
|
||||
: ({ size_t __len = strlen (s) + 1; \
|
||||
size_t __n = (n); \
|
||||
char *__retval; \
|
||||
if (__n < __len) \
|
||||
__len = __n; \
|
||||
__retval = (char *) malloc (__len); \
|
||||
if (__retval != NULL) \
|
||||
{ \
|
||||
__retval[__len - 1] = '\0'; \
|
||||
__retval = (char *) memcpy (__retval, s, \
|
||||
__len - 1); \
|
||||
} \
|
||||
__retval; })) \
|
||||
: __strndup ((s), (n))))
|
||||
|
||||
# ifdef __GNU_SOURCE
|
||||
# define strndup(s, n) __strndup ((s), (n))
|
||||
# endif
|
||||
#endif
|
||||
|
||||
|
||||
#undef __STRING_INLINE
|
||||
|
||||
#endif /* No string inlines. */
|
||||
|
@ -1,4 +1,4 @@
|
||||
/* Copyright (C) 1991, 1996, 1997 Free Software Foundation, Inc.
|
||||
/* Copyright (C) 1991, 1996, 1997, 1998 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
|
||||
The GNU C Library is free software; you can redistribute it and/or
|
||||
@ -28,6 +28,9 @@ char *malloc ();
|
||||
char *memcpy ();
|
||||
#endif
|
||||
|
||||
#undef __strdup
|
||||
#undef strdup
|
||||
|
||||
#ifndef weak_alias
|
||||
# define __strdup strdup
|
||||
#endif
|
||||
|
@ -1,4 +1,4 @@
|
||||
/* Copyright (C) 1996, 1997 Free Software Foundation, Inc.
|
||||
/* Copyright (C) 1996, 1997, 1998 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
|
||||
The GNU C Library is free software; you can redistribute it and/or
|
||||
@ -30,6 +30,9 @@
|
||||
char *malloc ();
|
||||
#endif
|
||||
|
||||
#undef __strndup
|
||||
#undef strndup
|
||||
|
||||
#ifndef weak_alias
|
||||
# define __strndup strndup
|
||||
#endif
|
||||
|
Reference in New Issue
Block a user