#ifndef _STRING_H
#define	_STRING_H

#undef	NULL
#define	NULL	(void *)0
#ifndef	_SIZE_T
#define	_SIZE_T
typedef unsigned int size_t;
#endif
#ifndef	_BSD_EXTRAS
#define	_BSD_EXTRAS	1
#endif

extern	void	*memcpy(void *, void *, size_t);
extern	void	*memmove(void *, void *, size_t);

extern	char	*strcat(char *, const char *);
extern	char	*strncat(char *, const char *, size_t);

extern	int	memcmp(const void *, const void *, size_t);
extern	int	strcmp(const char *, const char *);
extern	int	strncmp(const char *, const char *, size_t);

extern	char	*strcpy(char *, const char *);
extern	char	*strncpy(char *, const char *, size_t);

extern	size_t	strlen(const char *);

#if _BSD_EXTRAS
extern	int	strcasecmp(const char *, const char *);
extern	int	strncasecmp(const char *, const char *, int);
extern	char	*index(const char *, char);
extern	char	*rindex(const char *, char);
#endif

extern	void	*memchr(const void *, int, size_t);
extern	char	*strchr(const char *, int);
extern	char	*strrchr(const char *, int);


#define	_strerr(x) #x is not implemented
#define	strcoll	_strerr(strcoll)
#define	strxfrm	_strerr(strxfrm)


extern	char	*strerror(int);
#ifndef	_ERRNO_H
extern	int	sys_nerr;
extern	char	*sys_errlist[];
#endif
#define	strerror(err)	((err) < _sys_nerr ? sys_errlist[err] : "Unknown error")

extern	void	*memset(void *, int, size_t);

/* # of initial chars in 1 not found in 2 */
extern	size_t	strcspn(const char *, const char *);
/* pointer to first character in 1 that is also in 2 */
extern	char	*strpbrk(const char *, const char *);

#endif
