|
|
1.1 root 1: /*
2: * Creation Date: <2002/10/12 20:41:57 samuel>
3: * Time-stamp: <2003/10/25 12:51:22 samuel>
4: *
5: * <string.h>
6: *
7: * string library functions
8: *
9: * Copyright (C) 2002, 2003 Samuel Rydh ([email protected])
10: *
11: * This program is free software; you can redistribute it and/or
12: * modify it under the terms of the GNU General Public License
13: * as published by the Free Software Foundation
14: *
15: */
16:
17: #ifndef _H_STRING
18: #define _H_STRING
19:
20: #include "config.h"
21:
22: #define bzero(s,n) memset( s, 0, n )
23: #define atol(nptr) strtol(nptr, NULL, 10 )
24:
25: extern long strtol( const char *nptr, char **endptr, int base );
26: extern long long int strtoll( const char *nptr, char **endptr, int base );
27:
28:
29: extern int strnicmp(const char *s1, const char *s2, size_t len);
30: extern char *strcpy(char * dest,const char *src);
31: extern char *strncpy(char * dest,const char *src,size_t count);
32: extern char *strcat(char * dest, const char * src);
33: extern char *strncat(char *dest, const char *src, size_t count);
34: extern int strcmp(const char * cs,const char * ct);
35: extern int strncmp(const char * cs,const char * ct,size_t count);
36: extern char *strchr(const char * s, int c);
37: extern char *strrchr(const char * s, int c);
38: extern size_t strlen(const char * s);
39: extern size_t strnlen(const char * s, size_t count);
40: extern char *strpbrk(const char * cs,const char * ct);
41: extern char *strsep(char **s, const char *ct);
42: extern void *memset(void * s,int c,size_t count);
43: extern void *memcpy(void * dest,const void *src,size_t count);
44: extern void *memmove(void * dest,const void *src,size_t count);
45: extern int memcmp(const void * cs,const void * ct,size_t count);
46:
47: extern char *strdup( const char *str );
48: extern int strcasecmp( const char *cs, const char *ct );
49: extern int strncasecmp( const char *cs, const char *ct, size_t count );
50:
51: extern char *strncpy_nopad( char *dest, const char *src, size_t n );
52:
53: #define _U 0x01 /* upper */
54: #define _L 0x02 /* lower */
55: #define _D 0x04 /* digit */
56: #define _C 0x08 /* cntrl */
57: #define _P 0x10 /* punct */
58: #define _S 0x20 /* white space (space/lf/tab) */
59: #define _X 0x40 /* hex digit */
60: #define _SP 0x80 /* hard space (0x20) */
61:
62: extern const unsigned char _ctype[];
63:
64: #define __ismask(x) (_ctype[(int)(unsigned char)(x)])
65:
66: #define isalnum(c) ((__ismask(c)&(_U|_L|_D)) != 0)
67: #define isalpha(c) ((__ismask(c)&(_U|_L)) != 0)
68: #define iscntrl(c) ((__ismask(c)&(_C)) != 0)
69: #define isdigit(c) ((__ismask(c)&(_D)) != 0)
70: #define isgraph(c) ((__ismask(c)&(_P|_U|_L|_D)) != 0)
71: #define islower(c) ((__ismask(c)&(_L)) != 0)
72: #define isprint(c) ((__ismask(c)&(_P|_U|_L|_D|_SP)) != 0)
73: #define ispunct(c) ((__ismask(c)&(_P)) != 0)
74: #define isspace(c) ((__ismask(c)&(_S)) != 0)
75: #define isupper(c) ((__ismask(c)&(_U)) != 0)
76: #define isxdigit(c) ((__ismask(c)&(_D|_X)) != 0)
77:
78: #define isascii(c) (((unsigned char)(c))<=0x7f)
79: #define toascii(c) (((unsigned char)(c))&0x7f)
80:
81:
82: static inline unsigned char __tolower(unsigned char c) {
83: if (isupper(c))
84: c -= 'A'-'a';
85: return c;
86: }
87:
88: static inline unsigned char __toupper(unsigned char c) {
89: if (islower(c))
90: c -= 'a'-'A';
91: return c;
92: }
93:
94: #define tolower(c) __tolower(c)
95: #define toupper(c) __toupper(c)
96:
97: extern int errno_int;
98:
99: // Propolice support
100: extern long __guard[8];
101:
102: void __stack_smash_handler(const char *func, int damaged);
103: void __stack_chk_fail(void);
104:
105: #endif /* _H_STRING */
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.