From 1a57451434b9941ea5497dba9017b715826608fd Mon Sep 17 00:00:00 2001 From: Mattias Andrée Date: Mon, 18 Nov 2013 22:28:51 +0100 Subject: m MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Mattias Andrée --- src/cerberus.c | 68 +++------------------------------------------------------- 1 file changed, 3 insertions(+), 65 deletions(-) (limited to 'src/cerberus.c') diff --git a/src/cerberus.c b/src/cerberus.c index 49e9857..807db40 100644 --- a/src/cerberus.c +++ b/src/cerberus.c @@ -24,11 +24,6 @@ #endif -/** - * The environment variables - */ -extern char** environ; - /** * Mane method * @@ -188,66 +183,9 @@ int main(int argc, char** argv) /* TODO login */ - - /* Change directory */ - if (chdir(entry->pw_dir)) - { - perror("chdir"); - if (chdir(DEFAULT_HOME)) - { - perror("chdir"); - sleep(ERROR_SLEEP); - return 1; - } - entry->pw_dir = DEFAULT_HOME; - } - - /* Make sure the shell to use is definied */ - if ((entry->pw_shell && *(entry->pw_shell)) == 0) - entry->pw_shell = DEFAULT_SHELL; - - /* Set environment variables */ - { - char* _term = getenv("TERM"); - char* term = NULL; - if (_term) - { - int n = 0, i; - while (*(_term + n++)) - ; - term = malloc(n * sizeof(char)); - if (term == NULL) - { - perror("malloc"); - sleep(ERROR_SLEEP); - return 1; - } - for (i = 0; i < n; i++) - *(term + i) = *(_term + i); - } - - if (preserve_env == 0) - { - environ = malloc(sizeof(char*)); - if (environ == NULL) - { - perror("malloc"); - sleep(ERROR_SLEEP); - return 1; - } - *environ = NULL; - } - - setenv("HOME", entry->pw_dir, 1); - setenv("USER", entry->pw_name, 1); - setenv("LOGUSER", entry->pw_name, 1); - setenv("SHELL", entry->pw_shell, 1); - setenv("TERM", term ?: DEFAULT_TERM, 1); - setenv("PATH", entry->pw_uid ? PATH : PATH_ROOT, 1); - - if (term) - free(term); - } + chdir_home(entry); + ensure_shell(entry); + set_environ(entry, preserve_env); /* Reset terminal ownership and mode */ -- cgit v1.2.3-70-g09d2