From 50e68be60fff7e4f9b91ceb43edbb1e93564c167 Mon Sep 17 00:00:00 2001 From: Sam Hartman Date: Wed, 10 Apr 2013 15:26:47 -0400 Subject: [PATCH] add tr_name_strlcat and tr_name_strdup --- common/tr_name.c | 24 ++++++++++++++++++++++++ include/trust_router/tr_name.h | 4 ++++ 2 files changed, 28 insertions(+) diff --git a/common/tr_name.c b/common/tr_name.c index 4383c61..00757d4 100644 --- a/common/tr_name.c +++ b/common/tr_name.c @@ -83,3 +83,27 @@ int tr_name_cmp(TR_NAME *one, TR_NAME *two) /* TBD -- should really do a length-based comparison */ return strcmp(one->buf, two->buf); } + +void tr_name_strlcat(char *dest, const TR_NAME *src, size_t len) +{ + size_t used_len; + if (src->len >= len) + used_len = len-1; + else used_len = src->len; + if (used_len > 0) + strncat(dest, src->buf, used_len); + else dest[0] = '\0'; +} + + +char * tr_name_strdup(TR_NAME *src) +{ + char *s = calloc(src->len+1, 1); + if (s) { + memcpy(s, src->buf, src->len); + s[src->len] = '\0'; + } + return s; +} + + diff --git a/include/trust_router/tr_name.h b/include/trust_router/tr_name.h index 53c5b0c..486bbbc 100644 --- a/include/trust_router/tr_name.h +++ b/include/trust_router/tr_name.h @@ -34,6 +34,7 @@ #ifndef TR_NAME_H #define TR_NAME_H +#include #include typedef struct tr__name { @@ -45,4 +46,7 @@ TR_EXPORT TR_NAME *tr_new_name (char *name); TR_EXPORT TR_NAME *tr_dup_name (TR_NAME *from); TR_EXPORT void tr_free_name (TR_NAME *name); TR_EXPORT int tr_name_cmp (TR_NAME *one, TR_NAME *two); +TR_EXPORT void tr_name_strlcat(char *dest, const TR_NAME *src, size_t len); +TR_EXPORT char *tr_name_strdup(TR_NAME *); + #endif -- 2.1.4