diff options
| author | Mosder <git@mosder.eu> | 2026-09-28 13:27:35 +0200 |
|---|---|---|
| committer | Mosder <git@mosder.eu> | 2026-09-28 13:27:35 +0200 |
| commit | 7a1f842b91af4f916501eaea991b897e3db4c502 (patch) | |
| tree | c2e9c5180a45585ff9e61158a4395ca066050a01 | |
| parent | b79ccf95459e7edb303dabfe3a26e624bd9d8679 (diff) | |
refactor: prefixed compat functions (and added a macro to libc implementations - if they exist), so they do not take reserved names anymore
| -rw-r--r-- | compat/compat.c | 4 | ||||
| -rw-r--r-- | compat/compat.h | 15 | ||||
| -rw-r--r-- | src/string.c | 4 | ||||
| -rw-r--r-- | tests/ds/hashmap_tests.c | 4 | ||||
| -rw-r--r-- | tests/string_tests.c | 2 |
5 files changed, 17 insertions, 12 deletions
diff --git a/compat/compat.c b/compat/compat.c index 37432bf..4d8526c 100644 --- a/compat/compat.c +++ b/compat/compat.c @@ -3,7 +3,7 @@ #ifdef NO_STRDUP #include <stdlib.h> #include <string.h> -char *strdup(const char *s) { +char *mos_strdup(const char *s) { char *s2 = malloc(strlen(s) + 1); if (!s2) return NULL; @@ -13,7 +13,7 @@ char *strdup(const char *s) { #endif // NO_STRDUP #ifdef NO_MEMMEM -void *memmem(const void *h, size_t h_size, const void *n, size_t n_size) { +void *mos_memmem(const void *h, size_t h_size, const void *n, size_t n_size) { if (n_size == 0) return (void *)h; if (n_size > h_size) diff --git a/compat/compat.h b/compat/compat.h index 3e46993..5f9424d 100644 --- a/compat/compat.h +++ b/compat/compat.h @@ -6,15 +6,20 @@ #define _GNU_SOURCE -typedef void declaration; +// In C99 TU needs a declaration (which won't be the case if all functions are available) +typedef void mos_compat_decl; -#ifdef NO_STRDUP -extern char *strdup(const char *s); +#ifndef NO_STRDUP +#define mos_strdup strdup +#else +extern char *mos_strdup(const char *s); #endif // NO_STRDUP -#ifdef NO_MEMMEM +#ifndef NO_MEMMEM +#define mos_memmem memmem +#else #include <stddef.h> -extern void *memmem(const void *h, size_t h_size, const void *n, size_t n_size); +extern void *mos_memmem(const void *h, size_t h_size, const void *n, size_t n_size); #endif // NO_MEMMEM #endif // MOSLIB_COMPAT_H diff --git a/src/string.c b/src/string.c index db3bf77..20c1a1c 100644 --- a/src/string.c +++ b/src/string.c @@ -152,7 +152,7 @@ MosStringSlice mos_ss_split_ss(MosStringSlice *ss, MosStringSlice delim) { if (delim.len == 0) return MOS_SS_LIT(""); - const char *found = memmem(ss->data, ss->len, delim.data, delim.len); + const char *found = mos_memmem(ss->data, ss->len, delim.data, delim.len); if (!found) { MosStringSlice res = mos_ss_copy(*ss); ss->len = 0; @@ -189,7 +189,7 @@ MosStringSlice mos_ss_find(MosStringSlice ss, MosStringSlice target) { if (target.len == 0) return ss; - const char *found = memmem(ss.data, ss.len, target.data, target.len); + const char *found = mos_memmem(ss.data, ss.len, target.data, target.len); if (!found) return MOS_SS_LIT(""); diff --git a/tests/ds/hashmap_tests.c b/tests/ds/hashmap_tests.c index 72965b4..bc1a145 100644 --- a/tests/ds/hashmap_tests.c +++ b/tests/ds/hashmap_tests.c @@ -99,7 +99,7 @@ TEST(str_key) { E *hm = hm_new(.key = HM_STR); char *str = "key"; - char *str2 = strdup(str); + char *str2 = mos_strdup(str); hm_put(hm, str, 69); hm_put(hm, "hey", 420); test_assert(hm_get(hm, str2) == 69, "hm_get got value not from hm_put"); @@ -117,7 +117,7 @@ TEST(ss_key) { E *hm = hm_new(.key = HM_SS); char *str = "key"; - char *str2 = strdup(str); + char *str2 = mos_strdup(str); StringSlice ss = ss_from_str(str); StringSlice ss2 = ss_from_str(str2); hm_put(hm, ss, 69); diff --git a/tests/string_tests.c b/tests/string_tests.c index 282927c..f1009f9 100644 --- a/tests/string_tests.c +++ b/tests/string_tests.c @@ -56,7 +56,7 @@ TEST(comparing) { test_assert(ss_eq(ss, ss), "slice is not equal to itself"); test_assert(ss_eq_str(ss, ss.data), "slice is not equal to its C string"); - char *hw = strdup("hello world"); + char *hw = mos_strdup("hello world"); StringSlice ss2 = ss_from_str(hw); test_assert(ss_eq(ss, ss2), "slice is not equal to an equal slice"); test_assert(ss_eq_str(ss, hw), "slice is not equal to an equal string"); |
