char *p;
int count;
time_t now;
- char *tty;
#if (LOGGING & SLOG_FILE)
FILE *fp;
#endif /* LOGGING & SLOG_FILE */
char *tmp, save;
#endif /* LOGGING & SLOG_SYSLOG */
- /*
- * Get our ttyname or set to "none"
- */
- if ((tty = (char *) ttyname(0)) == NULL)
- tty = (char *) ttyname(1);
-
- if (tty && (p = strrchr(tty, '/')))
- tty = p + 1;
- else
- tty = "none";
-
/*
* Allocate enough memory for logline so we won't overflow it
* XXX - don't use 33, use a macro!
char *cmnd = NULL;
char *cmnd_args = NULL;
char *user = NULL;
+char *tty = NULL;
char *epasswd = NULL;
char *prompt = PASSPROMPT;
char *shell = NULL;
(void) tzset(); /* set the timezone if applicable */
#endif /* HAVE_TZSET */
+ /*
+ * Need to get tty early since it's used for logging
+ */
+ if ((tty = (char *) ttyname(0)) || (tty = (char *) ttyname(0))) {
+ if ((p = strrchr(tty, '/')))
+ tty = p + 1;
+ if ((tty = strdup(tty)) == NULL) {
+ perror("malloc");
+ (void) fprintf(stderr, "%s: cannot allocate memory!\n", Argv[0]);
+ exit(1);
+ }
+ } else
+ tty = "none";
+
/*
* loading the user & epasswd global variable from the passwd file
* (must be done as root to get real passwd on some systems)