initial commit
[libjh.git] / string.c
1 #include <string.h>
2
3 HEADER #define streq(a,b) (!strcmp((a),(b)))
4
5 PUBLIC_FN int count_char_occurences(char *s, char c) {
6   int n=0;
7   while (*s) {
8     if (*s==c) n++;
9     s++;
10   }
11   return n;
12 }
13
14 // memcpy plus terminating nullbyte
15 PUBLIC_FN void *memcpyn(void *d, const void *s, size_t n) {
16   memcpy(d, s, n);
17   char *d_ = d;
18   d_[n] = '\0';
19   return d;
20 }
21
22 // Wipe out whitespace characters at the end of str using nullbytes.
23 PUBLIC_FN void trim_end(char *str, char *whitespace) {
24   for (char *p = str+strlen(str)-1; p>=str; p--) {
25     if (!strchr(whitespace, *p)) break;
26     *p = '\0';
27     p--;
28   }
29 }
30
31 PUBLIC_FN int ends_with(char *str, char *sub) {
32   size_t str_len = strlen(str);
33   size_t sub_len = strlen(sub);
34   if (sub_len>str_len) return 0;
35   return streq(str+str_len-sub_len, sub);
36 }