1 /* ISC license. */
2 
3 #ifndef BYTESTR_H
4 #define BYTESTR_H
5 
6 #include <skalibs/gccattributes.h>
7 
8 /* for Alphas and other archs where char != 8bit */
9 #define T8(x)   ((x) & 0xffU)
10 
11 #include <string.h>
12 #include <strings.h>
13 
14 #define byte_copy(to, n, from) memmove(to, (from), n)
15 #define byte_copyr(to, n, from) memmove(to, (from), n)
16 #define byte_diff(a, n, b) memcmp(a, (b), n)
17 #define byte_zero(p, n) memset(p, 0, n)
18 #define str_len strlen
19 #define str_nlen strnlen
20 
21 #define str_diff strcmp
22 #define str_diffn strncmp
23 #define str_copy(to, from) strlen(strcpy(to, from))
24 #define case_diffs strcasecmp
25 #define case_diffn strncasecmp
26 
27 extern size_t byte_chr (char const *, size_t, int) gccattr_pure ;
28 extern size_t byte_rchr (char const *, size_t, int) gccattr_pure ;
29 extern size_t byte_in (char const *, size_t, char const *, size_t) gccattr_pure ;
30 #define byte_equal(s, n, t) (!memcmp(s, (t), n))
31 extern size_t byte_count (char const *, size_t, char) gccattr_pure ;
32 extern size_t byte_search (char const *, size_t, char const *, size_t) ;
33 extern void byte_zzero (char *, size_t) ;
34 
35 #define str_diffb(a, n, b) strncmp(a, (b), n)
36 extern size_t str_chr (char const *, int) gccattr_pure ;
37 extern size_t str_rchr (char const *, int) gccattr_pure ;
38 extern int str_start (char const *, char const *) gccattr_pure ;
39 #define str_equal(s, t) (!strcmp(s, t))
40 extern size_t str_strn (char const *, size_t, char const *, size_t) gccattr_pure ;
41 
42 extern void case_lowers (char *) ;
43 extern void case_lowerb (char *, size_t) ;
44 extern void case_uppers (char *) ;
45 extern void case_upperb (char *, size_t) ;
46 #define case_diffb(a, n, b) case_diffn(a, (b), n)
47 #define case_equals(a, b) (!strcasecmp(a, b))
48 #define case_equalb(a, n, b) (!strncasecmp(a, (b), n))
49 #define case_starts(s, t) case_startb(s, strlen(s), t)
50 extern int case_startb (char const *, size_t, char const *) gccattr_pure ;
51 extern size_t case_str (char const *, char const *) gccattr_pure ;
52 
53 #endif
54