+ sprintf(user, "USER=%.*s", NMAX, pwd->pw_name);
+#ifdef ERNIE
+ if (pwd->pw_uid == 0 && ttyn[5] != 'c')
+ goto bad;
+#endif
+ if (ttyn[LMAX] == 'd') {
+ FILE *console = fopen("/dev/console", "w");
+ if (console != NULL) {
+ fprintf(console, "\r\nDIALUP %s %s\r\n", ttyn+5, pwd->pw_name);
+ fclose(console);
+ }
+ }
+ if((f = open(lastlog, 2)) >= 0) {
+ struct lastlog ll;
+
+ lseek(f, (long) pwd->pw_uid * sizeof (struct lastlog), 0);
+ if (read(f, (char *) &ll, sizeof ll) == sizeof ll && ll.ll_time != 0) {
+ register char *ep = (char *) ctime(&ll.ll_time);
+ printf("Last login: ");
+ ep[24 - 5] = 0;
+ printf("%s on %.*s\n", ep, LMAX, ll.ll_line);
+ }
+ lseek(f, (long) pwd->pw_uid * sizeof (struct lastlog), 0);
+ time(&ll.ll_time);
+ strcpyn(ll.ll_line, ttyn+5, LMAX);
+ write(f, (char *) &ll, sizeof ll);
+ close(f);
+ }