1 diff -Nur getty_ps-2.0.7j/Makefile getty_ps-2.0.7j.pld/Makefile
2 --- getty_ps-2.0.7j/Makefile Tue Jan 23 17:07:04 1996
3 +++ getty_ps-2.0.7j.pld/Makefile Thu Jun 10 16:34:45 1999
5 # be expected in /etc/conf.* rather than /etc/default, modem locks
6 # will be created in /var/lock, and binaries will go in /sbin.
14 #CFLAGS= -g -fpcc-struct-return ${FSSTND}
16 -CFLAGS= -O3 -fomit-frame-pointer -fpcc-struct-return ${FSSTND}
17 +CFLAGS= $(OPT) -fpcc-struct-return ${FSSTND}
28 +UUBIN= $(TOPDIR)/sbin
29 +MANDIR= $(TOPDIR)/usr/share/man/man
32 SRC= main.c funcs.c defaults.c table.c utmp2.c
35 -mv $(BIN)/getty $(BIN)/getty-
36 -mv $(UUBIN)/uugetty $(UUBIN)/uugetty-
38 - -cp uugetty $(UUBIN)
39 - chmod 700 $(BIN)/getty $(UUBIN)/uugetty
40 + -install -s -m 0755 getty $(BIN)
41 + -install -s -m 0755 uugetty $(UUBIN)
43 + mv man/getty.1 man/getty.1x
45 + sed -e 's,/etc/default/,/etc/conf.,g'> man/getty.1
47 + install -m 644 man/getty.1 $(MANDIR)1
48 + install -m 644 man/gettydefs.5 $(MANDIR)5
51 rm -f *.o core *.out *~ .depend Make.Log Makefile.old
52 diff -Nur getty_ps-2.0.7j/config.h getty_ps-2.0.7j.pld/config.h
53 --- getty_ps-2.0.7j/config.h Sat May 21 07:11:24 1994
54 +++ getty_ps-2.0.7j.pld/config.h Thu Jun 10 16:30:28 1999
56 #define index strchr /* use these instead */
57 #define rindex strrchr
60 +/*typedef void sig_t;*/
63 -#define UTMP_FILE "/etc/utmp" /* name of the utmp file */
64 +#define UTMP_FILE "/var/run/utmpx" /* name of the utmp file */
65 #endif /* UTMP_FILE */
68 -#define WTMP_FILE "/var/adm/wtmp" /* FSSTND compliant wtmp file */
69 +#define WTMP_FILE "/var/log/wtmpx" /* FSSTND compliant wtmp file */
70 #endif /* WTMP_FILE */
75 #define ASCIIPID /* PID stored in ASCII */
76 #define BOTHPID /* ... or perhaps not */
77 -#define UUCPID 11 /* uid of UUCP account */
78 -#define LOCK "/usr/spool/uucp/LCK..%s" /* lock file name */
79 +#define UUCPID "uucp" /* uid of UUCP account */
80 +#define LOCK "/var/lock/LCK..%s" /* lock file name */
84 diff -Nur getty_ps-2.0.7j/extern.h getty_ps-2.0.7j.pld/extern.h
85 --- getty_ps-2.0.7j/extern.h Tue May 17 05:38:52 1994
86 +++ getty_ps-2.0.7j.pld/extern.h Thu Jun 10 16:30:28 1999
92 EXTERN char MsgBuf[80]; /* message buffer */
94 -EXTERN char MsgBuf[];
97 EXTERN boolean AutoBaud; /* autobauding requested? */
98 EXTERN char AutoRate[16]; /* AutoBaud digits buffer */
99 EXTERN boolean Check; /* check a gettytab file? */
101 extern unsigned alarm(), sleep();
102 extern time_t time();
105 -#ifndef STRDUP /* Is There In Truth No Strdup() ? */
106 -extern char *strdup();
109 #ifndef GETUTENT /* How about getutent() ? */
110 extern struct utmp *getutent();
111 diff -Nur getty_ps-2.0.7j/funcs.c getty_ps-2.0.7j.pld/funcs.c
112 --- getty_ps-2.0.7j/funcs.c Tue May 17 09:33:36 1994
113 +++ getty_ps-2.0.7j.pld/funcs.c Thu Jun 10 16:30:28 1999
115 char c, n, tbuf[16], ubuf[32];
117 struct tm *lt, *localtime();
118 - char *month_name[] = { "January", "February", "March", "April",
119 +static char *month_name[] = { "January", "February", "March", "April",
120 "May", "June", "July", "August", "September",
121 "October", "November", "December" };
125 /* set c_cc[] chars to reasonable values
127 +#ifdef _POSIX_VDISABLE
128 +#if _POSIX_VDISABLE != -1
129 for (i=0; i < NCC; i++)
130 - setterm.c_cc[i] = CNUL;
131 + setterm.c_cc[i] = _POSIX_VDISABLE;
133 + for (i=0; i < NCC; i++)
134 + setterm.c_cc[i] = 0;
137 setterm.c_cc[VINTR] = Cintr;
138 setterm.c_cc[VQUIT] = CQUIT;
139 setterm.c_cc[VERASE] = Cerase;
143 while ((ch = *s++)) {
147 case 'p': /* '\p' == pause */
148 @@ -424,20 +432,22 @@
152 - sprintf(MsgBuf + strlen(MsgBuf), ch < ' ' ? "^%c" : "%c",
153 + /* check if we have enough room for Msg */
154 + if ((i=strlen(MsgBuf))>sizeof(MsgBuf)-3) {
155 + debug(D_INIT, MsgBuf);
156 + MsgBuf[i=0] = '\0';
158 + sprintf(MsgBuf + i, ch < ' ' ? "^%c" : "%c",
159 ch < ' ' ? ch | 0100 : ch);
160 if (putc(ch, stdout) == EOF) {
165 - strcat(MsgBuf, ") -- ");
166 if(retval == SUCCESS)
167 - strcat(MsgBuf, "OK");
168 + debug(D_INIT, "%s) -- OK", MsgBuf);
170 - sprintf(MsgBuf + strlen(MsgBuf),
171 - "Failed: %s", strerror(errno));
172 - debug(D_INIT, MsgBuf);
173 + debug(D_INIT, "%s) -- Failed: %s", MsgBuf, strerror(errno));
178 register int expfail = EXPFAIL;
179 register retval = FAIL;
180 char ch, *p, word[MAXLINE+1], buf[MAXBUF];
181 - sig_t (*oldalarm)() = NULL;
182 + sig_t oldalarm = NULL;
184 if (strequal(s, "\"\"")) { /* ("") used as a place holder */
185 debug(D_INIT, "EXPECT: ([nothing])");
188 /* look for escape chars in expected word
190 - for (p = word; (ch = (*s++ & 0177));) {
191 + for (p = word; (ch = (*s++ & 0177)) && p<&word[MAXLINE+1];) {
193 if (*s == 'A') { /* spot for AutoBaud digits */
195 @@ -495,12 +505,24 @@
196 oldalarm = signal(SIGALRM, expalarm);
197 (void) alarm((unsigned) expfail);
199 - sprintf(MsgBuf, "EXPECT: <%d> (%s), GOT: ", expfail, dprint(word));
200 + debug(D_INIT, "EXPECT: <%d> (%s)", expfail, dprint(word));
204 while ((ch = getc(stdin)) != EOF) {
205 - sprintf(MsgBuf + strlen(MsgBuf), ch < ' ' ? "^%c" : "%c",
206 + /* check if we have enough room for Msg */
207 + if ((i=strlen(MsgBuf))>sizeof(MsgBuf)-3) {
208 + debug(D_INIT, "GOT: %s", MsgBuf);
209 + MsgBuf[i=0] = '\0';
211 + sprintf(MsgBuf + i, ch < ' ' ? "^%c" : "%c",
212 ch < ' ' ? ch | 0100 : ch);
213 + /* check if we have enough room */
214 + if (p==&buf[MAXBUF]) {
215 + /* oops, move back HALF the buffer */
216 + p = &buf[MAXBUF/2];
219 *p++ = (char) ((int) ch & 0177);
221 if (strlen(buf) >= strlen(word)) {
224 (void) alarm((unsigned) 0);
225 (void) signal(SIGALRM, oldalarm);
226 - debug(D_INIT, "%s -- %s", MsgBuf,
227 + debug(D_INIT, "GOT: %s -- %s", MsgBuf,
228 (retval == SUCCESS) ? "got it" : "Failed");
232 ** expalarm() - called when expect()'s SIGALRM goes off
237 +sig_t expalarm(int sig)
245 - (void) fputs((Erase == '\010' ?
246 + (void) fputs((Erase == '\b' ?
247 " \b" : "\b \b"), stdout);
248 (void) fflush(stdout);
250 @@ -814,10 +835,14 @@
253 static char msg[1024];
258 while ((ch = *p++)) {
259 + /* is the buffer big enough */
260 + if ((i=strlen(msg)) > sizeof(msg)-7)
263 strcat(msg, "[speed]");
269 - sprintf(msg + strlen(msg), fmt, ch);
270 + sprintf(msg + i, fmt, ch);
274 Binary files getty_ps-2.0.7j/getty and getty_ps-2.0.7j.pld/getty differ
275 diff -Nur getty_ps-2.0.7j/getty.h getty_ps-2.0.7j.pld/getty.h
276 --- getty_ps-2.0.7j/getty.h Tue May 17 05:39:06 1994
277 +++ getty_ps-2.0.7j.pld/getty.h Thu Jun 10 16:30:28 1999
282 -#include "mytermio.h" /* SMR - gcc was missing a few definitions */
284 /* General purpose defines
286 diff -Nur getty_ps-2.0.7j/main.c getty_ps-2.0.7j.pld/main.c
287 --- getty_ps-2.0.7j/main.c Fri Apr 26 19:26:03 1996
288 +++ getty_ps-2.0.7j.pld/main.c Thu Jun 10 16:30:28 1999
291 struct sigaction act;
293 + memset(&act, 0, sizeof(struct sigaction));
294 act.sa_handler = action;
296 + sigemptyset(&act.sa_mask);
297 act.sa_flags = SA_NOMASK; /* allow own signal to be received */
298 if(sigaction(SIGALRM, &act, NULL)) /* called by pause() */
301 (void) signal(SIGTERM, sterm);
302 (void) signal(SIGSEGV, ssegv);
303 (void) signal(SIGHUP, shangup);
304 - (void) signal(SIGPIPE, SIG_IGN);
305 + (void) signal(SIGPIPE, SIG_DFL);
307 strcpy(term, "unknown"); /* tty type */
308 Device = "unknown"; /* tty device */
310 delay = 0; /* delay before prompt */
311 speed = (char *) NULL;
312 clear = TRUE; /* clear the screen */
313 - login = LOGIN; /* login program */
314 + loginprog = LOGIN; /* login program */
315 waitchar = FALSE; /* don't wait for a char */
316 waitfor = (char *) NULL; /* no waitfor string */
317 Connect = (char *) NULL; /* no connect string */
319 Version = strdup(buf);
322 - if((p = defvalue(def, "LOGIN"))) login = p;
323 + if((p = defvalue(def, "LOGIN"))) loginprog = p;
324 if((p = defvalue(def, "ISSUE"))) issue = p;
325 if((p = defvalue(def, "CLEAR")) && (strequal(p, "NO")))
327 @@ -1006,7 +1007,7 @@
328 Speed = speedtab[i].speed;
331 - if (clear && *clrscr) {
332 + if (clear && clrscr && *clrscr) {
333 (void) tputs(clrscr, 1, tputc);
336 @@ -1024,8 +1025,8 @@
338 (void) ioctl(STDIN, TCFLSH, 0);
340 - if (emsi && (strcmp(emsi,"yes") == 0))
341 - (void) Fputs("**EMSI_REQA77E\r", stdout);
342 + if (emsi && (strcmp(emsi,"yes") == 0))
343 + (void) Fputs("**EMSI_REQA77E\r", stdout);
345 (void) Fputs(gtab->login, stdout);
347 @@ -1039,7 +1040,7 @@
348 (void) signal(SIGALRM, SIG_DFL);
353 logerr("Fido Call Detected");
356 @@ -1066,14 +1067,14 @@
357 setenv("TERM", term, TRUE);
359 debug(D_RUN, "execing login");
360 - (void) execl(login,
361 + (void) execl(loginprog,
362 "login", buf, (char *)NULL);
364 "exec failed: %s; trying with /bin/sh",
366 - (void) execl("/bin/sh", "sh", "-c", login,
367 + (void) execl("/bin/sh", "sh", "-c", loginprog,
369 - logerr("exec of %s failed: %s", login,
370 + logerr("exec of %s failed: %s", loginprog,
374 diff -Nur getty_ps-2.0.7j/main.h getty_ps-2.0.7j.pld/main.h
375 --- getty_ps-2.0.7j/main.h Sun Feb 2 16:00:23 1997
376 +++ getty_ps-2.0.7j.pld/main.h Thu Jun 10 16:31:28 1999
378 #include <sys/stat.h>
381 -#include <termcap.h>
382 +#include <ncurses/termcap.h>
390 EXTERN char *defname; /* defaults file name */
391 EXTERN boolean clear; /* TRUE, clear screen */
392 EXTERN char *clrscr; /* string to clear screen with */
393 -EXTERN char *login; /* login program */
394 +EXTERN char *loginprog; /* login program */
395 EXTERN char *init; /* init string */
396 EXTERN char *waitfor; /* waitfor string */
397 EXTERN char *Connect; /* connect string */
398 EXTERN boolean waitchar; /* TRUE, wait for a character */
399 EXTERN unsigned int delay; /* seconds to delay before the prompt */
400 EXTERN GTAB *gtab; /* terminal mode */
401 -EXTERN char devname[MAXLINE + 1];
402 +EXTERN char devname[PATH_MAX + 1];
403 /* name of tty device */
404 -EXTERN char initdevname[MAXLINE + 1];
405 +EXTERN char initdevname[PATH_MAX + 1];
406 /* name of init device */
409 diff -Nur getty_ps-2.0.7j/mytermio.h getty_ps-2.0.7j.pld/mytermio.h
410 --- getty_ps-2.0.7j/mytermio.h Mon Oct 9 20:49:06 1995
411 +++ getty_ps-2.0.7j.pld/mytermio.h Thu Jun 10 16:32:54 1999
416 -#define CERASE 127 /* ^? */
417 -#define CKILL 025 /* ^U */
418 -#define CINTR 03 /* ^C */
419 -#define CQUIT 034 /* ^\ */
420 -#define CSTART 021 /* ^Q */
421 -#define CSTOP 023 /* ^S */
422 -#define CEOF 04 /* ^D */
423 -#define CMIN 06 /* satisfy read at 6 chars */
424 -#define CTIME 01 /* .1 sec inter-character timer */
426 #define SSPEED B9600 /* default speed */
428 diff -Nur getty_ps-2.0.7j/table.c getty_ps-2.0.7j.pld/table.c
429 --- getty_ps-2.0.7j/table.c Sun Feb 2 16:04:39 1997
430 +++ getty_ps-2.0.7j.pld/table.c Thu Jun 10 16:30:28 1999
435 +#include "mytermio.h"
439 diff -Nur getty_ps-2.0.7j/tune.h getty_ps-2.0.7j.pld/tune.h
440 --- getty_ps-2.0.7j/tune.h Sun Feb 2 03:17:01 1997
441 +++ getty_ps-2.0.7j.pld/tune.h Thu Jun 10 16:30:28 1999
443 /* Where to find things
446 -#define CONSOLE "/usr/adm/getty.log" /* error log if not using syslog */
448 +#define CONSOLE "/var/log/getty" /* error log if not using syslog */
449 #define DEFAULTS "/etc/default/%s" /* name of defaults file */
451 +#define CONSOLE "/var/log/getty.log" /* error log if not using syslog */
452 #define DEFAULTS "/etc/conf.%s" /* FSSTND compliant defaults file */
454 #define ISSUE "/etc/issue" /* name of the issue file;
458 #define MAXDEF 100 /* max # lines in defaults file */
459 -#define MAXLINE 8192 /* max # chars in a line */
460 +#define MAXLINE 1024 /* max # chars in a line */
461 #define MAXID 12 /* max # chars in Gtab Id */
462 #define MAXLOGIN 80 /* max # chars in Gtab Login */
464 diff -Nur getty_ps-2.0.7j/utmp2.c getty_ps-2.0.7j.pld/utmp2.c
465 --- getty_ps-2.0.7j/utmp2.c Mon Sep 11 17:55:17 1995
466 +++ getty_ps-2.0.7j.pld/utmp2.c Thu Jun 10 16:30:28 1999
468 static off_t utaddress; /* The file address of the last entry
469 returned by getutent. */
472 /* kludge for the benefit of getutent() whose semantics differs from the
473 other get..() functions. When set, getutent() will not read the
474 next entry in utmp, but immediatly returns &Ut, and resets the
477 return (struct utmp *)0;
481 /* Back up and overwrite the last entry returned by getutent,
482 * Or append to the file if getutent returned 0.
488 struct utmp *getutline(struct utmp *ut)
492 if(Fd != -1) close(Fd);
496 diff -Nur getty_ps-2.0.7j/uufuncs.c getty_ps-2.0.7j.pld/uufuncs.c
497 --- getty_ps-2.0.7j/uufuncs.c Fri Apr 26 17:09:48 1996
498 +++ getty_ps-2.0.7j.pld/uufuncs.c Thu Jun 10 16:30:28 1999
508 #endif /* ASCIIPID */
513 debug(D_LOCK, "makelock(%s) called", name);
516 (void) write(fd, (char *)&pid, sizeof(pid));
517 #endif /* ASCIIPID */
520 + /* change owner of link */
521 + pw = getpwnam(UUCPID);
522 + if (pw==NULL || chown(temp,pw->pw_uid,pw->pw_gid)<0) {
523 + debug(D_LOCK, "lock NOT made -- chown failed");
524 + (void) unlink(temp);
528 /* link it to the lock file