confile: parse storage type

Split lxc.rootfs.path = <storage type>:<container path> into <storage-type> and <container path> to set the storage type and rootfs path value correctly. Signed-off-by: 's avatarChristian Brauner <christian.brauner@ubuntu.com> Signed-off-by: 's avatarAdrian Reber <areber@redhat.com>
parent ea7f6b29
...@@ -1962,7 +1962,41 @@ static int set_config_includefiles(const char *key, const char *value, ...@@ -1962,7 +1962,41 @@ static int set_config_includefiles(const char *key, const char *value,
static int set_config_rootfs_path(const char *key, const char *value, static int set_config_rootfs_path(const char *key, const char *value,
struct lxc_conf *lxc_conf, void *data) struct lxc_conf *lxc_conf, void *data)
{ {
return set_config_path_item(&lxc_conf->rootfs.path, value); int ret;
char *dup, *tmp;
const char *container_path;
if (lxc_config_value_empty(value)) {
free(lxc_conf->rootfs.path);
lxc_conf->rootfs.path = NULL;
return 0;
}
dup = strdup(value);
if (!dup)
return -1;
/* Split <storage type>:<container path> into <storage type> and
* <container path>. Set "rootfs.bdev_type" to <storage type> and
* "rootfs.path" to <container path>.
*/
tmp = strchr(dup, ':');
if (tmp) {
*tmp = '\0';
ret = set_config_path_item(&lxc_conf->rootfs.bdev_type, dup);
if (ret < 0) {
free(dup);
return -1;
}
tmp++;
container_path = tmp;
} else {
container_path = value;
}
ret = set_config_path_item(&lxc_conf->rootfs.path, container_path);
free(dup);
return ret;
} }
static int set_config_rootfs_mount(const char *key, const char *value, static int set_config_rootfs_mount(const char *key, const char *value,
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment