diff --git a/src/lxc/cgroups/cgfsng.c b/src/lxc/cgroups/cgfsng.c index 1192d575f..b3f4ca742 100644 --- a/src/lxc/cgroups/cgfsng.c +++ b/src/lxc/cgroups/cgfsng.c @@ -118,36 +118,12 @@ static void free_string_list(char **clist) } } -/* Re-alllocate a pointer, do not fail */ -static void *must_realloc(void *orig, size_t sz) -{ - void *ret; - - do { - ret = realloc(orig, sz); - } while (!ret); - return ret; -} - /* Allocate a pointer, do not fail */ static void *must_alloc(size_t sz) { return must_realloc(NULL, sz); } -/* return copy of string @entry; do not fail. */ -static char *must_copy_string(const char *entry) -{ - char *ret; - - if (!entry) - return NULL; - do { - ret = strdup(entry); - } while (!ret); - return ret; -} - /* * This is a special case - return a copy of @entry * prepending 'name='. I.e. turn systemd into name=systemd. @@ -259,8 +235,6 @@ struct hierarchy *get_hierarchy(const char *c) return NULL; } -static char *must_make_path(const char *first, ...) __attribute__((sentinel)); - #define BATCH_SIZE 50 static void batch_realloc(char **mem, size_t oldlen, size_t newlen) { @@ -1187,33 +1161,6 @@ out_free: return NULL; } -/* - * Concatenate all passed-in strings into one path. Do not fail. If any piece is - * not prefixed with '/', add a '/'. - */ -static char *must_make_path(const char *first, ...) -{ - va_list args; - char *cur, *dest; - size_t full_len = strlen(first); - - dest = must_copy_string(first); - - va_start(args, first); - while ((cur = va_arg(args, char *)) != NULL) { - full_len += strlen(cur); - if (cur[0] != '/') - full_len++; - dest = must_realloc(dest, full_len + 1); - if (cur[0] != '/') - strcat(dest, "/"); - strcat(dest, cur); - } - va_end(args); - - return dest; -} - static int cgroup_rmdir(char *dirname) { struct dirent *direntp; diff --git a/src/lxc/utils.c b/src/lxc/utils.c index 5b61cba00..f89c837d5 100644 --- a/src/lxc/utils.c +++ b/src/lxc/utils.c @@ -2337,3 +2337,50 @@ int run_command(char *buf, size_t buf_size, int (*child_fn)(void *), void *args) return fret; } + +char *must_make_path(const char *first, ...) +{ + va_list args; + char *cur, *dest; + size_t full_len = strlen(first); + + dest = must_copy_string(first); + + va_start(args, first); + while ((cur = va_arg(args, char *)) != NULL) { + full_len += strlen(cur); + if (cur[0] != '/') + full_len++; + dest = must_realloc(dest, full_len + 1); + if (cur[0] != '/') + strcat(dest, "/"); + strcat(dest, cur); + } + va_end(args); + + return dest; +} + +char *must_copy_string(const char *entry) +{ + char *ret; + + if (!entry) + return NULL; + do { + ret = strdup(entry); + } while (!ret); + + return ret; +} + +void *must_realloc(void *orig, size_t sz) +{ + void *ret; + + do { + ret = realloc(orig, sz); + } while (!ret); + + return ret; +} diff --git a/src/lxc/utils.h b/src/lxc/utils.h index 916ee56a6..3465e6a6f 100644 --- a/src/lxc/utils.h +++ b/src/lxc/utils.h @@ -375,4 +375,15 @@ int lxc_unstack_mountpoint(const char *path, bool lazy); */ int run_command(char *buf, size_t buf_size, int (*child_fn)(void *), void *args); +/* Concatenate all passed-in strings into one path. Do not fail. If any piece + * is not prefixed with '/', add a '/'. + */ +char *must_make_path(const char *first, ...) __attribute__((sentinel)); + +/* return copy of string @entry; do not fail. */ +char *must_copy_string(const char *entry); + +/* Re-alllocate a pointer, do not fail */ +void *must_realloc(void *orig, size_t sz); + #endif /* __LXC_UTILS_H */