add tr_name_strlcat and tr_name_strdup
authorSam Hartman <hartmans@debian.org>
Wed, 10 Apr 2013 19:26:47 +0000 (15:26 -0400)
committerSam Hartman <hartmans@debian.org>
Wed, 10 Apr 2013 19:26:47 +0000 (15:26 -0400)
common/tr_name.c
include/trust_router/tr_name.h

index 4383c61..00757d4 100644 (file)
@@ -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;
+}
+
+  
index 53c5b0c..486bbbc 100644 (file)
@@ -34,6 +34,7 @@
 
 #ifndef TR_NAME_H
 #define TR_NAME_H
+#include <string.h>
 #include <trust_router/tr_versioning.h>
 
 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