From: Daniel Lezcano Date: Fri, 9 Oct 2009 09:38:39 +0000 (+0200) Subject: fix tty creation using confdir X-Git-Tag: lxc_0_6_4~55 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=5e4a62bf32e60af0ad9e686006d28f59db64d807;p=thirdparty%2Flxc.git fix tty creation using confdir tty_create uses the old conf directory, fixing this. Signed-off-by: Daniel Lezcano --- diff --git a/src/lxc/conf.c b/src/lxc/conf.c index 0fb3c32ac..725d8e160 100644 --- a/src/lxc/conf.c +++ b/src/lxc/conf.c @@ -107,32 +107,6 @@ static struct mount_opt mount_opt[] = { { NULL, 0, 0 }, }; -static int read_info(const char *path, const char *file, char *info, size_t len) -{ - int fd, ret = -1; - char f[MAXPATHLEN], *token; - - snprintf(f, MAXPATHLEN, "%s/%s", path, file); - fd = open(f, O_RDONLY); - if (fd < 0) { - if (errno == ENOENT) - ret = 1; - goto out; - } - - ret = read(fd, info, len); - if (ret < 0) - goto out; - - token = strstr(info, "\n"); - if (token) - *token = '\0'; - ret = 0; -out: - close(fd); - return ret; -} - static int delete_info(const char *path, const char *file) { char info[MAXPATHLEN]; @@ -1152,25 +1126,16 @@ int lxc_assign_network(struct lxc_list *network, pid_t pid) return 0; } -int lxc_create_tty(const char *name, struct lxc_tty_info *tty_info) +int lxc_create_tty(const char *name, struct lxc_conf *conf) { - char path[MAXPATHLEN]; - char tty[4]; + struct lxc_tty_info *tty_info = &conf->tty_info; int i, ret = -1; - tty_info->nbtty = 0; - - if (!conf_has_tty(name)) + /* no tty in the configuration */ + if (!conf->tty) return 0; - snprintf(path, MAXPATHLEN, LXCPATH "/%s", name); - - if (read_info(path, "tty", tty, sizeof(tty)) < 0) { - SYSERROR("failed to read tty info"); - goto out; - } - - tty_info->nbtty = atoi(tty); + tty_info->nbtty = conf->tty; tty_info->pty_info = malloc(sizeof(*tty_info->pty_info)*tty_info->nbtty); diff --git a/src/lxc/conf.h b/src/lxc/conf.h index 57964bbcf..f72e5f5d4 100644 --- a/src/lxc/conf.h +++ b/src/lxc/conf.h @@ -159,7 +159,7 @@ extern int lxc_unconfigure(const char *name); extern int lxc_create_network(struct lxc_list *networks); extern int lxc_assign_network(struct lxc_list *networks, pid_t pid); -extern int lxc_create_tty(const char *name, struct lxc_tty_info *tty_info); +extern int lxc_create_tty(const char *name, struct lxc_conf *conf); extern void lxc_delete_tty(struct lxc_tty_info *tty_info); /* diff --git a/src/lxc/start.c b/src/lxc/start.c index aaeda55be..42745bc85 100644 --- a/src/lxc/start.c +++ b/src/lxc/start.c @@ -276,7 +276,7 @@ struct lxc_handler *lxc_init(const char *name) goto out_aborting; } - if (lxc_create_tty(name, &handler->conf.tty_info)) { + if (lxc_create_tty(name, &handler->conf)) { ERROR("failed to create the ttys"); goto out_aborting; }