Add a wrapper for 'memmem'
memmem is a GNU libc extension that works like strstr except that the size of the needle and the haystack are passed into the function instead of using null-terminated strings. This patch adds a wrapper function called 'cogl_util_memmem' so that we can use this function. There is a configure check and if the function is not available then a fallback implementation will be used. Otherwise cogl_util_memmem is just defined to memmem. Reviewed-by: Robert Bragg <robert@linux.intel.com> (cherry picked from commit 1dd1b0a67f6238e13f7f9253fb03addada0541b7)
This commit is contained in:
parent
12a1ef72c0
commit
0c66431df3
@ -25,6 +25,8 @@
|
|||||||
#include "config.h"
|
#include "config.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#include <string.h>
|
||||||
|
|
||||||
#include "cogl-util.h"
|
#include "cogl-util.h"
|
||||||
#include "cogl-private.h"
|
#include "cogl-private.h"
|
||||||
|
|
||||||
@ -252,4 +254,26 @@ _cogl_util_pixel_format_from_masks (unsigned long r_mask,
|
|||||||
return image_format;
|
return image_format;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifndef HAVE_MEMMEM
|
||||||
|
|
||||||
|
char *
|
||||||
|
_cogl_util_memmem (const void *haystack,
|
||||||
|
size_t haystack_len,
|
||||||
|
const void *needle,
|
||||||
|
size_t needle_len)
|
||||||
|
{
|
||||||
|
size_t i;
|
||||||
|
|
||||||
|
if (needle_len > haystack_len)
|
||||||
|
return NULL;
|
||||||
|
|
||||||
|
for (i = 0; i <= haystack_len - needle_len; i++)
|
||||||
|
if (!memcmp ((const char *) haystack + i, needle, needle_len))
|
||||||
|
return (char *) haystack + i;
|
||||||
|
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif /* HAVE_MEMMEM */
|
||||||
|
|
||||||
#endif /* _COGL_IN_TEST_BITMASK */
|
#endif /* _COGL_IN_TEST_BITMASK */
|
||||||
|
@ -268,4 +268,14 @@ _cogl_util_pixel_format_from_masks (unsigned long r_mask,
|
|||||||
#define _Static_assert(EXPRESSION, MESSAGE)
|
#define _Static_assert(EXPRESSION, MESSAGE)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifdef HAVE_MEMMEM
|
||||||
|
#define _cogl_util_memmem memmem
|
||||||
|
#else
|
||||||
|
char *
|
||||||
|
_cogl_util_memmem (const void *haystack,
|
||||||
|
size_t haystack_len,
|
||||||
|
const void *needle,
|
||||||
|
size_t needle_len);
|
||||||
|
#endif
|
||||||
|
|
||||||
#endif /* __COGL_UTIL_H */
|
#endif /* __COGL_UTIL_H */
|
||||||
|
@ -1103,6 +1103,9 @@ dnl The 'ffs' function is part of C99 so it isn't always
|
|||||||
dnl available. Cogl has a fallback if needed.
|
dnl available. Cogl has a fallback if needed.
|
||||||
AC_CHECK_FUNCS([ffs])
|
AC_CHECK_FUNCS([ffs])
|
||||||
|
|
||||||
|
dnl 'memmem' is a GNU extension but we have a simple fallback
|
||||||
|
AC_CHECK_FUNCS([memmem])
|
||||||
|
|
||||||
dnl ================================================================
|
dnl ================================================================
|
||||||
dnl Platform values
|
dnl Platform values
|
||||||
dnl ================================================================
|
dnl ================================================================
|
||||||
|
Loading…
x
Reference in New Issue
Block a user