diff options
author | Mattias Andrée <maandree@kth.se> | 2018-08-25 23:01:22 +0200 |
---|---|---|
committer | Mattias Andrée <maandree@kth.se> | 2018-08-25 23:01:22 +0200 |
commit | 6912e596b839e658aa83538731a91c726e5973f5 (patch) | |
tree | eca9ef0baa1454172d1a40775ba115629de63eb3 /libsimple.h | |
parent | Add more tests (diff) | |
download | libsimple-6912e596b839e658aa83538731a91c726e5973f5.tar.gz libsimple-6912e596b839e658aa83538731a91c726e5973f5.tar.bz2 libsimple-6912e596b839e658aa83538731a91c726e5973f5.tar.xz |
Some fixes and more tests
Signed-off-by: Mattias Andrée <maandree@kth.se>
Diffstat (limited to 'libsimple.h')
-rw-r--r-- | libsimple.h | 23 |
1 files changed, 13 insertions, 10 deletions
diff --git a/libsimple.h b/libsimple.h index c163f76..4d3520e 100644 --- a/libsimple.h +++ b/libsimple.h @@ -558,22 +558,22 @@ static inline void *libsimple_mempcpy(void *__d, const void *__s, size_t __n) #endif -#ifndef strdupa -# if defined(__GNUC__) || defined(__clang__) -# define strdupa(s) /* TODO test */\ +#if defined(__GNUC__) || defined(__clang__) +# define libsimple_strdupa(s)\ ({\ const char *__s = (s);\ size_t __n = strlen(__s) + 1;\ char *__r = alloca(__n);\ memcpy(__r, __s, __n);\ }) +# ifndef strdupa +# define strdupa(s) libsimple_strdupa(s) # endif #endif -#ifndef strdupa -# if defined(__GNUC__) || defined(__clang__) -# define strndupa(s, n) /* TODO test */\ +#if defined(__GNUC__) || defined(__clang__) +# define libsimple_strndupa(s, n)\ ({\ const char *__s = (s);\ size_t __n = (n);\ @@ -582,22 +582,25 @@ static inline void *libsimple_mempcpy(void *__d, const void *__s, size_t __n) __n = __n < __m ? __n : __m;\ __r = alloca(__n + 1);\ memcpy(__r, __s, __n);\ - __r[n] = '\0';\ + __r[__n] = '\0';\ __r;\ }) +# ifndef strndupa +# define strndupa(s, n) libsimple_strndupa(s, n) # endif #endif -#ifndef strdupa -# if defined(__GNUC__) || defined(__clang__) -# define memdupa(s, n) /* TODO test */\ +#if defined(__GNUC__) || defined(__clang__) +# define libsimple_memdupa(s, n)\ ({\ const char *__s = (s);\ size_t __n = (n);\ char *__r = alloca(__n);\ memcpy(__r, __s, __n);\ }) +# ifndef memdupa +# define memdupa(s, n) libsimple_memdupa(s, n) # endif #endif |