diff options
author | Nick Mathewson <nickm@torproject.org> | 2018-06-22 09:26:19 -0400 |
---|---|---|
committer | Nick Mathewson <nickm@torproject.org> | 2018-06-22 09:49:13 -0400 |
commit | 3883338c8121212b3f6f9c020d489d50bbcdd855 (patch) | |
tree | 18d9b69f63060354ad9c7525a46c63e0dcef54d3 | |
parent | 1abadee3fd1c15f3720003c411ec6043c29d7c09 (diff) | |
download | tor-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.
-rw-r--r-- | src/common/util.c | 24 | ||||
-rw-r--r-- | src/common/util.h | 8 | ||||
-rw-r--r-- | src/lib/container/smartlist.c | 25 | ||||
-rw-r--r-- | src/lib/container/smartlist.h | 5 | ||||
-rw-r--r-- | src/rust/build.rs | 1 |
5 files changed, 32 insertions, 31 deletions
diff --git a/src/common/util.c b/src/common/util.c index 597ff2c420..fc996f16c1 100644 --- a/src/common/util.c +++ b/src/common/util.c @@ -2595,30 +2595,6 @@ expand_filename(const char *filename) #endif /* defined(_WIN32) */ } -/** 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); -} - /** 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 5833fe567f..de6ba8ece0 100644 --- a/src/common/util.h +++ b/src/common/util.h @@ -126,13 +126,6 @@ const char *escaped(const char *string); char *tor_escape_str_for_pt_args(const char *string, const char *chars_to_escape); -struct smartlist_t; -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); - /* Time helpers */ long tv_udiff(const struct timeval *start, const struct timeval *end); long tv_mdiff(const struct timeval *start, const struct timeval *end); @@ -250,6 +243,7 @@ typedef struct sized_chunk_t { const char *bytes; size_t len; } sized_chunk_t; +struct smartlist_t; int write_chunks_to_file(const char *fname, const struct smartlist_t *chunks, int bin, int no_tempfile); int append_bytes_to_file(const char *fname, const char *str, size_t len, 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); diff --git a/src/rust/build.rs b/src/rust/build.rs index a4f38d3b46..5c80265e55 100644 --- a/src/rust/build.rs +++ b/src/rust/build.rs @@ -152,6 +152,7 @@ pub fn main() { cfg.component("tor-crypt-ops-testing"); cfg.component("or-testing"); cfg.component("tor-container-testing"); + cfg.component("tor-string-testing"); cfg.component("tor-malloc"); cfg.component("tor-err-testing"); cfg.component("or-event-testing"); |