#define SCPYN(a, b) strncpy(a, b, sizeof(a))
char maildir
[30] = "/usr/spool/mail/";
struct passwd nouser
= {"", "nope"};
char homedir
[64] = "HOME=";
char *envinit
[] = {homedir
, "PATH=:/bin:/usr/bin", 0};
struct passwd
*getpwnam();
signal(SIGQUIT
, SIG_IGN
);
SCPYN(utmp
.ut_name
, argv
[1]);
while (utmp
.ut_name
[0] == '\0') {
while ((c
= getchar()) != '\n') {
if (namep
< utmp
.ut_name
+8)
if ((pwd
= getpwnam(utmp
.ut_name
)) == NULL
)
if (*pwd
->pw_passwd
!= '\0') {
namep
= crypt(getpass("Password:"),pwd
->pw_passwd
);
if (strcmp(namep
, pwd
->pw_passwd
)) {
printf("Login incorrect\n");
if(chdir(pwd
->pw_dir
) < 0) {
printf("No directory\n");
if (t
>0 && (f
= open("/etc/utmp", 1)) >= 0) {
lseek(f
, (long)(t
*sizeof(utmp
)), 0);
SCPYN(utmp
.ut_line
, rindex(ttyn
, '/')+1);
write(f
, (char *)&utmp
, sizeof(utmp
));
if (t
>0 && (f
= open("/usr/adm/wtmp", 1)) >= 0) {
write(f
, (char *)&utmp
, sizeof(utmp
));
chown(ttyn
, pwd
->pw_uid
, pwd
->pw_gid
);
if (*pwd
->pw_shell
== '\0')
pwd
->pw_shell
= "/bin/sh";
strncat(homedir
, pwd
->pw_dir
, sizeof(homedir
)-6);
if ((namep
= rindex(pwd
->pw_shell
, '/')) == NULL
)
strcat(maildir
, pwd
->pw_name
);
if(access(maildir
,4)==0) {
printf("You have mail.\n");
signal(SIGQUIT
, SIG_DFL
);
execlp(pwd
->pw_shell
, minusnam
, 0);
if((mf
= fopen("/etc/motd","r")) != NULL
) {
while((c
= getc(mf
)) != EOF
&& stopmotd
== 0)