+ if (fulllogin) {
+ cleanenv[4] = getenv("TERM");
+ environ = cleanenv;
+ }
+ if (strcmp(user, "root"))
+ setenv("USER", pwd->pw_name, userbuf);
+ setenv("SHELL", shell, shellbuf);
+ setenv("HOME", pwd->pw_dir, homebuf);
+ setpriority(PRIO_PROCESS, 0, 0);
+ if (fastlogin) {
+ *argv-- = "-f";
+ *argv = "su";
+ } else if (fulllogin) {
+ if (chdir(pwd->pw_dir) < 0) {
+ fprintf(stderr, "No directory\n");
+ exit(6);
+ }
+ *argv = "-su";
+ } else
+ *argv = "su";
+ execv(shell, argv);
+ fprintf(stderr, "No shell\n");
+ exit(7);