OrionUserland
Barry Using POSIX names in structs 2e11092 (3 years, 3 months ago)
diff --git a/login/main.c b/login/main.c
index d1bfd55..292901a 100644
--- a/login/main.c
+++ b/login/main.c
@@ -34,7 +34,7 @@ main(int argc, char *argv[])
if (sz < 1)
continue;
- pwd = getpwname(input);
+ pwd = getpwnam(input);
if (!pwd)
continue;
@@ -42,7 +42,7 @@ main(int argc, char *argv[])
memset(input, 0, 1024);
ioctl(STDIN_FILENO, TCGETS, &tcold);
memcpy(&tcnew, &tcold, sizeof(Termios));
- tcnew.lflag &= ~ECHO;
+ tcnew.c_lflag &= ~ECHO;
ioctl(STDIN_FILENO, TCSETS, &tcnew);
#ifdef MANUAL_LOGIN
sz = read(STDIN_FILENO, input, 1024);
@@ -56,19 +56,20 @@ main(int argc, char *argv[])
continue;
ioctl(STDIN_FILENO, TCSETS, &tcold);
- if (!strcmp(input, pwd->password))
+ if (!strcmp(input, pwd->pw_passwd))
break;
printf("Login incorrect\n");
}
printf("\n");
dbgprintf("Authenticating \"%s\" (%d:%d) -> \"%s\" @ \"%s\"",
- pwd->username, pwd->uid, pwd->gid, pwd->shell, pwd->homedir);
- chdir(pwd->homedir);
- setuid(pwd->uid);
- setgid(pwd->gid);
+ pwd->pw_name, pwd->pw_uid, pwd->pw_gid, pwd->pw_shell,
+ pwd->pw_dir);
+ chdir(pwd->pw_dir);
+ setuid(pwd->pw_uid);
+ setgid(pwd->pw_gid);
char *v[] = { "sh", NULL };
- execve(pwd->shell, v, NULL);
+ execve(pwd->pw_shell, v, NULL);
return 0;
}