X-Git-Url: http://git.efficios.com/?p=lttng-tools.git;a=blobdiff_plain;f=src%2Fcommon%2Fcompat%2Fstring.h;h=a18d9e7cab56c2434a67debccf45d05b82252734;hp=db3db80522f5fe039f3f5f716f567f6676dfa87f;hb=ec5b87f3610b3b0e52ce6109600930deb5996cca;hpb=157b2d445425611ab8ada02e34204cd9134c2acc diff --git a/src/common/compat/string.h b/src/common/compat/string.h index db3db8052..a18d9e7ca 100644 --- a/src/common/compat/string.h +++ b/src/common/compat/string.h @@ -1,30 +1,16 @@ /* * Copyright (C) 2015 Michael Jeanson - * 2015 Jérémie Galarneau + * Copyright (C) 2015 Jérémie Galarneau * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: + * SPDX-License-Identifier: MIT * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. */ #ifndef _COMPAT_STRING_H #define _COMPAT_STRING_H #include +#include #ifdef HAVE_STRNLEN static inline @@ -123,4 +109,25 @@ static inline int lttng_fls(int val) } #endif /* HAVE_FLS */ +#if HAVE_MEMRCHR +static inline +void *lttng_memrchr(const void *s, int c, size_t n) +{ + return memrchr(s, c, n); +} +#else +static inline +void *lttng_memrchr(const void *s, int c, size_t n) +{ + int i; + const char *str = s; + for (i = n-1; i >= 0; i--) { + if (str[i] == (char)c) { + return (void *)(str+i); + } + } + return NULL; +} +#endif /* HAVE_MEMRCHR */ + #endif /* _COMPAT_STRING_H */