aboutsummaryrefslogtreecommitdiff
path: root/src/util_rt.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/util_rt.c')
-rw-r--r--src/util_rt.c26
1 files changed, 15 insertions, 11 deletions
diff --git a/src/util_rt.c b/src/util_rt.c
index 11fb9f0..a3829b2 100644
--- a/src/util_rt.c
+++ b/src/util_rt.c
@@ -221,19 +221,22 @@ void prne_transstr (char *str, int(*trans_f)(int)) {
}
}
-char *prne_strnstr (
- const char *haystack,
- size_t hs_len,
- const char *const needle,
+void *prne_memmem (
+ const void *in_haystack,
+ const size_t in_hs_len,
+ const void *const needle,
const size_t n_len)
{
+ const uint8_t *haystack = (const uint8_t *)in_haystack;
+ size_t hs_len = in_hs_len;
+
if (n_len == 0) {
return NULL;
}
while (hs_len >= n_len) {
- if (*haystack == *needle && memcmp(haystack, needle, n_len) == 0) {
- return (char*)haystack;
+ if (memcmp(haystack, needle, n_len) == 0) {
+ return (void*)haystack;
}
haystack += 1;
hs_len -= 1;
@@ -242,10 +245,11 @@ char *prne_strnstr (
return NULL;
}
-char *prne_build_str (
- const char **const arr,
- const size_t cnt)
-{
+char *prne_build_str (const char **const arr, const size_t cnt) {
+ return prne_rebuild_str(NULL, arr, cnt);
+}
+
+char *prne_rebuild_str (void *prev, const char **const arr, const size_t cnt) {
char *ret, *p;
size_t len;
@@ -253,7 +257,7 @@ char *prne_build_str (
for (size_t i = 0; i < cnt; i += 1) {
len += prne_nstrlen(arr[i]);
}
- ret = prne_alloc_str(len);
+ ret = prne_realloc(prev, 1, len + 1);
if (ret == NULL) {
return NULL;
}