diff options
author | Robert Ransom <rransom.8774@gmail.com> | 2011-08-03 15:49:39 -0700 |
---|---|---|
committer | Nick Mathewson <nickm@torproject.org> | 2011-08-10 15:03:24 -0400 |
commit | e42a74e56351a41c0a68999ed5fce48ab03166d7 (patch) | |
tree | b90b27fdfeb54079505c4a88cb1576f919ae9075 /src/common | |
parent | 5f624805e71d3f160ed7de28b17ecad892827758 (diff) | |
download | tor-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.c | 24 | ||||
-rw-r--r-- | src/common/util.h | 5 |
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); |