From e9468b25e1644bca78f959c04bc194dd594a1446 Mon Sep 17 00:00:00 2001 From: Wirtos_new Date: Sat, 19 Jun 2021 17:30:22 +0300 Subject: [PATCH] add xargvlen --- app/src/util/str_util.c | 12 ++++++++++++ app/src/util/str_util.h | 4 ++++ 2 files changed, 16 insertions(+) diff --git a/app/src/util/str_util.c b/app/src/util/str_util.c index 287c08de..df7fa25c 100644 --- a/app/src/util/str_util.c +++ b/app/src/util/str_util.c @@ -10,6 +10,18 @@ # include #endif +size_t +xargvlen(const char *const *argv, size_t *n_args) { + size_t i, len = 0; + for (i = 0; argv[i]; i++) { + len += strlen(argv[i]); + if(i != 0) len += 1; /* extra for space */ + } + if (n_args) *n_args = i; + + return len; +} + size_t xstrncpy(char *dest, const char *src, size_t n) { size_t i; diff --git a/app/src/util/str_util.h b/app/src/util/str_util.h index 361d2bdd..2f43e50f 100644 --- a/app/src/util/str_util.h +++ b/app/src/util/str_util.h @@ -6,6 +6,10 @@ #include #include +// returns the flat buffer size large enough to store all argv elements (excluding nul terminator) plus separating spaces +size_t +xargvlen(const char * const argv[], size_t *n_args); + // like strncpy, except: // - it copies at most n-1 chars // - the dest string is nul-terminated