]> git.proxmox.com Git - mirror_lxc.git/commitdiff
utils: add must_concat helper
authorWolfgang Bumiller <w.bumiller@proxmox.com>
Wed, 18 Jul 2018 10:43:37 +0000 (12:43 +0200)
committerWolfgang Bumiller <w.bumiller@proxmox.com>
Wed, 25 Jul 2018 10:12:27 +0000 (12:12 +0200)
Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com>
src/lxc/utils.c
src/lxc/utils.h

index bad355265575f068a83f5565955f586f46fc2844..82c24c94124c13582a36152a785ea6f0e263b9b0 100644 (file)
@@ -2433,6 +2433,30 @@ int run_command(char *buf, size_t buf_size, int (*child_fn)(void *), void *args)
        return fret;
 }
 
+char *must_concat(const char *first, ...)
+{
+       va_list args;
+       char *cur, *dest;
+       size_t cur_len, it_len;
+
+       dest = must_copy_string(first);
+       cur_len = it_len = strlen(first);
+
+       va_start(args, first);
+       while ((cur = va_arg(args, char *)) != NULL) {
+               it_len = strlen(cur);
+
+               dest = must_realloc(dest, cur_len + it_len + 1);
+
+               (void)memcpy(dest + cur_len, cur, it_len);
+               cur_len += it_len;
+       }
+       va_end(args);
+
+       dest[cur_len] = 0;
+       return dest;
+}
+
 char *must_make_path(const char *first, ...)
 {
        va_list args;
index 46ef2850494228ce625f1a45cdb2de15db3a9243..f09bc90181ad9989fd6c728d8573a568ac85059c 100644 (file)
@@ -568,6 +568,7 @@ extern int run_command(char *buf, size_t buf_size, int (*child_fn)(void *),
 /* Concatenate all passed-in strings into one path. Do not fail. If any piece
  * is not prefixed with '/', add a '/'.
  */
+__attribute__((sentinel)) extern char *must_concat(const char *first, ...);
 __attribute__((sentinel)) extern char *must_make_path(const char *first, ...);
 __attribute__((sentinel)) extern char *must_append_path(char *first, ...);