Add functions to search for markers in an array.
This commit is contained in:
parent
12d0a73abf
commit
421f4ed1d6
31
src/array.c
31
src/array.c
@ -19,6 +19,8 @@
|
||||
* MA 02110-1301 USA
|
||||
*/
|
||||
|
||||
#include <string.h>
|
||||
|
||||
#include "array.h"
|
||||
|
||||
void
|
||||
@ -62,6 +64,35 @@ array_isequal (const unsigned char data[], unsigned int size, unsigned char valu
|
||||
}
|
||||
|
||||
|
||||
const unsigned char *
|
||||
array_search_forward (const unsigned char *data, unsigned int size,
|
||||
const unsigned char *marker, unsigned int msize)
|
||||
{
|
||||
while (size >= msize) {
|
||||
if (memcmp (data, marker, msize) == 0)
|
||||
return data;
|
||||
size--;
|
||||
data++;
|
||||
}
|
||||
return NULL;
|
||||
}
|
||||
|
||||
|
||||
const unsigned char *
|
||||
array_search_backward (const unsigned char *data, unsigned int size,
|
||||
const unsigned char *marker, unsigned int msize)
|
||||
{
|
||||
data += size;
|
||||
while (size >= msize) {
|
||||
if (memcmp (data - msize, marker, msize) == 0)
|
||||
return data;
|
||||
size--;
|
||||
data--;
|
||||
}
|
||||
return NULL;
|
||||
}
|
||||
|
||||
|
||||
unsigned int
|
||||
array_uint32_be (const unsigned char data[])
|
||||
{
|
||||
|
||||
@ -35,6 +35,14 @@ array_reverse_bits (unsigned char data[], unsigned int size);
|
||||
int
|
||||
array_isequal (const unsigned char data[], unsigned int size, unsigned char value);
|
||||
|
||||
const unsigned char *
|
||||
array_search_forward (const unsigned char *data, unsigned int size,
|
||||
const unsigned char *marker, unsigned int msize);
|
||||
|
||||
const unsigned char *
|
||||
array_search_backward (const unsigned char *data, unsigned int size,
|
||||
const unsigned char *marker, unsigned int msize);
|
||||
|
||||
unsigned int
|
||||
array_uint32_be (const unsigned char data[]);
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user