From ddef8079918ae40c30349a1fa67ae728e6eddd2a Mon Sep 17 00:00:00 2001 From: Martin Mares Date: Sun, 4 Dec 2005 19:52:28 +0000 Subject: [PATCH] Added stk_strndup(). --- lib/stkstring.h | 2 ++ 1 file changed, 2 insertions(+) diff --git a/lib/stkstring.h b/lib/stkstring.h index 6337a26b..7314d983 100644 --- a/lib/stkstring.h +++ b/lib/stkstring.h @@ -2,6 +2,7 @@ * UCW Library -- Strings Allocated on the Stack * * (c) 2005 Martin Mares + * (c) 2005 Tomas Valla * * This software may be freely distributed and used according to the terms * of the GNU Lesser General Public License. @@ -11,6 +12,7 @@ #include #define stk_strdup(s) ({ char *_s=(s); uns _l=strlen(_s)+1; char *_x=alloca(_l); memcpy(_x, _s, _l); _x; }) +#define stk_strndup(s,n) ({ char *_s=(s); uns _n=(n); uns _k = strlen(_s); uns _l=MIN(_n,_k)+1; char *_x=alloca(_l); memcpy(_x, _s, _l); _x[_l]=0; _x; }) #define stk_strcat(s1,s2) ({ char *_s1=(s1); char *_s2=(s2); uns _l1=strlen(_s1); uns _l2=strlen(_s2); char *_x=alloca(_l1+_l2+1); memcpy(_x,_s1,_l1); memcpy(_x+_l1,_s2,_l2+1); _x; }) #define stk_strmulticat(s...) ({ char *_s[]={s}; char *_x=alloca(stk_array_len(_s, ARRAY_SIZE(_s)-1)); stk_array_copy(_x, _s, ARRAY_SIZE(_s)-1); _x; }) #define stk_strarraycat(s,n) ({ char **_s=(s); int _n=(n); char *_x=alloca(stk_array_len(_s,_n)); stk_array_copy(_x, _s, _n); _x; }) -- 2.39.2