compat.c - iomenu - interactive terminal-based selection menu HTML git clone git://bitreich.org/iomenu git://enlrupgkhuxnvlhsf6lc3fziv5h2hhfrinws65d7roiv6bfj7d652fid.onion/iomenu DIR Log DIR Files DIR Refs DIR Tags DIR README DIR LICENSE --- compat.c (848B) --- 1 #include "compat.h" 2 #include <ctype.h> 3 #include <stddef.h> 4 #include <string.h> 5 6 char * 7 strcasestr(const char *str1, const char *str2) 8 { 9 const char *s1; 10 const char *s2; 11 12 for (;;) { 13 s1 = str1; 14 s2 = str2; 15 while (*s1 != '\0' && tolower(*s1) == tolower(*s2)) 16 s1++, s2++; 17 if (*s2 == '\0') 18 return (char *) str1; 19 if (*s1 == '\0') 20 return NULL; 21 str1++; 22 } 23 24 return NULL; 25 } 26 27 size_t 28 strlcpy(char *buf, char const *str, size_t sz) 29 { 30 size_t len, cpy; 31 32 len = strlen(str); 33 cpy = (len > sz) ? (sz) : (len); 34 memcpy(buf, str, cpy + 1); 35 buf[sz - 1] = '\0'; 36 return len; 37 } 38 39 char * 40 strsep(char **str_p, char const *sep) 41 { 42 char *s, *prev; 43 44 if (*str_p == NULL) 45 return NULL; 46 47 for (s = prev = *str_p; strchr(sep, *s) == NULL; s++) 48 continue; 49 50 if (*s == '\0') { 51 *str_p = NULL; 52 } else { 53 *s = '\0'; 54 *str_p = s + 1; 55 } 56 return prev; 57 }