diff --git a/libexec/getty/Makefile b/libexec/getty/Makefile index 6f0be04914d4..e76f579fbab2 100644 --- a/libexec/getty/Makefile +++ b/libexec/getty/Makefile @@ -1,8 +1,6 @@ -# $NetBSD: Makefile,v 1.19 2010/02/03 15:34:43 roy Exp $ +# $NetBSD: Makefile,v 1.20 2013/08/11 05:42:41 dholland Exp $ # from: @(#)Makefile 8.1 (Berkeley) 6/4/93 -WARNS?= 2 # XXX: many const & sign-compare issues - PROG= getty SRCS= main.c init.c subr.c DPADD+= ${LIBUTIL} ${LIBTERMINFO} diff --git a/libexec/getty/extern.h b/libexec/getty/extern.h index e0eb4afb1525..8084c9a09725 100644 --- a/libexec/getty/extern.h +++ b/libexec/getty/extern.h @@ -1,4 +1,4 @@ -/* $NetBSD: extern.h,v 1.6 2003/08/07 09:46:41 agc Exp $ */ +/* $NetBSD: extern.h,v 1.7 2013/08/11 05:42:41 dholland Exp $ */ /* * Copyright (c) 1993 @@ -34,17 +34,17 @@ struct delayval; int adelay(int, struct delayval *); -char *autobaud(void); +const char *autobaud(void); int delaybits(void); -void edithost(char *); +void edithost(const char *); void gendefaults(void); int getent(char *, char *); int getflag(char *); long getnum(char *); char *getstr(char *, char **); -void gettable(char *, char *); +void gettable(const char *, char *); void makeenv(char *[]); -char *portselector(void); +const char *portselector(void); void set_ttydefaults(int); void setchars(void); void setdefaults(void); diff --git a/libexec/getty/gettytab.h b/libexec/getty/gettytab.h index a69e0630b259..7b3639e0c86e 100644 --- a/libexec/getty/gettytab.h +++ b/libexec/getty/gettytab.h @@ -1,4 +1,4 @@ -/* $NetBSD: gettytab.h,v 1.16 2006/11/16 04:31:24 christos Exp $ */ +/* $NetBSD: gettytab.h,v 1.17 2013/08/11 05:42:41 dholland Exp $ */ /* * Copyright (c) 1983, 1993, 1994 @@ -35,20 +35,20 @@ * Getty description definitions. */ struct gettystrs { - char *field; /* name to lookup in gettytab */ - char *defalt; /* value we find by looking in defaults */ + const char *field; /* name to lookup in gettytab */ + const char *defalt; /* value we find by looking in defaults */ char *value; /* value that we find there */ }; struct gettynums { - char *field; /* name to lookup */ + const char *field; /* name to lookup */ long defalt; /* number we find in defaults */ long value; /* number we find there */ int set; /* we actually got this one */ }; struct gettyflags { - char *field; /* name to lookup */ + const char *field; /* name to lookup */ char invrt; /* name existing in gettytab --> false */ char defalt; /* true/false in defaults */ char value; /* true/false flag */ diff --git a/libexec/getty/init.c b/libexec/getty/init.c index c49c787a9a82..44b6eaa26c15 100644 --- a/libexec/getty/init.c +++ b/libexec/getty/init.c @@ -1,4 +1,4 @@ -/* $NetBSD: init.c,v 1.17 2007/12/03 09:54:24 isaki Exp $ */ +/* $NetBSD: init.c,v 1.18 2013/08/11 05:42:41 dholland Exp $ */ /* * Copyright (c) 1983, 1993 @@ -34,7 +34,7 @@ #if 0 static char sccsid[] = "from: @(#)init.c 8.1 (Berkeley) 6/4/93"; #else -__RCSID("$NetBSD: init.c,v 1.17 2007/12/03 09:54:24 isaki Exp $"); +__RCSID("$NetBSD: init.c,v 1.18 2013/08/11 05:42:41 dholland Exp $"); #endif #endif /* not lint */ @@ -44,6 +44,7 @@ __RCSID("$NetBSD: init.c,v 1.17 2007/12/03 09:54:24 isaki Exp $"); * Melbourne getty. */ +#include #include #include "gettytab.h" @@ -55,92 +56,92 @@ extern char hostname[]; #define M(a) ((char *)&tmode.c_cc[a]) struct gettystrs gettystrs[] = { - { "nx" }, /* next table */ - { "cl" }, /* screen clear characters */ - { "im" }, /* initial message */ - { "lm", "login: " }, /* login message */ - { "er", M(VERASE) }, /* erase character */ - { "kl", M(VKILL) }, /* kill character */ - { "et", M(VEOF) }, /* eof chatacter (eot) */ - { "pc", "" }, /* pad character */ - { "tt" }, /* terminal type */ - { "ev" }, /* environment */ - { "lo", _PATH_LOGIN }, /* login program */ - { "hn", hostname }, /* host name */ - { "he" }, /* host name edit */ - { "in", M(VINTR) }, /* interrupt char */ - { "qu", M(VQUIT) }, /* quit char */ - { "xn", M(VSTART) }, /* XON (start) char */ - { "xf", M(VSTOP) }, /* XOFF (stop) char */ - { "bk", M(VEOL) }, /* brk char (alt \n) */ - { "su", M(VSUSP) }, /* suspend char */ - { "ds", M(VDSUSP) }, /* delayed suspend */ - { "rp", M(VREPRINT) }, /* reprint char */ - { "fl", M(VDISCARD) }, /* flush output */ - { "we", M(VWERASE) }, /* word erase */ - { "ln", M(VLNEXT) }, /* literal next */ - { "st", M(VSTATUS) }, /* status */ - { "b2", M(VEOL2) }, /* alt brk char */ - { "pp" }, /* ppp login program */ - { "if" }, /* sysv-like 'issue' filename */ - { "al" }, /* user to auto-login */ - { 0 } + { "nx", NULL, NULL }, /* next table */ + { "cl", NULL, NULL }, /* screen clear characters */ + { "im", NULL, NULL }, /* initial message */ + { "lm", "login: ", NULL }, /* login message */ + { "er", M(VERASE), NULL }, /* erase character */ + { "kl", M(VKILL), NULL }, /* kill character */ + { "et", M(VEOF), NULL }, /* eof chatacter (eot) */ + { "pc", "", NULL }, /* pad character */ + { "tt", NULL, NULL }, /* terminal type */ + { "ev", NULL, NULL }, /* environment */ + { "lo", _PATH_LOGIN, NULL }, /* login program */ + { "hn", hostname, NULL }, /* host name */ + { "he", NULL, NULL }, /* host name edit */ + { "in", M(VINTR), NULL }, /* interrupt char */ + { "qu", M(VQUIT), NULL }, /* quit char */ + { "xn", M(VSTART), NULL }, /* XON (start) char */ + { "xf", M(VSTOP), NULL }, /* XOFF (stop) char */ + { "bk", M(VEOL), NULL }, /* brk char (alt \n) */ + { "su", M(VSUSP), NULL }, /* suspend char */ + { "ds", M(VDSUSP), NULL }, /* delayed suspend */ + { "rp", M(VREPRINT), NULL }, /* reprint char */ + { "fl", M(VDISCARD), NULL }, /* flush output */ + { "we", M(VWERASE), NULL }, /* word erase */ + { "ln", M(VLNEXT), NULL }, /* literal next */ + { "st", M(VSTATUS), NULL }, /* status */ + { "b2", M(VEOL2), NULL }, /* alt brk char */ + { "pp", NULL, NULL }, /* ppp login program */ + { "if", NULL, NULL }, /* sysv-like 'issue' filename */ + { "al", NULL, NULL }, /* user to auto-login */ + { NULL, NULL, NULL } }; struct gettynums gettynums[] = { - { "is" }, /* input speed */ - { "os" }, /* output speed */ - { "sp" }, /* both speeds */ - { "nd" }, /* newline delay */ - { "cd" }, /* carriage-return delay */ - { "td" }, /* tab delay */ - { "fd" }, /* form-feed delay */ - { "bd" }, /* backspace delay */ - { "to" }, /* timeout */ - { "f0" }, /* output flags */ - { "f1" }, /* input flags */ - { "f2" }, /* user mode flags */ - { "pf" }, /* delay before flush at 1st prompt */ - { "c0" }, /* output c_flags */ - { "c1" }, /* input c_flags */ - { "c2" }, /* user mode c_flags */ - { "i0" }, /* output i_flags */ - { "i1" }, /* input i_flags */ - { "i2" }, /* user mode i_flags */ - { "l0" }, /* output l_flags */ - { "l1" }, /* input l_flags */ - { "l2" }, /* user mode l_flags */ - { "o0" }, /* output o_flags */ - { "o1" }, /* input o_flags */ - { "o2" }, /* user mode o_flags */ - { 0 } + { "is", 0,0,0 }, /* input speed */ + { "os", 0,0,0 }, /* output speed */ + { "sp", 0,0,0 }, /* both speeds */ + { "nd", 0,0,0 }, /* newline delay */ + { "cd", 0,0,0 }, /* carriage-return delay */ + { "td", 0,0,0 }, /* tab delay */ + { "fd", 0,0,0 }, /* form-feed delay */ + { "bd", 0,0,0 }, /* backspace delay */ + { "to", 0,0,0 }, /* timeout */ + { "f0", 0,0,0 }, /* output flags */ + { "f1", 0,0,0 }, /* input flags */ + { "f2", 0,0,0 }, /* user mode flags */ + { "pf", 0,0,0 }, /* delay before flush at 1st prompt */ + { "c0", 0,0,0 }, /* output c_flags */ + { "c1", 0,0,0 }, /* input c_flags */ + { "c2", 0,0,0 }, /* user mode c_flags */ + { "i0", 0,0,0 }, /* output i_flags */ + { "i1", 0,0,0 }, /* input i_flags */ + { "i2", 0,0,0 }, /* user mode i_flags */ + { "l0", 0,0,0 }, /* output l_flags */ + { "l1", 0,0,0 }, /* input l_flags */ + { "l2", 0,0,0 }, /* user mode l_flags */ + { "o0", 0,0,0 }, /* output o_flags */ + { "o1", 0,0,0 }, /* input o_flags */ + { "o2", 0,0,0 }, /* user mode o_flags */ + { 0,0,0,0 } }; struct gettyflags gettyflags[] = { - { "ht", 0 }, /* has tabs */ - { "nl", 1 }, /* has newline char */ - { "ep", 0 }, /* even parity */ - { "op", 0 }, /* odd parity */ - { "ap", 0 }, /* any parity */ - { "ec", 1 }, /* no echo */ - { "co", 0 }, /* console special */ - { "cb", 0 }, /* crt backspace */ - { "ck", 0 }, /* crt kill */ - { "ce", 0 }, /* crt erase */ - { "pe", 0 }, /* printer erase */ - { "rw", 1 }, /* don't use raw */ - { "xc", 1 }, /* don't ^X ctl chars */ - { "lc", 0 }, /* terminal las lower case */ - { "uc", 0 }, /* terminal has no lower case */ - { "ig", 0 }, /* ignore garbage */ - { "ps", 0 }, /* do port selector speed select */ - { "hc", 1 }, /* don't set hangup on close */ - { "ub", 0 }, /* unbuffered output */ - { "ab", 0 }, /* auto-baud detect with '\r' */ - { "dx", 0 }, /* set decctlq */ - { "np", 0 }, /* no parity at all (8bit chars) */ - { "mb", 0 }, /* do MDMBUF flow control */ - { "cs", 0 }, /* clear screen based on term type */ - { "nn", 0 }, /* don't prompt for login name */ - { 0 } + { "ht", 0, 0,0,0 }, /* has tabs */ + { "nl", 1, 0,0,0 }, /* has newline char */ + { "ep", 0, 0,0,0 }, /* even parity */ + { "op", 0, 0,0,0 }, /* odd parity */ + { "ap", 0, 0,0,0 }, /* any parity */ + { "ec", 1, 0,0,0 }, /* no echo */ + { "co", 0, 0,0,0 }, /* console special */ + { "cb", 0, 0,0,0 }, /* crt backspace */ + { "ck", 0, 0,0,0 }, /* crt kill */ + { "ce", 0, 0,0,0 }, /* crt erase */ + { "pe", 0, 0,0,0 }, /* printer erase */ + { "rw", 1, 0,0,0 }, /* don't use raw */ + { "xc", 1, 0,0,0 }, /* don't ^X ctl chars */ + { "lc", 0, 0,0,0 }, /* terminal las lower case */ + { "uc", 0, 0,0,0 }, /* terminal has no lower case */ + { "ig", 0, 0,0,0 }, /* ignore garbage */ + { "ps", 0, 0,0,0 }, /* do port selector speed select */ + { "hc", 1, 0,0,0 }, /* don't set hangup on close */ + { "ub", 0, 0,0,0 }, /* unbuffered output */ + { "ab", 0, 0,0,0 }, /* auto-baud detect with '\r' */ + { "dx", 0, 0,0,0 }, /* set decctlq */ + { "np", 0, 0,0,0 }, /* no parity at all (8bit chars) */ + { "mb", 0, 0,0,0 }, /* do MDMBUF flow control */ + { "cs", 0, 0,0,0 }, /* clear screen based on term type */ + { "nn", 0, 0,0,0 }, /* don't prompt for login name */ + { NULL,0,0,0,0 } }; diff --git a/libexec/getty/main.c b/libexec/getty/main.c index c402e6a55be5..aaf059470d68 100644 --- a/libexec/getty/main.c +++ b/libexec/getty/main.c @@ -1,4 +1,4 @@ -/* $NetBSD: main.c,v 1.60 2012/11/04 21:14:59 christos Exp $ */ +/* $NetBSD: main.c,v 1.61 2013/08/11 05:42:41 dholland Exp $ */ /*- * Copyright (c) 1980, 1993 @@ -40,7 +40,7 @@ __COPYRIGHT("@(#) Copyright (c) 1980, 1993\ #if 0 static char sccsid[] = "from: @(#)main.c 8.1 (Berkeley) 6/20/93"; #else -__RCSID("$NetBSD: main.c,v 1.60 2012/11/04 21:14:59 christos Exp $"); +__RCSID("$NetBSD: main.c,v 1.61 2013/08/11 05:42:41 dholland Exp $"); #endif #endif /* not lint */ @@ -183,11 +183,13 @@ int main(int argc, char *argv[], char *envp[]) { const char *progname; - char *tname; - int repcnt = 0, failopenlogged = 0, uugetty = 0, first_time = 1; + const char *tname; + int repcnt = 0, failopenlogged = 0, first_time = 1; struct rlimit limit; struct passwd *pw; int rval; + /* gcc 4.5 claims longjmp can clobber this, but I don't see how */ + volatile int uugetty = 0; (void)signal(SIGINT, SIG_IGN); openlog("getty", LOG_PID, LOG_AUTH); diff --git a/libexec/getty/subr.c b/libexec/getty/subr.c index de1e0b52efcd..1742a8d49729 100644 --- a/libexec/getty/subr.c +++ b/libexec/getty/subr.c @@ -1,4 +1,4 @@ -/* $NetBSD: subr.c,v 1.33 2006/11/16 04:31:24 christos Exp $ */ +/* $NetBSD: subr.c,v 1.34 2013/08/11 05:42:41 dholland Exp $ */ /* * Copyright (c) 1983, 1993 @@ -34,7 +34,7 @@ #if 0 static char sccsid[] = "from: @(#)subr.c 8.1 (Berkeley) 6/4/93"; #else -__RCSID("$NetBSD: subr.c,v 1.33 2006/11/16 04:31:24 christos Exp $"); +__RCSID("$NetBSD: subr.c,v 1.34 2013/08/11 05:42:41 dholland Exp $"); #endif #endif /* not lint */ @@ -50,6 +50,7 @@ __RCSID("$NetBSD: subr.c,v 1.33 2006/11/16 04:31:24 christos Exp $"); #include #include #include +#include #include "extern.h" #include "gettytab.h" @@ -63,7 +64,7 @@ static void compatflags(long); * Get a table entry. */ void -gettable(char *name, char *buf) +gettable(const char *name, char *buf) { struct gettystrs *sp; struct gettynums *np; @@ -71,7 +72,7 @@ gettable(char *name, char *buf) long n; const char *dba[2]; dba[0] = _PATH_GETTYTAB; - dba[1] = 0; + dba[1] = NULL; if (cgetent(&buf, dba, name) != 0) return; @@ -136,7 +137,7 @@ setdefaults(void) for (sp = gettystrs; sp->field; sp++) if (!sp->value) - sp->value = sp->defalt; + sp->value = estrdup(sp->defalt); for (np = gettynums; np->field; np++) if (!np->set) np->value = np->defalt; @@ -556,7 +557,7 @@ adelay(int ms, struct delayval *dp) char editedhost[MAXHOSTNAMELEN]; void -edithost(char *pat) +edithost(const char *pat) { char *host = HN; char *res = editedhost; @@ -627,8 +628,8 @@ makeenv(char *env[]) * The routine below returns the terminal type mapped from derived speed. */ struct portselect { - char *ps_baud; - char *ps_type; + const char *ps_baud; + const char *ps_type; } portspeeds[] = { { "B110", "std.110" }, { "B134", "std.134" }, @@ -640,15 +641,16 @@ struct portselect { { "B4800", "std.4800" }, { "B9600", "std.9600" }, { "B19200", "std.19200" }, - { 0 } + { NULL, NULL } }; -char * +const char * portselector(void) { - char c, baud[20], *type = "default"; + char c, baud[20]; + const char *type = "default"; struct portselect *ps; - int len; + size_t len; (void)alarm(5*60); for (len = 0; len < sizeof (baud) - 1; len++) { @@ -678,12 +680,13 @@ portselector(void) */ #include -char * +const char * autobaud(void) { struct pollfd set[1]; struct timespec timeout; - char c, *type = "9600-baud"; + char c; + const char *type = "9600-baud"; (void)tcflush(0, TCIOFLUSH); set[0].fd = STDIN_FILENO;