aboutsummaryrefslogtreecommitdiff
path: root/src/lib/container
diff options
context:
space:
mode:
authorNick Mathewson <nickm@torproject.org>2018-06-22 09:26:19 -0400
committerNick Mathewson <nickm@torproject.org>2018-06-22 09:49:13 -0400
commit3883338c8121212b3f6f9c020d489d50bbcdd855 (patch)
tree18d9b69f63060354ad9c7525a46c63e0dcef54d3 /src/lib/container
parent1abadee3fd1c15f3720003c411ec6043c29d7c09 (diff)
downloadtor-3883338c8121212b3f6f9c020d489d50bbcdd855.tar.gz
tor-3883338c8121212b3f6f9c020d489d50bbcdd855.zip
Move smartlist_add_{v,}asprintf into smartlist.[ch]
Now that I know that "strings" nests below "container", I know this is safe.
Diffstat (limited to 'src/lib/container')
-rw-r--r--src/lib/container/smartlist.c25
-rw-r--r--src/lib/container/smartlist.h5
2 files changed, 30 insertions, 0 deletions
diff --git a/src/lib/container/smartlist.c b/src/lib/container/smartlist.c
index 3a0a2d1068..57b88415a3 100644
--- a/src/lib/container/smartlist.c
+++ b/src/lib/container/smartlist.c
@@ -18,6 +18,7 @@
#include "lib/defs/digest_sizes.h"
#include "lib/ctime/di_ops.h"
#include "lib/string/util_string.h"
+#include "lib/string/printf.h"
#include <stdlib.h>
#include <string.h>
@@ -124,6 +125,30 @@ smartlist_add_strdup(struct smartlist_t *sl, const char *string)
smartlist_add(sl, copy);
}
+/** Append the string produced by tor_asprintf(<b>pattern</b>, <b>...</b>)
+ * to <b>sl</b>. */
+void
+smartlist_add_asprintf(struct smartlist_t *sl, const char *pattern, ...)
+{
+ va_list ap;
+ va_start(ap, pattern);
+ smartlist_add_vasprintf(sl, pattern, ap);
+ va_end(ap);
+}
+
+/** va_list-based backend of smartlist_add_asprintf. */
+void
+smartlist_add_vasprintf(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);
+}
+
/** Remove all elements E from sl such that E==element. Preserve
* the order of any elements before E, but elements after E can be
* rearranged.
diff --git a/src/lib/container/smartlist.h b/src/lib/container/smartlist.h
index 7b80a9fed3..53a4948cf6 100644
--- a/src/lib/container/smartlist.h
+++ b/src/lib/container/smartlist.h
@@ -37,6 +37,11 @@ void smartlist_clear(smartlist_t *sl);
void smartlist_add(smartlist_t *sl, void *element);
void smartlist_add_all(smartlist_t *sl, const smartlist_t *s2);
void smartlist_add_strdup(struct smartlist_t *sl, const char *string);
+void smartlist_add_asprintf(struct smartlist_t *sl, const char *pattern, ...)
+ CHECK_PRINTF(2, 3);
+void smartlist_add_vasprintf(struct smartlist_t *sl, const char *pattern,
+ va_list args)
+ CHECK_PRINTF(2, 0);
void smartlist_remove(smartlist_t *sl, const void *element);
void smartlist_remove_keeporder(smartlist_t *sl, const void *element);
void *smartlist_pop_last(smartlist_t *sl);