summaryrefslogtreecommitdiff
path: root/src/common
diff options
context:
space:
mode:
authorRobert Ransom <rransom.8774@gmail.com>2011-08-03 15:49:39 -0700
committerNick Mathewson <nickm@torproject.org>2011-08-10 15:03:24 -0400
commite42a74e56351a41c0a68999ed5fce48ab03166d7 (patch)
treeb90b27fdfeb54079505c4a88cb1576f919ae9075 /src/common
parent5f624805e71d3f160ed7de28b17ecad892827758 (diff)
downloadtor-e42a74e56351a41c0a68999ed5fce48ab03166d7.tar.gz
tor-e42a74e56351a41c0a68999ed5fce48ab03166d7.zip
Add smartlist_[v]asprintf_add
I should have added this before implementing #2411.
Diffstat (limited to 'src/common')
-rw-r--r--src/common/util.c24
-rw-r--r--src/common/util.h5
2 files changed, 29 insertions, 0 deletions
diff --git a/src/common/util.c b/src/common/util.c
index 601f2be3e2..1e5e454c64 100644
--- a/src/common/util.c
+++ b/src/common/util.c
@@ -2679,6 +2679,30 @@ tor_sscanf(const char *buf, const char *pattern, ...)
return r;
}
+/** Append the string produced by tor_asprintf(<b>pattern</b>, <b>...</b>)
+ * to <b>sl</b>. */
+void
+smartlist_asprintf_add(struct smartlist_t *sl, const char *pattern, ...)
+{
+ va_list ap;
+ va_start(ap, pattern);
+ smartlist_vasprintf_add(sl, pattern, ap);
+ va_end(ap);
+}
+
+/** va_list-based backend of smartlist_asprintf_add. */
+void
+smartlist_vasprintf_add(struct smartlist_t *sl, const char *pattern,
+ va_list args)
+{
+ char *str = NULL;
+
+ tor_vasprintf(&str, pattern, args);
+ tor_assert(str != NULL);
+
+ smartlist_add(sl, str);
+}
+
/** Return a new list containing the filenames in the directory <b>dirname</b>.
* Return NULL on error or if <b>dirname</b> is not a directory.
*/
diff --git a/src/common/util.h b/src/common/util.h
index 99355871f6..a1def6cc3f 100644
--- a/src/common/util.h
+++ b/src/common/util.h
@@ -220,6 +220,11 @@ int tor_sscanf(const char *buf, const char *pattern, ...)
#endif
;
+void smartlist_asprintf_add(struct smartlist_t *sl, const char *pattern, ...)
+ CHECK_PRINTF(2, 3);
+void smartlist_vasprintf_add(struct smartlist_t *sl, const char *pattern,
+ va_list args);
+
int hex_decode_digit(char c);
void base16_encode(char *dest, size_t destlen, const char *src, size_t srclen);
int base16_decode(char *dest, size_t destlen, const char *src, size_t srclen);