* here, ignore errors.
*/
for (int fd = STDIN_FILENO; fd <= STDERR_FILENO; fd++) {
- ret = fd_cloexec(fd, false);
+ ret = lxc_fd_cloexec(fd, false);
if (ret < 0) {
SYSERROR("Failed to clear FD_CLOEXEC from file descriptor %d", fd);
goto on_error;
hierarchy_mnt = must_make_path(cgroup_root, h->at_mnt, NULL);
path2 = must_make_path(hierarchy_mnt, h->at_base,
ops->container_cgroup, NULL);
- ret = mkdir_p(path2, 0755);
+ ret = lxc_mkdir_p(path2, 0755);
if (ret < 0 && (errno != EEXIST))
return false;
struct statfs fs;
ret = fstatfs(fd, &fs);
- if (!ret && is_fs_type(&fs, CGROUP2_SUPER_MAGIC))
+ if (!ret && lxc_is_fs_type(&fs, CGROUP2_SUPER_MAGIC))
return true;
return false;
}
if (hasmntopt(mntent, "create=dir")) {
- ret = mkdir_p(path, 0755);
+ ret = lxc_mkdir_p(path, 0755);
if (ret < 0 && errno != EEXIST)
return log_error_errno(-1, errno, "Failed to create directory \"%s\"", path);
}
p2 = dirname(p1);
- ret = mkdir_p(p2, 0755);
+ ret = lxc_mkdir_p(p2, 0755);
if (ret < 0 && errno != EEXIST)
return log_error_errno(-1, errno, "Failed to create directory \"%s\"", path);
return 0;
}
- if (value[strlen(value)-1] == '/' || is_dir(value))
+ if (value[strlen(value)-1] == '/' || lxc_is_dir(value))
return do_includedir(value, lxc_conf);
return lxc_config_read(value, lxc_conf, true);
{
__do_free char *valdup = NULL;
- valdup = path_simplify(value);
+ valdup = lxc_path_simplify(value);
if (!valdup)
return -ENOMEM;
return log_error_errno(-ENOMEM, ENOMEM, "Failed to duplicate limit cgroup path");
}
- tmp = path_simplify(cgroup_base_path);
+ tmp = lxc_path_simplify(cgroup_base_path);
if (!tmp)
return log_error_errno(-ENOMEM, ENOMEM, "Failed to remove extraneous slashes from \"%s\"", cgroup_base_path);
free_move_ptr(cgroup_base_path, tmp);
return false;
}
- if (mkdir_p(opts->directory, 0700) < 0)
+ if (lxc_mkdir_p(opts->directory, 0700) < 0)
goto fail;
pid = fork();
return ret;
}
-int is_dir(const char *path)
+int lxc_is_dir(const char *path)
{
int ret;
struct stat statbuf;
return move_fd(fd);
}
-bool is_fs_type(const struct statfs *fs, fs_type_magic magic_val)
+bool lxc_is_fs_type(const struct statfs *fs, fs_type_magic magic_val)
{
return (fs->f_type == (fs_type_magic)magic_val);
}
if (ret < 0)
return false;
- return is_fs_type(&sb, magic_val);
+ return lxc_is_fs_type(&sb, magic_val);
}
bool fhas_fs_type(int fd, fs_type_magic magic_val)
if (ret < 0)
return false;
- return is_fs_type(&sb, magic_val);
+ return lxc_is_fs_type(&sb, magic_val);
}
FILE *fopen_cloexec(const char *path, const char *mode)
return f;
}
-int fd_cloexec(int fd, bool cloexec)
+int lxc_fd_cloexec(int fd, bool cloexec)
{
int oflags, nflags;
__hidden extern bool file_exists(const char *f);
__hidden extern int print_to_file(const char *file, const char *content);
-__hidden extern int is_dir(const char *path);
+__hidden extern int lxc_is_dir(const char *path);
__hidden extern int lxc_count_file_lines(const char *fn);
__hidden extern int lxc_make_tmpfile(char *template, bool rm);
typedef __typeof__(((struct statfs *)NULL)->f_type) fs_type_magic;
__hidden extern bool has_fs_type(const char *path, fs_type_magic magic_val);
__hidden extern bool fhas_fs_type(int fd, fs_type_magic magic_val);
-__hidden extern bool is_fs_type(const struct statfs *fs, fs_type_magic magic_val);
+__hidden extern bool lxc_is_fs_type(const struct statfs *fs, fs_type_magic magic_val);
__hidden extern FILE *fopen_cloexec(const char *path, const char *mode);
__hidden extern ssize_t lxc_sendfile_nointr(int out_fd, int in_fd, off_t *offset, size_t count);
__hidden extern char *file_to_buf(const char *path, size_t *length);
{
return __fd_to_fd(from, to) >= 0;
}
-__hidden extern int fd_cloexec(int fd, bool cloexec);
+__hidden extern int lxc_fd_cloexec(int fd, bool cloexec);
__hidden extern int lxc_open_dirfd(const char *dir);
__hidden extern FILE *fdopen_cached(int fd, const char *mode, void **caller_freed_buffer);
__hidden extern FILE *fdopen_at(int dfd, const char *path, const char *mode,
if (fd_dup < 0)
return -errno;
- if (fd_cloexec(fd_dup, true))
+ if (lxc_fd_cloexec(fd_dup, true))
return -errno;
return move_fd(fd_dup);
if (!old_content || old_len != content_len || memcmp(old_content, new_content, content_len) != 0) {
char *path;
- ret = mkdir_p(APPARMOR_CACHE_DIR, 0755);
+ ret = lxc_mkdir_p(APPARMOR_CACHE_DIR, 0755);
if (ret < 0) {
SYSERROR("Error creating AppArmor profile cache directory " APPARMOR_CACHE_DIR);
goto out;
}
path = apparmor_dir(conf->name, lxcpath);
- ret = mkdir_p(path, 0755);
+ ret = lxc_mkdir_p(path, 0755);
if (ret < 0) {
SYSERROR("Error creating AppArmor profile directory: %s", path);
free(path);
i = get_next_index(snappath, c->name);
- if (mkdir_p(snappath, 0755) < 0) {
+ if (lxc_mkdir_p(snappath, 0755) < 0) {
ERROR("Failed to create snapshot directory %s", snappath);
return -1;
}
*/
flags = LXC_CLONE_SNAPSHOT | LXC_CLONE_KEEPMACADDR | LXC_CLONE_KEEPNAME |
LXC_CLONE_KEEPBDEVTYPE | LXC_CLONE_MAYBE_SNAPSHOT;
- if (storage_is_dir(c->lxc_conf)) {
+ if (storage_lxc_is_dir(c->lxc_conf)) {
ERROR("Snapshot of directory-backed container requested");
ERROR("Making a copy-clone. If you do want snapshots, then");
ERROR("please create overlay clone first, snapshot that");
_exit(EXIT_FAILURE);
directory_path = dirname(tmp);
- ret = mkdir_p(directory_path, 0755);
+ ret = lxc_mkdir_p(directory_path, 0755);
if (ret < 0 && errno != EEXIST) {
SYSERROR("Failed to create path \"%s\"", directory_path);
free(tmp);
}
destdirname = dirname(dirdup);
- ret = mkdir_p(destdirname, 0755);
+ ret = lxc_mkdir_p(destdirname, 0755);
if (ret < 0) {
SYSERROR("Failed to create \"%s\"", destdirname);
free(dirdup);
char template[PATH_MAX], path[PATH_MAX];
pid_t pid, init_pid;
struct stat sb;
- bool is_dir;
+ bool lxc_is_dir;
int ret = -1, fd = -EBADF;
if (!c || !c->lxc_conf) {
}
}
- is_dir = (S_ISDIR(sb.st_mode) != 0);
- if (is_dir) {
+ lxc_is_dir = (S_ISDIR(sb.st_mode) != 0);
+ if (lxc_is_dir) {
sret = mkdtemp(template);
if (!sret) {
SYSERROR("Could not create shmounts temporary dir");
if (umount2(template, MNT_DETACH))
SYSWARN("Failed to remove temporary mount \"%s\"", template);
- if (is_dir)
+ if (lxc_is_dir)
(void)rmdir(template);
else
(void)unlink(template);
if (ret < 0)
return NULL;
- ret = mkdir_p(dest, 0755);
+ ret = lxc_mkdir_p(dest, 0755);
if (ret < 0)
return NULL;
free(rundir);
return -1;
}
- ret = mkdir_p(fifo_path, 0755);
+ ret = lxc_mkdir_p(fifo_path, 0755);
if (ret < 0) {
ERROR("Unable to create monitor fifo directory %s", fifo_path);
free(rundir);
}
/* Create directory and (if necessary) its parents. */
-static bool mkdir_parent(const char *root, char *path)
+static bool lxc_mkdir_parent(const char *root, char *path)
{
char *b, orig, *e;
return our_cg;
}
- created = mkdir_parent(it->mountpoint, path);
+ created = lxc_mkdir_parent(it->mountpoint, path);
if (!created) {
free(path);
continue;
}
}
- created = mkdir_parent(v2->mountpoint, path);
+ created = lxc_mkdir_parent(v2->mountpoint, path);
if (!created) {
free(path);
return false;
if (!bdev_dest)
return ret_errno(ENOMEM);
- ret = mkdir_p(dest, 0755);
+ ret = lxc_mkdir_p(dest, 0755);
if (ret < 0)
return log_error_errno(-errno, errno, "Failed to create directory \"%s\"", dest);
return -1;
}
- ret = mkdir_p(bdev->dest, 0755);
+ ret = lxc_mkdir_p(bdev->dest, 0755);
if (ret < 0) {
ERROR("Failed creating directory \"%s\"", bdev->dest);
return -1;
return -1;
}
- ret = mkdir_p(new->dest, 0755);
+ ret = lxc_mkdir_p(new->dest, 0755);
if (ret < 0) {
SYSERROR("Failed to create directory \"%s\"", new->dest);
return -1;
return -1;
}
- ret = mkdir_p(bdev->dest, 0755);
+ ret = lxc_mkdir_p(bdev->dest, 0755);
if (ret < 0) {
SYSERROR("Failed to create directory \"%s\"", bdev->dest);
return -1;
new->dest = must_make_path(lxcpath, cname, "rootfs", NULL);
- ret = mkdir_p(new->dest, 0755);
+ ret = lxc_mkdir_p(new->dest, 0755);
if (ret < 0 && errno != EEXIST) {
SYSERROR("Failed to create directory \"%s\"", new->dest);
return -1;
delta = must_make_path(lxcpath, cname, LXC_OVERLAY_DELTA_PATH, NULL);
- ret = mkdir_p(delta, 0755);
+ ret = lxc_mkdir_p(delta, 0755);
if (ret < 0 && errno != EEXIST)
return log_error_errno(-errno, errno, "Failed to create directory \"%s\"", delta);
*/
work = must_make_path(lxcpath, cname, LXC_OVERLAY_WORK_PATH, NULL);
- ret = mkdir_p(work, 0755);
+ ret = lxc_mkdir_p(work, 0755);
if (ret < 0 && errno != EEXIST)
return log_error_errno(-errno, errno, "Failed to create directory \"%s\"", work);
odelta++;
ndelta = must_make_path(lxcpath, cname, LXC_OVERLAY_DELTA_PATH, NULL);
- ret = mkdir_p(ndelta, 0755);
+ ret = lxc_mkdir_p(ndelta, 0755);
if (ret < 0 && errno != EEXIST)
return log_error_errno(-errno, errno, "Failed to create directory \"%s\"", ndelta);
* further up.).
*/
work = must_make_path(lxcpath, cname, LXC_OVERLAY_WORK_PATH, NULL);
- ret = mkdir_p(work, 0755);
+ ret = lxc_mkdir_p(work, 0755);
if (ret < 0 && errno != EEXIST)
return log_error_errno(-errno, errno, "Failed to create directory \"%s\"", ndelta);
* don't need to record a dependency. If we would restore would
* also fail.
*/
- clean_old_path = path_simplify(oldpath);
+ clean_old_path = lxc_path_simplify(oldpath);
if (!clean_old_path)
return log_error_errno(-ENOMEM, ENOMEM, "Failed to create clean path for \"%s\"", oldpath);
- clean_new_path = path_simplify(lxcpath);
+ clean_new_path = lxc_path_simplify(lxcpath);
if (!clean_new_path)
return log_error_errno(-ENOMEM, ENOMEM, "Failed to create clean path for \"%s\"", lxcpath);
delta = must_make_path(tmp, LXC_OVERLAY_DELTA_PATH, NULL);
- ret = mkdir_p(delta, 0755);
+ ret = lxc_mkdir_p(delta, 0755);
if (ret < 0 && errno != EEXIST)
return log_error_errno(-errno, errno, "Failed to create directory \"%s\"", delta);
if (ret < 0 || (size_t)ret >= len)
return log_error_errno(-EIO, EIO, "Failed to create rootfs path");
- ret = mkdir_p(bdev->dest, 0755);
+ ret = lxc_mkdir_p(bdev->dest, 0755);
if (ret < 0 && errno != EEXIST)
return log_error_errno(-errno, errno, "Failed to create directory \"%s\"", bdev->dest);
upper++;
/* if delta doesn't yet exist, create it */
- ret = mkdir_p(upper, 0755);
+ ret = lxc_mkdir_p(upper, 0755);
if (ret < 0 && errno != EEXIST) {
SYSERROR("Failed to create directory \"%s\"", upper);
free(dup);
return -22;
}
- ret = mkdir_p(work, 0755);
+ ret = lxc_mkdir_p(work, 0755);
if (ret < 0 && errno != EEXIST) {
SYSERROR("Failed to create directory \"%s\"", work);
free(mntdata);
ret = 0;
if (upperdir) {
if (!rootfs_path)
- ret = mkdir_p(upperdir, 0755);
+ ret = lxc_mkdir_p(upperdir, 0755);
else if (!strncmp(upperdir, lxcpath, dirlen) &&
strncmp(upperdir, rootfs_dir, rootfslen))
- ret = mkdir_p(upperdir, 0755);
+ ret = lxc_mkdir_p(upperdir, 0755);
if (ret < 0)
SYSWARN("Failed to create directory \"%s\"", upperdir);
ret = 0;
if (workdir) {
if (!rootfs_path)
- ret = mkdir_p(workdir, 0755);
+ ret = lxc_mkdir_p(workdir, 0755);
else if (!strncmp(workdir, lxcpath, dirlen) &&
strncmp(workdir, rootfs_dir, rootfslen))
- ret = mkdir_p(workdir, 0755);
+ ret = lxc_mkdir_p(workdir, 0755);
if (ret < 0)
SYSWARN("Failed to create directory \"%s\"", workdir);
return -1;
}
- ret = mkdir_p(bdev->dest, 0755);
+ ret = lxc_mkdir_p(bdev->dest, 0755);
if (ret < 0 && errno != EEXIST) {
ERROR("Failed to create directory \"%s\"", bdev->dest);
return -1;
ret = stat(orig->dest, &sb);
if (ret < 0 && errno == ENOENT) {
- ret = mkdir_p(orig->dest, 0755);
+ ret = lxc_mkdir_p(orig->dest, 0755);
if (ret < 0)
WARN("Failed to create directory \"%s\"", orig->dest);
}
return bdev;
}
-bool storage_is_dir(struct lxc_conf *conf)
+bool storage_lxc_is_dir(struct lxc_conf *conf)
{
struct lxc_storage *orig;
char *type = conf->rootfs.bdev_type;
};
/**
- * storage_is_dir : Check whether the roots is a directory. This function will
+ * storage_lxc_is_dir : Check whether the roots is a directory. This function will
* trust the config file. If the config file key
* lxc.rootfs.path is set to <storage type>:<container path>
* the confile parser will have split this into <storage type>
* type specifications. If the <storage type> prefix is not
* detected liblxc will try to detect the storage type.
*/
-__hidden extern bool storage_is_dir(struct lxc_conf *conf);
+__hidden extern bool storage_lxc_is_dir(struct lxc_conf *conf);
__hidden extern bool storage_can_backup(struct lxc_conf *conf);
__hidden extern struct lxc_storage *storage_init(struct lxc_conf *conf);
__hidden extern struct lxc_storage *storage_copy(struct lxc_container *c, const char *cname,
TRACE("Created zfs dataset \"%s\"", new->src);
}
- ret = mkdir_p(new->dest, 0755);
+ ret = lxc_mkdir_p(new->dest, 0755);
if (ret < 0 && errno != EEXIST) {
SYSERROR("Failed to create directory \"%s\"", new->dest);
return false;
return -1;
}
- ret = mkdir_p(new->dest, 0755);
+ ret = lxc_mkdir_p(new->dest, 0755);
if (ret < 0 && errno != EEXIST) {
SYSERROR("Failed to create directory \"%s\"", new->dest);
return -1;
TRACE("Created zfs dataset \"%s\"", bdev->src);
}
- ret = mkdir_p(bdev->dest, 0755);
+ ret = lxc_mkdir_p(bdev->dest, 0755);
if (ret < 0 && errno != EEXIST) {
SYSERROR("Failed to create directory \"%s\"", bdev->dest);
return -1;
}
/* taken from systemd */
-char *path_simplify(const char *path)
+char *lxc_path_simplify(const char *path)
{
__do_free char *path_new = NULL;
char *f, *t;
(__iterator = __it); \
__iterator = __it = strtok_r(NULL, __separators, &__p))
-__hidden extern char *path_simplify(const char *path);
+__hidden extern char *lxc_path_simplify(const char *path);
#endif /* __LXC_STRING_UTILS_H */
goto on_error;
}
- ret = fd_cloexec(terminal->proxy.ptx, true);
+ ret = lxc_fd_cloexec(terminal->proxy.ptx, true);
if (ret < 0) {
SYSERROR("Failed to set FD_CLOEXEC flag on proxy terminal ptx");
goto on_error;
}
- ret = fd_cloexec(terminal->proxy.pty, true);
+ ret = lxc_fd_cloexec(terminal->proxy.pty, true);
if (ret < 0) {
SYSERROR("Failed to set FD_CLOEXEC flag on proxy terminal pty");
goto on_error;
goto err;
}
- ret = fd_cloexec(terminal->ptx, true);
+ ret = lxc_fd_cloexec(terminal->ptx, true);
if (ret < 0) {
SYSERROR("Failed to set FD_CLOEXEC flag on terminal ptx");
goto err;
}
- ret = fd_cloexec(terminal->pty, true);
+ ret = lxc_fd_cloexec(terminal->pty, true);
if (ret < 0) {
SYSERROR("Failed to set FD_CLOEXEC flag on terminal pty");
goto err;
goto err;
} else if (m->mnt_type == LXC_MNT_BIND) {
len = strlen(" none bind,optional,, 0 0") +
- strlen(is_dir(m->src) ? "create=dir" : "create=file") +
+ strlen(lxc_is_dir(m->src) ? "create=dir" : "create=file") +
strlen(m->src) + strlen(m->dest) + strlen(m->options) + 1;
mntentry = malloc(len);
ret = snprintf(mntentry, len, "%s %s none bind,optional,%s,%s 0 0",
m->src, m->dest, m->options,
- is_dir(m->src) ? "create=dir" : "create=file");
+ lxc_is_dir(m->src) ? "create=dir" : "create=file");
if (ret < 0 || (size_t)ret >= len)
goto err;
}
if (!my_args.lxcpath[0])
my_args.lxcpath[0] = lxc_get_global_config_item("lxc.lxcpath");
- if (mkdir_p(my_args.lxcpath[0], 0755))
+ if (lxc_mkdir_p(my_args.lxcpath[0], 0755))
exit(EXIT_FAILURE);
if (geteuid())
return 0;
}
-int mkdir_p(const char *dir, mode_t mode)
+int lxc_mkdir_p(const char *dir, mode_t mode)
{
const char *tmp = dir;
const char *orig = dir;
if (dupfd < 0)
return -1;
- if (fd_cloexec(dupfd, true) < 0)
+ if (lxc_fd_cloexec(dupfd, true) < 0)
return -1;
f = fdopen(dupfd, "re");
/* returns 1 on success, 0 if there were any failures */
__hidden extern int lxc_rmdir_onedev(const char *path, const char *exclude);
__hidden extern int get_u16(unsigned short *val, const char *arg, int base);
-__hidden extern int mkdir_p(const char *dir, mode_t mode);
+__hidden extern int lxc_mkdir_p(const char *dir, mode_t mode);
__hidden extern char *get_rundir(void);
/* Define getline() if missing from the C library */
#include "macro.h"
#include "utils.h"
-void test_path_simplify(void)
+void test_lxc_path_simplify(void)
{
char *s = "/A///B//C/D/E/";
char *t;
- t = path_simplify(s);
+ t = lxc_path_simplify(s);
if (!t)
exit(EXIT_FAILURE);
s = "/A";
- t = path_simplify(s);
+ t = lxc_path_simplify(s);
if (!t)
exit(EXIT_FAILURE);
free(t);
s = "";
- t = path_simplify(s);
+ t = lxc_path_simplify(s);
if (!t)
exit(EXIT_FAILURE);
s = "//";
- t = path_simplify(s);
+ t = lxc_path_simplify(s);
if (!t)
exit(EXIT_FAILURE);
{
test_lxc_string_replace();
test_lxc_string_in_array();
- test_path_simplify();
+ test_lxc_path_simplify();
test_detect_ramfs_rootfs();
test_lxc_safe_uint();
test_lxc_safe_int();
{
int ret;
- ret = mkdir_p(shmount_path, 0711);
+ ret = lxc_mkdir_p(shmount_path, 0711);
if (ret < 0 && errno != EEXIST) {
fprintf(stderr, "Failed to create directory \"%s\"\n", shmount_path);
return false;