summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authormrb0nk500 <b0nk@b0nk.xyz>2022-08-03 15:27:11 -0300
committermrb0nk500 <b0nk@b0nk.xyz>2022-08-03 15:27:11 -0300
commit44cfcd337ad418e613c6434c181dafe5bf67057e (patch)
tree979199c4c6ed90bf49fbde195731e5a53ef2b2d3
parentca4284c2160617bb57292f56ba6b9bd7fc0814db (diff)
misc: Add `vformat_len()`
This works exactly like `format_len()`, except that it uses `va_list` rather than variadic arguments.
-rw-r--r--misc.c4
-rw-r--r--misc.h3
2 files changed, 7 insertions, 0 deletions
diff --git a/misc.c b/misc.c
index 4c0cab0..6e10a57 100644
--- a/misc.c
+++ b/misc.c
@@ -201,6 +201,10 @@ char *skip_whitespace(const char *str) {
}
}
+int vformat_len(const char *fmt, va_list args) {
+ return vsnprintf(NULL, 0, fmt, args);
+}
+
int format_len(const char *fmt, ...) {
int len = 0;
va_list args;
diff --git a/misc.h b/misc.h
index 3a653e2..9110197 100644
--- a/misc.h
+++ b/misc.h
@@ -1,6 +1,8 @@
#ifndef MISC_H
#define MISC_H
+#include <stdarg.h>
+
extern char *read_file(const char *filename, long *size);
extern char *find_delm(char *str, const char *delm, int skip_delm);
extern char *get_str_delm_range(char *str, const char *start_delm, const char *end_delm, char **rhs);
@@ -16,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(const char *fmt, va_list args);
extern int format_len(const char *fmt, ...);
extern int is_dir(const char *path);
extern void mkdirp(const char *path, int mode);