Add functions to search for markers in an array.

This commit is contained in:
Jef Driesen 2009-12-03 12:43:19 +00:00
parent 12d0a73abf
commit 421f4ed1d6
2 changed files with 39 additions and 0 deletions

View File

@ -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[])
{

View File

@ -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[]);