From 1c59139687546db411fe6957cbdb2122666a0515 Mon Sep 17 00:00:00 2001 From: mrb0nk500 Date: Wed, 3 Aug 2022 15:31:39 -0300 Subject: misc: Add `vformat_len_copy()` This works the same as `vformat_len()`, except that it copies `args` into a temporary `va_list`. This can be useful when you're already using a `va_list`, and thus need to copy the list already. --- misc.c | 9 +++++++++ misc.h | 1 + 2 files changed, 10 insertions(+) diff --git a/misc.c b/misc.c index 3f82b64..36bbad4 100644 --- a/misc.c +++ b/misc.c @@ -201,6 +201,15 @@ char *skip_whitespace(const char *str) { } } +int vformat_len_copy(const char *fmt, va_list args) { + int len; + va_list tmp_args; + va_copy(tmp_args, args); + len = vformat_len(fmt, tmp_args); + va_end(tmp_args); + return len; +} + int vformat_len(const char *fmt, va_list args) { return vsnprintf(NULL, 0, fmt, args); } diff --git a/misc.h b/misc.h index 9110197..eb839de 100644 --- a/misc.h +++ b/misc.h @@ -18,6 +18,7 @@ extern char *find_alpha(const char *str); extern char *create_num_str(const char *str, int num); extern int is_empty(const char *str); extern char *skip_whitespace(const char *str); +extern int vformat_len_copy(const char *fmt, va_list args); extern int vformat_len(const char *fmt, va_list args); extern int format_len(const char *fmt, ...); extern int is_dir(const char *path); -- cgit v1.2.3-13-gbd6f