From 70f55bfd4fa163c16d6147317fd7d00442cca6dc Mon Sep 17 00:00:00 2001 From: Nicolas Cornu Date: Sun, 16 Aug 2015 00:52:44 +0200 Subject: [PATCH] Split handle of lxc.mount* with 3 functions Signed-off-by: Nicolas Cornu --- src/lxc/confile.c | 36 ++++++------------------------------ 1 file changed, 6 insertions(+), 30 deletions(-) diff --git a/src/lxc/confile.c b/src/lxc/confile.c index b045689d5..5599f53c7 100644 --- a/src/lxc/confile.c +++ b/src/lxc/confile.c @@ -67,6 +67,8 @@ static int config_idmap(const char *, const char *, struct lxc_conf *); static int config_loglevel(const char *, const char *, struct lxc_conf *); static int config_logfile(const char *, const char *, struct lxc_conf *); static int config_mount(const char *, const char *, struct lxc_conf *); +static int config_mount_auto(const char *, const char *, struct lxc_conf *); +static int config_fstab(const char *, const char *, struct lxc_conf *); static int config_rootfs(const char *, const char *, struct lxc_conf *); static int config_rootfs_mount(const char *, const char *, struct lxc_conf *); static int config_rootfs_options(const char *, const char *, struct lxc_conf *); @@ -119,7 +121,9 @@ static struct lxc_config_t config[] = { { "lxc.id_map", config_idmap }, { "lxc.loglevel", config_loglevel }, { "lxc.logfile", config_logfile }, - { "lxc.mount", config_mount }, + { "lxc.mount.entry", config_mount }, + { "lxc.mount.auto", config_mount_auto }, + { "lxc.mount", config_fstab }, { "lxc.rootfs.mount", config_rootfs_mount }, { "lxc.rootfs.options", config_rootfs_options }, { "lxc.rootfs", config_rootfs }, @@ -1507,7 +1511,7 @@ static int config_mount_auto(const char *key, const char *value, { "cgroup-full:mixed", LXC_AUTO_CGROUP_MASK, LXC_AUTO_CGROUP_FULL_MIXED }, { "cgroup-full:ro", LXC_AUTO_CGROUP_MASK, LXC_AUTO_CGROUP_FULL_RO }, { "cgroup-full:rw", LXC_AUTO_CGROUP_MASK, LXC_AUTO_CGROUP_FULL_RW }, - /* NB: For adding anything that ist just a single on/off, but has + /* NB: For adding anything that is just a single on/off, but has * no options: keep mask and flag identical and just define the * enum value as an unused bit so far */ @@ -1553,40 +1557,12 @@ static int config_mount_auto(const char *key, const char *value, return ret; } -/* - * TODO - * This fn is handling lxc.mount, lxc.mount.entry, and lxc.mount.auto. - * It should probably be split into 3 separate functions indexed by - * the config[] entries at top. - */ static int config_mount(const char *key, const char *value, struct lxc_conf *lxc_conf) { - char *fstab_token = "lxc.mount"; - char *token = "lxc.mount.entry"; - char *auto_token = "lxc.mount.auto"; - char *subkey; char *mntelem; struct lxc_list *mntlist; - subkey = strstr(key, token); - - if (!subkey) { - subkey = strstr(key, auto_token); - - if (!subkey) { - subkey = strstr(key, fstab_token); - - if (!subkey) - return -1; - - return config_fstab(key, value, lxc_conf); - } - - return config_mount_auto(key, value, lxc_conf); - } - - /* At this point we definitely have key = lxc.mount.entry */ if (!value || strlen(value) == 0) return lxc_clear_mount_entries(lxc_conf);