Ticket #8265: memrchr.diff

File memrchr.diff, 1.5 KB (added by Barrett, 12 years ago)
  • headers/posix/string.h

    diff --git a/headers/posix/string.h b/headers/posix/string.h
    index 81992c0..1f53761 100644
    a b extern "C" {  
    1616
    1717/* memXXX() functions */
    1818extern void     *memchr(const void *source, int value, size_t length);
     19extern void     *memrchr(const void *source, int value, size_t length);
    1920extern int      memcmp(const void *buffer1, const void *buffer2, size_t length);
    2021extern void     *memcpy(void *dest, const void *source, size_t length);
    2122extern void     *memccpy(void *dest, const void *source, int stopByte, size_t length);
  • src/system/libroot/posix/string/Jamfile

    diff --git a/src/system/libroot/posix/string/Jamfile b/src/system/libroot/posix/string/Jamfile
    index 8fdbe7b..0cc107f 100644
    a b MergeObject posix_string.o :  
    1212    ffs.cpp
    1313    memccpy.c
    1414    memchr.c
     15    memrchr.c
    1516    memcmp.c
    1617    memmove.c
    1718    stpcpy.c
  • new file src/system/libroot/posix/string/memrchr.c

    diff --git a/src/system/libroot/posix/string/memrchr.c b/src/system/libroot/posix/string/memrchr.c
    new file mode 100644
    index 0000000..98dc1b6
    - +  
     1/*
     2 * Copyright 2011, Haiku, Inc.
     3 * Distributed under the terms of the MIT license.
     4 *
     5 * Authors:
     6 *      Dario Casalinuovo
     7 */
     8
     9#include <sys/types.h>
     10#include <string.h>
     11
     12void*
     13memrchr(const void* source, int value, size_t length)
     14{
     15    unsigned const char* b = source+length-1;
     16    size_t i;
     17
     18    for (i = 0; i < length; i++) {
     19        if (*b == value)
     20            return (void*)(b);
     21        b--;
     22    }
     23
     24    return NULL;
     25}