| /* |
| * Creation Date: <2002/10/12 20:41:57 samuel> |
| * Time-stamp: <2003/10/25 12:51:22 samuel> |
| * |
| * <string.h> |
| * |
| * string library functions |
| * |
| * Copyright (C) 2002, 2003 Samuel Rydh (samuel@ibrium.se) |
| * |
| * This program is free software; you can redistribute it and/or |
| * modify it under the terms of the GNU General Public License |
| * as published by the Free Software Foundation |
| * |
| */ |
| |
| #ifndef _H_STRING |
| #define _H_STRING |
| |
| #include "config.h" |
| |
| #define bzero(s,n) memset( s, 0, n ) |
| #define atol(nptr) strtol(nptr, NULL, 10 ) |
| |
| extern long strtol( const char *nptr, char **endptr, int base ); |
| extern long long int strtoll( const char *nptr, char **endptr, int base ); |
| |
| |
| extern int strnicmp(const char *s1, const char *s2, size_t len); |
| extern char *strcpy(char * dest,const char *src); |
| extern char *strncpy(char * dest,const char *src,size_t count); |
| extern char *strcat(char * dest, const char * src); |
| extern char *strncat(char *dest, const char *src, size_t count); |
| extern int strcmp(const char * cs,const char * ct); |
| extern int strncmp(const char * cs,const char * ct,size_t count); |
| extern char *strchr(const char * s, int c); |
| extern char *strrchr(const char * s, int c); |
| extern size_t strlen(const char * s); |
| extern size_t strnlen(const char * s, size_t count); |
| extern char *strpbrk(const char * cs,const char * ct); |
| extern char *strsep(char **s, const char *ct); |
| extern void *memset(void * s,int c,size_t count); |
| extern void *memcpy(void * dest,const void *src,size_t count); |
| extern void *memmove(void * dest,const void *src,size_t count); |
| extern int memcmp(const void * cs,const void * ct,size_t count); |
| |
| extern char *strdup( const char *str ); |
| extern int strcasecmp( const char *cs, const char *ct ); |
| extern int strncasecmp( const char *cs, const char *ct, size_t count ); |
| |
| extern char *strncpy_nopad( char *dest, const char *src, size_t n ); |
| |
| #define _U 0x01 /* upper */ |
| #define _L 0x02 /* lower */ |
| #define _D 0x04 /* digit */ |
| #define _C 0x08 /* cntrl */ |
| #define _P 0x10 /* punct */ |
| #define _S 0x20 /* white space (space/lf/tab) */ |
| #define _X 0x40 /* hex digit */ |
| #define _SP 0x80 /* hard space (0x20) */ |
| |
| extern const unsigned char _ctype[]; |
| |
| #define __ismask(x) (_ctype[(int)(unsigned char)(x)]) |
| |
| #define isalnum(c) ((__ismask(c)&(_U|_L|_D)) != 0) |
| #define isalpha(c) ((__ismask(c)&(_U|_L)) != 0) |
| #define iscntrl(c) ((__ismask(c)&(_C)) != 0) |
| #define isdigit(c) ((__ismask(c)&(_D)) != 0) |
| #define isgraph(c) ((__ismask(c)&(_P|_U|_L|_D)) != 0) |
| #define islower(c) ((__ismask(c)&(_L)) != 0) |
| #define isprint(c) ((__ismask(c)&(_P|_U|_L|_D|_SP)) != 0) |
| #define ispunct(c) ((__ismask(c)&(_P)) != 0) |
| #define isspace(c) ((__ismask(c)&(_S)) != 0) |
| #define isupper(c) ((__ismask(c)&(_U)) != 0) |
| #define isxdigit(c) ((__ismask(c)&(_D|_X)) != 0) |
| |
| #define isascii(c) (((unsigned char)(c))<=0x7f) |
| #define toascii(c) (((unsigned char)(c))&0x7f) |
| |
| |
| static inline unsigned char __tolower(unsigned char c) { |
| if (isupper(c)) |
| c -= 'A'-'a'; |
| return c; |
| } |
| |
| static inline unsigned char __toupper(unsigned char c) { |
| if (islower(c)) |
| c -= 'a'-'A'; |
| return c; |
| } |
| |
| #define tolower(c) __tolower(c) |
| #define toupper(c) __toupper(c) |
| |
| extern int errno_int; |
| |
| // Propolice support |
| extern long __guard[8]; |
| |
| void __stack_smash_handler(const char *func, int damaged); |
| void __stack_chk_fail(void); |
| |
| #endif /* _H_STRING */ |