diff options
| author | Richard Nyberg <rnyberg@murmeldjur.se> | 2009-01-11 00:30:39 +0100 |
|---|---|---|
| committer | Richard Nyberg <rnyberg@murmeldjur.se> | 2009-01-11 00:30:39 +0100 |
| commit | 186113e4ee392535aa5de02c209fd8f4996545af (patch) | |
| tree | d6c9508aaa0ec1721cd74b7db786a50204fbb2e3 | |
| parent | b4be0683e64a0778a00acb28da136b9f65bdb6c3 (diff) | |
| download | btpd-186113e4ee392535aa5de02c209fd8f4996545af.tar.gz btpd-186113e4ee392535aa5de02c209fd8f4996545af.zip | |
Add the function memfind. It'll be used by iobuf.
| -rw-r--r-- | misc/subr.c | 15 | ||||
| -rw-r--r-- | misc/subr.h | 2 |
2 files changed, 17 insertions, 0 deletions
diff --git a/misc/subr.c b/misc/subr.c index 0ca41c7..c7392c1 100644 --- a/misc/subr.c +++ b/misc/subr.c @@ -13,6 +13,21 @@ #include <string.h> #include <unistd.h> +void * +memfind(const void *sub, size_t sublen, const void *mem, size_t memlen) +{ + size_t i, j; + const uint8_t *s = sub, *m = mem; + for (i = 0; i < memlen - sublen + 1; i++) { + for (j = 0; j < sublen; j++) + if (m[i+j] != s[j]) + break; + if (j == sublen) + return (void *)(m + i); + } + return NULL; +} + void enc_be32(void *buf, uint32_t num) { diff --git a/misc/subr.h b/misc/subr.h index d0bf831..73465b0 100644 --- a/misc/subr.h +++ b/misc/subr.h @@ -9,6 +9,8 @@ #define SHAHEXSIZE 41 +void *memfind(const void *sub, size_t sublen, const void *mem, size_t memlen); + uint32_t dec_be32(const void *buf); uint64_t dec_be64(const void *buf); void enc_be32(void *buf, uint32_t num); |