util: add talloc-extra.[ch]
authorDavid Bremner <bremner@debian.org>
Mon, 17 Dec 2012 03:12:51 +0000 (23:12 -0400)
committerDavid Bremner <bremner@debian.org>
Mon, 31 Dec 2012 01:12:11 +0000 (21:12 -0400)
These are intended to be simple wrappers to provide slightly better
debugging information than what talloc currently provides natively.

notmuch-client.h
util/Makefile.local
util/talloc-extra.c [new file with mode: 0644]
util/talloc-extra.h [new file with mode: 0644]

index d7b352e83446e85e97c76578e0314f139b547842..5f2883681c1ee127332108ba7872146a04eb3e6f 100644 (file)
@@ -58,7 +58,7 @@ typedef GMimeCipherContext notmuch_crypto_context_t;
 #include <errno.h>
 #include <signal.h>
 
-#include <talloc.h>
+#include "talloc-extra.h"
 
 #define unused(x) x __attribute__ ((unused))
 
index a11e35b98b74571abacb12b1f728fe62faa5e5b2..29c0ce6efc39318496711eee6e54e68d39ad4fca 100644 (file)
@@ -4,7 +4,7 @@ dir := util
 extra_cflags += -I$(srcdir)/$(dir)
 
 libutil_c_srcs := $(dir)/xutil.c $(dir)/error_util.c $(dir)/hex-escape.c \
-                 $(dir)/string-util.c
+                 $(dir)/string-util.c $(dir)/talloc-extra.c
 
 libutil_modules := $(libutil_c_srcs:.c=.o)
 
diff --git a/util/talloc-extra.c b/util/talloc-extra.c
new file mode 100644 (file)
index 0000000..9626247
--- /dev/null
@@ -0,0 +1,14 @@
+#include <string.h>
+#include "talloc-extra.h"
+
+char *
+talloc_strndup_named_const (void *ctx, const char *str,
+                           size_t len, const char *name)
+{
+    char *ptr = talloc_strndup (ctx, str, len);
+
+    if (ptr)
+       talloc_set_name_const (ptr, name);
+
+    return ptr;
+}
diff --git a/util/talloc-extra.h b/util/talloc-extra.h
new file mode 100644 (file)
index 0000000..eac5dc0
--- /dev/null
@@ -0,0 +1,18 @@
+#ifndef _TALLOC_EXTRA_H
+#define _TALLOC_EXTRA_H
+
+#include <talloc.h>
+
+/* Like talloc_strndup, but take an extra parameter for the internal talloc
+ * name (for debugging) */
+
+char *
+talloc_strndup_named_const (void *ctx, const char *str,
+                           size_t len, const char *name);
+
+/* use the __location__ macro from talloc.h to name a string according to its
+ * source location */
+
+#define talloc_strndup_debug(ctx, str, len) talloc_strndup_named_const (ctx, str, len, __location__)
+
+#endif