summaryrefslogtreecommitdiff
path: root/multimedia/nuppelvideo/files/patch-memmem.c
diff options
context:
space:
mode:
Diffstat (limited to 'multimedia/nuppelvideo/files/patch-memmem.c')
-rw-r--r--multimedia/nuppelvideo/files/patch-memmem.c62
1 files changed, 62 insertions, 0 deletions
diff --git a/multimedia/nuppelvideo/files/patch-memmem.c b/multimedia/nuppelvideo/files/patch-memmem.c
new file mode 100644
index 000000000000..76dbf50883a7
--- /dev/null
+++ b/multimedia/nuppelvideo/files/patch-memmem.c
@@ -0,0 +1,62 @@
+--- memmem.c.orig Thu Jan 1 00:00:00 1970
++++ memmem.c Sun Oct 24 23:05:56 2004
+@@ -0,0 +1,59 @@
++/* Copyright (C) 1991,92,93,94,96,97,98,2000 Free Software Foundation, Inc.
++ This file is part of the GNU C Library.
++
++ The GNU C Library is free software; you can redistribute it and/or
++ modify it under the terms of the GNU Lesser General Public
++ License as published by the Free Software Foundation; either
++ version 2.1 of the License, or (at your option) any later version.
++
++ The GNU C Library is distributed in the hope that it will be useful,
++ but WITHOUT ANY WARRANTY; without even the implied warranty of
++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
++ Lesser General Public License for more details.
++
++ You should have received a copy of the GNU Lesser General Public
++ License along with the GNU C Library; if not, write to the Free
++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
++ 02111-1307 USA. */
++
++#include <stddef.h>
++#include <string.h>
++
++/* Prepare for the case that `__builtin_expect' is not available. */
++#ifndef HAVE_BUILTIN_EXPECT
++# define __builtin_expect(expr, val) (expr)
++#endif
++
++#undef memmem
++
++/* Return the first occurrence of NEEDLE in HAYSTACK. */
++void *
++memmem (haystack, haystack_len, needle, needle_len)
++ const void *haystack;
++ size_t haystack_len;
++ const void *needle;
++ size_t needle_len;
++{
++ const char *begin;
++ const char *const last_possible
++ = (const char *) haystack + haystack_len - needle_len;
++
++ if (needle_len == 0)
++ /* The first occurrence of the empty string is deemed to occur at
++ the beginning of the string. */
++ return (void *) haystack;
++
++ /* Sanity check, otherwise the loop might search through the whole
++ memory. */
++ if (__builtin_expect (haystack_len < needle_len, 0))
++ return NULL;
++
++ for (begin = (const char *) haystack; begin <= last_possible; ++begin)
++ if (begin[0] == ((const char *) needle)[0] &&
++ !memcmp ((const void *) &begin[1],
++ (const void *) ((const char *) needle + 1),
++ needle_len - 1))
++ return (void *) begin;
++
++ return NULL;
++}