mirror of
git://git.musl-libc.org/musl
synced 2024-12-16 19:55:38 +00:00
05ac345f89
maintainer's note: past sentiment was that, despite being imperfect and unable to force clearing of all possible copies of sensitive data (e.g. in registers, register spills, signal contexts left on the stack, etc.) this function would be added if major implementations agreed on it, which has happened -- several BSDs and glibc all include it.
106 lines
2.9 KiB
C
106 lines
2.9 KiB
C
#ifndef _STRING_H
|
|
#define _STRING_H
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
#include <features.h>
|
|
|
|
#ifdef __cplusplus
|
|
#define NULL 0L
|
|
#else
|
|
#define NULL ((void*)0)
|
|
#endif
|
|
|
|
#define __NEED_size_t
|
|
#if defined(_POSIX_SOURCE) || defined(_POSIX_C_SOURCE) \
|
|
|| defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE) \
|
|
|| defined(_BSD_SOURCE)
|
|
#define __NEED_locale_t
|
|
#endif
|
|
|
|
#include <bits/alltypes.h>
|
|
|
|
void *memcpy (void *__restrict, const void *__restrict, size_t);
|
|
void *memmove (void *, const void *, size_t);
|
|
void *memset (void *, int, size_t);
|
|
int memcmp (const void *, const void *, size_t);
|
|
void *memchr (const void *, int, size_t);
|
|
|
|
char *strcpy (char *__restrict, const char *__restrict);
|
|
char *strncpy (char *__restrict, const char *__restrict, size_t);
|
|
|
|
char *strcat (char *__restrict, const char *__restrict);
|
|
char *strncat (char *__restrict, const char *__restrict, size_t);
|
|
|
|
int strcmp (const char *, const char *);
|
|
int strncmp (const char *, const char *, size_t);
|
|
|
|
int strcoll (const char *, const char *);
|
|
size_t strxfrm (char *__restrict, const char *__restrict, size_t);
|
|
|
|
char *strchr (const char *, int);
|
|
char *strrchr (const char *, int);
|
|
|
|
size_t strcspn (const char *, const char *);
|
|
size_t strspn (const char *, const char *);
|
|
char *strpbrk (const char *, const char *);
|
|
char *strstr (const char *, const char *);
|
|
char *strtok (char *__restrict, const char *__restrict);
|
|
|
|
size_t strlen (const char *);
|
|
|
|
char *strerror (int);
|
|
|
|
#if defined(_BSD_SOURCE) || defined(_GNU_SOURCE)
|
|
#include <strings.h>
|
|
#endif
|
|
|
|
#if defined(_POSIX_SOURCE) || defined(_POSIX_C_SOURCE) \
|
|
|| defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE) \
|
|
|| defined(_BSD_SOURCE)
|
|
char *strtok_r (char *__restrict, const char *__restrict, char **__restrict);
|
|
int strerror_r (int, char *, size_t);
|
|
char *stpcpy(char *__restrict, const char *__restrict);
|
|
char *stpncpy(char *__restrict, const char *__restrict, size_t);
|
|
size_t strnlen (const char *, size_t);
|
|
char *strdup (const char *);
|
|
char *strndup (const char *, size_t);
|
|
char *strsignal(int);
|
|
char *strerror_l (int, locale_t);
|
|
int strcoll_l (const char *, const char *, locale_t);
|
|
size_t strxfrm_l (char *__restrict, const char *__restrict, size_t, locale_t);
|
|
#endif
|
|
|
|
#if defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE) \
|
|
|| defined(_BSD_SOURCE)
|
|
void *memccpy (void *__restrict, const void *__restrict, int, size_t);
|
|
#endif
|
|
|
|
#if defined(_GNU_SOURCE) || defined(_BSD_SOURCE)
|
|
char *strsep(char **, const char *);
|
|
size_t strlcat (char *, const char *, size_t);
|
|
size_t strlcpy (char *, const char *, size_t);
|
|
void explicit_bzero (void *, size_t);
|
|
#endif
|
|
|
|
#ifdef _GNU_SOURCE
|
|
#define strdupa(x) strcpy(alloca(strlen(x)+1),x)
|
|
int strverscmp (const char *, const char *);
|
|
char *strchrnul(const char *, int);
|
|
char *strcasestr(const char *, const char *);
|
|
void *memmem(const void *, size_t, const void *, size_t);
|
|
void *memrchr(const void *, int, size_t);
|
|
void *mempcpy(void *, const void *, size_t);
|
|
#ifndef __cplusplus
|
|
char *basename();
|
|
#endif
|
|
#endif
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
#endif
|