Module Name:    src
Committed By:   christos
Date:           Mon Jan  9 16:08:56 UTC 2012

Modified Files:
        src/usr.bin/telnet: Makefile authenc.c commands.c externs.h main.c
            sys_bsd.c telnet.c utilities.c

Log Message:
PR/45805: Borodin Oleg: telnet/telnetd with -DAUTHENTICATION -DENCRYPTION
(rfc2941)
- Minimal diffs to separate MKCRYPTO from USE_KERBEROS


To generate a diff of this commit:
cvs rdiff -u -r1.48 -r1.49 src/usr.bin/telnet/Makefile
cvs rdiff -u -r1.12 -r1.13 src/usr.bin/telnet/authenc.c
cvs rdiff -u -r1.67 -r1.68 src/usr.bin/telnet/commands.c
cvs rdiff -u -r1.35 -r1.36 src/usr.bin/telnet/externs.h
cvs rdiff -u -r1.27 -r1.28 src/usr.bin/telnet/main.c
cvs rdiff -u -r1.32 -r1.33 src/usr.bin/telnet/sys_bsd.c
cvs rdiff -u -r1.34 -r1.35 src/usr.bin/telnet/telnet.c
cvs rdiff -u -r1.22 -r1.23 src/usr.bin/telnet/utilities.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/usr.bin/telnet/Makefile
diff -u src/usr.bin/telnet/Makefile:1.48 src/usr.bin/telnet/Makefile:1.49
--- src/usr.bin/telnet/Makefile:1.48	Wed Oct  5 06:48:54 2011
+++ src/usr.bin/telnet/Makefile	Mon Jan  9 11:08:55 2012
@@ -1,4 +1,4 @@
-#	$NetBSD: Makefile,v 1.48 2011/10/05 10:48:54 roy Exp $
+#	$NetBSD: Makefile,v 1.49 2012/01/09 16:08:55 christos Exp $
 #
 # Copyright (c) 1990 The Regents of the University of California.
 # All rights reserved.
@@ -34,7 +34,7 @@
 #	from: @(#)Makefile	8.1 (Berkeley) 6/6/93
 #
 
-WARNS?=	1	# XXX -Wshadow etc.  fix asap
+WARNS?=	4	# XXX -Wshadow etc.  fix asap
 CWARNFLAGS.clang+=	-Wno-tautological-compare -Wno-format-security
 
 .include <bsd.own.mk>
@@ -64,19 +64,22 @@ CPPFLAGS+=-DINET6
 LIBTELNETDIR!=	cd ${.CURDIR}/../../lib/libtelnet; ${PRINTOBJDIR}
 
 .if (${USE_KERBEROS} != "no")
-CPPFLAGS+=-DKRB5 -DFORWARD -DAUTHENTICATION -DENCRYPTION
-LDADD+= -lkrb5 -lasn1 -lcrypto -lcrypt
-DPADD+=	${LIBKRB5} ${LIBASN1} ${LIBCRYPTO} ${LIBCRYPT}
+CPPFLAGS+=-DKRB5 -DFORWARD
+LDADD+= -lkrb5 -lasn1 -lcom_err -lroken
+DPADD+=	${LIBKRB5} ${LIBASN1} ${LIBCOM_ERR} ${LIBROKEN}
+.endif
+
+.if (${MKCRYPTO} != "no")
+CPPFLAGS+=-DAUTHENTICATION -DENCRYPTION
+LDADD+= -ldes -lcrypto -lcrypt
+DPADD+=	${LIBDES} ${LIBCRYPTO} ${LIBCRYPT}
+.endif
 
 .if (${USE_PAM} != "no")
 LDADD+= -lpam ${PAM_STATIC_LDADD}
 DPADD+=	${LIBPAM} ${PAM_STATIC_DPADD}
 .endif
 
-LDADD+= -ldes -lcom_err -lroken
-DPADD+=	${LIBDES} ${LIBCOM_ERR} ${LIBROKEN}
-.endif
-
 .if defined(HAVE_GCC) || defined(HAVE_PCC)
 .for f in commands telnet terminal utilities
 COPTS.${f}.c+=  -Wno-pointer-sign

Index: src/usr.bin/telnet/authenc.c
diff -u src/usr.bin/telnet/authenc.c:1.12 src/usr.bin/telnet/authenc.c:1.13
--- src/usr.bin/telnet/authenc.c:1.12	Thu Aug  7 07:16:07 2003
+++ src/usr.bin/telnet/authenc.c	Mon Jan  9 11:08:55 2012
@@ -1,4 +1,4 @@
-/*	$NetBSD: authenc.c,v 1.12 2003/08/07 11:16:07 agc Exp $	*/
+/*	$NetBSD: authenc.c,v 1.13 2012/01/09 16:08:55 christos Exp $	*/
 
 /*-
  * Copyright (c) 1991, 1993
@@ -34,7 +34,7 @@
 #if 0
 static char sccsid[] = "@(#)authenc.c	8.1 (Berkeley) 6/6/93";
 #else
-__RCSID("$NetBSD: authenc.c,v 1.12 2003/08/07 11:16:07 agc Exp $");
+__RCSID("$NetBSD: authenc.c,v 1.13 2012/01/09 16:08:55 christos Exp $");
 #endif
 #endif /* not lint */
 
@@ -87,7 +87,7 @@ telnet_getenv(char *val)
 }
 
 char *
-telnet_gets(char *prompt, char *result, int length, int echo)
+telnet_gets(char *prmpt, char *result, int length, int echo)
 {
 	extern int globalmode;
 	int om = globalmode;
@@ -95,9 +95,9 @@ telnet_gets(char *prompt, char *result, 
 
 	TerminalNewMode(-1);
 	if (echo) {
-		printf("%s", prompt);
+		printf("%s", prmpt);
 		res = fgets(result, length, stdin);
-	} else if ((res = getpass(prompt)) != NULL) {
+	} else if ((res = getpass(prmpt)) != NULL) {
 		strlcpy(result, res, length);
 		res = result;
 	}

Index: src/usr.bin/telnet/commands.c
diff -u src/usr.bin/telnet/commands.c:1.67 src/usr.bin/telnet/commands.c:1.68
--- src/usr.bin/telnet/commands.c:1.67	Mon Dec 18 09:18:40 2006
+++ src/usr.bin/telnet/commands.c	Mon Jan  9 11:08:55 2012
@@ -1,4 +1,4 @@
-/*	$NetBSD: commands.c,v 1.67 2006/12/18 14:18:40 christos Exp $	*/
+/*	$NetBSD: commands.c,v 1.68 2012/01/09 16:08:55 christos Exp $	*/
 
 /*
  * Copyright (C) 1997 and 1998 WIDE Project.
@@ -63,7 +63,7 @@
 #if 0
 static char sccsid[] = "@(#)commands.c	8.4 (Berkeley) 5/30/95";
 #else
-__RCSID("$NetBSD: commands.c,v 1.67 2006/12/18 14:18:40 christos Exp $");
+__RCSID("$NetBSD: commands.c,v 1.68 2012/01/09 16:08:55 christos Exp $");
 #endif
 #endif /* not lint */
 
@@ -109,8 +109,8 @@ char	*hostname;
 static char _hostname[MAXHOSTNAMELEN];
 
 typedef struct {
-	char	*name;		/* command name */
-	char	*help;		/* help string (NULL for no help) */
+	const char	*name;	/* command name */
+	const char	*help;	/* help string (NULL for no help) */
 	int	(*handler)	/* routine which executes command */
 			(int, char *[]);
 	int	needconnect;	/* Do we need to be connected to execute? */
@@ -123,7 +123,7 @@ static char *margv[20];
 
 static void makeargv(void);
 static int special(char *);
-static char *control(cc_t);
+static const char *control(cc_t);
 static int sendcmd(int, char **);
 static int send_esc(char *);
 static int send_docmd(char *);
@@ -155,7 +155,7 @@ static int bye(int, char *[]);
 static void slc_help(int);
 static struct slclist *getslc(char *);
 static int slccmd(int, char *[]);
-static struct env_lst *env_help(unsigned char *, unsigned char *);
+static struct env_lst *env_help(const unsigned char *, unsigned char *);
 static struct envlist *getenvcmd(char *);
 #ifdef AUTHENTICATION
 static int auth_help(char *);
@@ -175,12 +175,13 @@ makeargv(void)
 {
     char *cp, *cp2, c;
     char **argp = margv;
+    static char bang[] = "!";
 
     margc = 0;
     cp = line;
     if (*cp == '!') {		/* Special case shell escape */
 	strlcpy(saveline, line, sizeof(saveline)); /* save for shell command */
-	*argp++ = "!";		/* No room in string to get this */
+	*argp++ = bang;		/* No room in string to get this */
 	margc++;
 	cp++;
     }
@@ -253,7 +254,7 @@ special(char *s)
  * Construct a control character sequence
  * for a special character.
  */
-static char *
+static const char *
 control(cc_t c)
 {
 	static char buf[5];
@@ -297,8 +298,8 @@ control(cc_t c)
  */
 
 struct sendlist {
-    char	*name;		/* How user refers to it (case independent) */
-    char	*help;		/* Help information (0 ==> no help) */
+    const char	*name;		/* How user refers to it (case independent) */
+    const char	*help;		/* Help information (0 ==> no help) */
     int		needconnect;	/* Need to be connected */
     int		narg;		/* Number of arguments */
     int		(*handler)	/* Routine to perform (for special ops) */
@@ -334,7 +335,7 @@ static struct sendlist Sendlist[] = {
     { "dont",	0,					0, 1, send_dontcmd, 3, 0 },
     { "will",	0,					0, 1, send_willcmd, 3, 0 },
     { "wont",	0,					0, 1, send_wontcmd, 3, 0 },
-    { 0 }
+    { .name = 0 }
 };
 
 #define	GETSEND(name) ((struct sendlist *) genget(name, (char **) Sendlist, \
@@ -450,7 +451,7 @@ send_wontcmd(char *name)
 }
 
 int
-send_tncmd(void	(*func)(int, int), char	*cmd, char *name)
+send_tncmd(void	(*func)(int, int), const char	*cmd, char *name)
 {
     const char **cpp;
     int val = 0;
@@ -475,7 +476,7 @@ send_tncmd(void	(*func)(int, int), char	
 	printf("\n");
 	return 0;
     }
-    cpp = (const char **)genget(name, (char **)telopts, sizeof(char *));
+    cpp = (void *)genget(name, __UNCONST(telopts), sizeof(char *));
     if (Ambiguous(cpp)) {
 	fprintf(stderr,"'%s': ambiguous argument ('send %s ?' for help).\n",
 					name, cmd);
@@ -653,12 +654,12 @@ extern int EncryptVerbose(int);
 #endif	/* ENCRYPTION */
 
 struct togglelist {
-    char	*name;		/* name of toggle */
-    char	*help;		/* help message */
+    const char	*name;		/* name of toggle */
+    const char	*help;		/* help message */
     int		(*handler)	/* routine to do actual setting */
 			(int);
     int		*variable;
-    char	*actionexplanation;
+    const char	*actionexplanation;
 };
 
 static struct togglelist Togglelist[] = {
@@ -741,7 +742,7 @@ static struct togglelist Togglelist[] = 
 	    lclchars,
 		&localchars,
 		    "recognize certain control characters" },
-    { " ", "", 0 },		/* empty line */
+    { " ", "", 0, NULL, NULL },		/* empty line */
 #ifdef TN3270
     { "apitrace",
 	"(debugging) toggle tracing of API transactions",
@@ -781,11 +782,11 @@ static struct togglelist Togglelist[] = 
 		    "print hexadecimal representation of terminal traffic" },
     { "?",
 	0,
-	    togglehelp },
+	    togglehelp, NULL, NULL },
     { "help",
 	0,
-	    togglehelp },
-    { 0 }
+	    togglehelp, NULL, NULL },
+    { .name = 0 }
 };
 
 static int
@@ -870,11 +871,11 @@ toggle(int  argc, char *argv[])
  * The following perform the "set" command.
  */
 
-struct termios new_tc = { 0 };
+struct termios new_tc = { .c_iflag = 0 };
 
 struct setlist {
-    char *name;				/* name */
-    char *help;				/* help information */
+    const char *name;			/* name */
+    const char *help;			/* help information */
     void (*handler)(char *);
     cc_t *charp;			/* where it is located at */
 };
@@ -886,13 +887,13 @@ static struct setlist Setlist[] = {
     { "escape",	"character to escape back to telnet command mode", 0, &escape },
     { "rlogin", "rlogin escape character", 0, &rlogin },
     { "tracefile", "file to write trace information to", SetNetTrace, (cc_t *)NetTraceFile},
-    { " ", "" },
+    { " ", "", NULL, NULL },
     { " ", "The following need 'localchars' to be toggled true", 0, 0 },
     { "flushoutput", "character to cause an Abort Output", 0, termFlushCharp },
     { "interrupt", "character to cause an Interrupt Process", 0, termIntCharp },
     { "quit",	"character to cause an Abort process", 0, termQuitCharp },
     { "eof",	"character to cause an EOF ", 0, termEofCharp },
-    { " ", "" },
+    { " ", "", NULL, NULL },
     { " ", "The following are for local editing in linemode", 0, 0 },
     { "erase",	"character to use to erase a character", 0, termEraseCharp },
     { "kill",	"character to use to erase a line", 0, termKillCharp },
@@ -905,7 +906,7 @@ static struct setlist Setlist[] = {
     { "forw1",	"alternate end of line character", 0, termForw1Charp },
     { "forw2",	"alternate end of line character", 0, termForw2Charp },
     { "ayt",	"alternate AYT character", 0, termAytCharp },
-    { 0 }
+    { .name = 0 }
 };
 
 static struct setlist *
@@ -1136,8 +1137,8 @@ clear_mode(int bit)
 }
 
 struct modelist {
-	char	*name;		/* command name */
-	char	*help;		/* help string */
+	const char	*name;	/* command name */
+	const char	*help;	/* help string */
 	int	(*handler)	/* routine which executes command */
 			(int);
 	int	needconnect;	/* Do we need to be connected to execute? */
@@ -1145,16 +1146,16 @@ struct modelist {
 };
 
 static struct modelist ModeList[] = {
-    { "character", "Disable LINEMODE option",	docharmode, 1 },
+    { "character", "Disable LINEMODE option",	docharmode, 1, 0 },
 #ifdef	KLUDGELINEMODE
-    { "",	"(or disable obsolete line-by-line mode)", 0 },
+    { "",	"(or disable obsolete line-by-line mode)", 0, 0, 0 },
 #endif
-    { "line",	"Enable LINEMODE option",	dolinemode, 1 },
+    { "line",	"Enable LINEMODE option",	dolinemode, 1, 0 },
 #ifdef	KLUDGELINEMODE
-    { "",	"(or enable obsolete line-by-line mode)", 0 },
+    { "",	"(or enable obsolete line-by-line mode)", 0, 0, 0 },
 #endif
-    { "", "", 0 },
-    { "",	"These require the LINEMODE option to be enabled", 0 },
+    { "", "", 0, 0, 0 },
+    { "",	"These require the LINEMODE option to be enabled", 0, 0, 0 },
     { "isig",	"Enable signal trapping",	set_mode, 1, MODE_TRAPSIG },
     { "+isig",	0,				set_mode, 1, MODE_TRAPSIG },
     { "-isig",	"Disable signal trapping",	clear_mode, 1, MODE_TRAPSIG },
@@ -1167,13 +1168,13 @@ static struct modelist ModeList[] = {
     { "litecho", "Enable literal character echo", set_mode, 1, MODE_LIT_ECHO },
     { "+litecho", 0,				set_mode, 1, MODE_LIT_ECHO },
     { "-litecho", "Disable literal character echo", clear_mode, 1, MODE_LIT_ECHO },
-    { "help",	0,				modehelp, 0 },
+    { "help",	0,				modehelp, 0, 0 },
 #ifdef	KLUDGELINEMODE
-    { "kludgeline", 0,				dokludgemode, 1 },
+    { "kludgeline", 0,				dokludgemode, 1, 0 },
 #endif
-    { "", "", 0 },
-    { "?",	"Print help information",	modehelp, 0 },
-    { 0 },
+    { "", "", 0, 0, 0 },
+    { "?",	"Print help information",	modehelp, 0, 0 },
+    { .name = 0 },
 };
 
 
@@ -1375,7 +1376,7 @@ shell(int argc, char *argv[])
 	    /*
 	     * Fire up the shell in the child.
 	     */
-	    char *shellp, *shellname;
+	    const char *shellp, *shellname;
 
 	    shellp = getenv("SHELL");
 	    if (shellp == NULL)
@@ -1456,8 +1457,8 @@ logout(int argc, char *argv[])
  */
 
 struct slclist {
-	char	*name;
-	char	*help;
+	const char	*name;
+	const char	*help;
 	void	(*handler)(int);
 	int	arg;
 };
@@ -1471,7 +1472,7 @@ struct slclist SlcList[] = {
 						slc_mode_import,	0 },
     { "help",	0,				slc_help,		0 },
     { "?",	"Print help information",	slc_help,		0 },
-    { 0 },
+    { .name = 0 },
 };
 
 static void
@@ -1527,9 +1528,9 @@ slccmd(int  argc, char *argv[])
  */
 
 struct envlist {
-	char	*name;
-	char	*help;
-	struct env_lst *(*handler)(unsigned char *, unsigned char *);
+	const char	*name;
+	const char	*help;
+	struct env_lst *(*handler)(const unsigned char *, unsigned char *);
 	int	narg;
 };
 
@@ -1551,11 +1552,11 @@ struct envlist EnvList[] = {
 #endif
     { "help",	0,				env_help,		0 },
     { "?",	"Print help information",	env_help,		0 },
-    { 0 },
+    { .name = 0 },
 };
 
 static struct env_lst *
-env_help( unsigned char *us1, unsigned char *us2)
+env_help(const unsigned char *us1, unsigned char *us2)
 {
     struct envlist *c;
 
@@ -1621,12 +1622,12 @@ struct env_lst {
 struct env_lst envlisthead;
 
 struct env_lst *
-env_find(unsigned char *var)
+env_find(const unsigned char *var)
 {
 	struct env_lst *ep;
 
 	for (ep = envlisthead.next; ep; ep = ep->next) {
-		if (strcmp((char *)ep->var, (char *)var) == 0)
+		if (strcmp((const char *)ep->var, (const char *)var) == 0)
 			return(ep);
 	}
 	return(NULL);
@@ -1672,15 +1673,15 @@ env_init(void)
 	 * don't export the USER variable.
 	 */
 	if ((env_find("USER") == NULL) && (ep = env_find("LOGNAME"))) {
-		env_define((unsigned char *)"USER", ep->value);
-		env_unexport((unsigned char *)"USER", NULL);
+		env_define((const unsigned char *)"USER", ep->value);
+		env_unexport((const unsigned char *)"USER", NULL);
 	}
-	env_export((unsigned char *)"DISPLAY", NULL);
-	env_export((unsigned char *)"PRINTER", NULL);
+	env_export((const unsigned char *)"DISPLAY", NULL);
+	env_export((const unsigned char *)"PRINTER", NULL);
 }
 
 struct env_lst *
-env_define(unsigned char *var, unsigned char *value)
+env_define(const unsigned char *var, unsigned char *value)
 {
 	struct env_lst *ep;
 
@@ -1699,13 +1700,13 @@ env_define(unsigned char *var, unsigned 
 	}
 	ep->welldefined = opt_welldefined(var);
 	ep->export = 1;
-	ep->var = (unsigned char *)strdup((char *)var);
-	ep->value = (unsigned char *)strdup((char *)value);
+	ep->var = (unsigned char *)strdup((const char *)var);
+	ep->value = (unsigned char *)strdup((const char *)value);
 	return(ep);
 }
 
 struct env_lst *
-env_undefine(unsigned char *var, unsigned char *d)
+env_undefine(const unsigned char *var, unsigned char *d)
 {
 	struct env_lst *ep;
 
@@ -1723,7 +1724,7 @@ env_undefine(unsigned char *var, unsigne
 }
 
 struct env_lst *
-env_export(unsigned char *var, unsigned char *d)
+env_export(const unsigned char *var, unsigned char *d)
 {
 	struct env_lst *ep;
 
@@ -1733,7 +1734,7 @@ env_export(unsigned char *var, unsigned 
 }
 
 struct env_lst *
-env_unexport(unsigned char *var, unsigned char *d)
+env_unexport(const unsigned char *var, unsigned char *d)
 {
 	struct env_lst *ep;
 
@@ -1743,7 +1744,7 @@ env_unexport(unsigned char *var, unsigne
 }
 
 struct env_lst *
-env_send(unsigned char *var, unsigned char *d)
+env_send(const unsigned char *var, unsigned char *d)
 {
 	struct env_lst *ep;
 
@@ -1770,7 +1771,7 @@ env_send(unsigned char *var, unsigned ch
 }
 
 struct env_lst *
-env_list(unsigned char *d1, unsigned char *d2)
+env_list(const unsigned char *d1, unsigned char *d2)
 {
 	struct env_lst *ep;
 
@@ -1800,7 +1801,7 @@ env_default(int init, int welldefined)
 }
 
 unsigned char *
-env_getvalue(unsigned char *var)
+env_getvalue(const unsigned char *var)
 {
 	struct env_lst *ep;
 
@@ -1811,7 +1812,7 @@ env_getvalue(unsigned char *var)
 
 #if defined(OLD_ENVIRON) && defined(ENV_HACK)
 void
-env_varval(unsigned char *what)
+env_varval(const unsigned char *what)
 {
 	extern int old_env_var, old_env_value, env_auto;
 	int len = strlen((char *)what);
@@ -1852,8 +1853,8 @@ unknown:
  */
 
 struct authlist {
-	char	*name;
-	char	*help;
+	const char	*name;
+	const char	*help;
 	int	(*handler)(char *);
 	int	narg;
 };
@@ -1867,7 +1868,7 @@ struct authlist AuthList[] = {
 						auth_enable,	1 },
     { "help",	0,				auth_help,		0 },
     { "?",	"Print help information",	auth_help,		0 },
-    { 0 },
+    { .name = 0 },
 };
 
 static int
@@ -1926,8 +1927,8 @@ auth_cmd(int  argc, char *argv[])
  */
 
 struct encryptlist {
-	char	*name;
-	char	*help;
+	const char	*name;
+	const char	*help;
 	int	(*handler)(char *, char *);
 	int	needconnect;
 	int	minarg;
@@ -1962,7 +1963,7 @@ struct encryptlist EncryptList[] = {
 				(encrypthandler) EncryptStatus,	0, 0, 0 },
     { "help", 0,				 EncryptHelp,	0, 0, 0 },
     { "?",    "Print help information",		 EncryptHelp,	0, 0, 0 },
-    { 0 },
+    { .name = 0 },
 };
 
 static int
@@ -2159,7 +2160,7 @@ sockaddr_ntop(struct sockaddr *sa)
 static int setpolicy (int, struct addrinfo *, char *);
 
 static int
-setpolicy(int net, struct addrinfo *res, char *policy)
+setpolicy(int netw, struct addrinfo *res, char *policy)
 {
 	char *buf;
 	int level;
@@ -2175,7 +2176,7 @@ setpolicy(int net, struct addrinfo *res,
 	}
 	level = res->ai_family == AF_INET ? IPPROTO_IP : IPPROTO_IPV6;
 	optname = res->ai_family == AF_INET ? IP_IPSEC_POLICY : IPV6_IPSEC_POLICY;
-	if (setsockopt(net, level, optname, buf, ipsec_get_policylen(buf)) < 0){
+	if (setsockopt(netw, level, optname, buf, ipsec_get_policylen(buf)) < 0){
 		perror("setsockopt");
 		return -1;
 	}
@@ -2189,14 +2190,15 @@ int
 tn(int argc, char *argv[])
 {
     struct addrinfo hints, *res, *res0;
-    char *cause = "telnet: unknown";
+    const char *cause = "telnet: unknown";
     int error;
 #if	defined(IP_OPTIONS) && defined(IPPROTO_IP)
     char *srp = 0;
-    unsigned long srlen;
+    long srlen;
     int proto, opt;
 #endif
-    char *cmd, *hostp = 0, *portp = 0;
+    char *cmd, *hostp = 0;
+    const char *portp = 0;
     const char *user = 0;
 
     if (connected) {
@@ -2384,8 +2386,8 @@ tn(int argc, char *argv[])
 	}
     }
     if (user) {
-	env_define((unsigned char *)"USER", (unsigned char *)user);
-	env_export((unsigned char *)"USER", NULL);
+	env_define((const unsigned char *)"USER", __UNCONST(user));
+	env_export((const unsigned char *)"USER", NULL);
     }
     (void) call(status, "status", "notmuch", 0);
     telnet(user); 
@@ -2499,7 +2501,7 @@ getcmd(char *name)
 }
 
 void
-command(int top, char *tbuf, int cnt)
+command(int top, const char *tbuf, int cnt)
 {
     Command *c;
 

Index: src/usr.bin/telnet/externs.h
diff -u src/usr.bin/telnet/externs.h:1.35 src/usr.bin/telnet/externs.h:1.36
--- src/usr.bin/telnet/externs.h:1.35	Wed Jan  4 11:09:43 2012
+++ src/usr.bin/telnet/externs.h	Mon Jan  9 11:08:55 2012
@@ -1,4 +1,4 @@
-/*	$NetBSD: externs.h,v 1.35 2012/01/04 16:09:43 drochner Exp $	*/
+/*	$NetBSD: externs.h,v 1.36 2012/01/09 16:08:55 christos Exp $	*/
 
 /*
  * Copyright (c) 1988, 1990, 1993
@@ -201,7 +201,7 @@ char *telnet_getenv(char *);
 char *telnet_gets(char *, char *, int, int);
 
 /* commands.c */
-int send_tncmd(void (*)(int, int), char *, char *);
+int send_tncmd(void (*)(int, int), const char *, char *);
 void _setlist_init(void);
 void set_escape_char(char *);
 int set_mode(int);
@@ -212,22 +212,22 @@ int shell(int, char *[]);
 int quit(int, char *[]);
 int logout(int, char *[]);
 int env_cmd(int, char *[]);
-struct env_lst *env_find(unsigned char *);
+struct env_lst *env_find(const unsigned char *);
 void env_init(void);
-struct env_lst *env_define(unsigned char *, unsigned char *);
-struct env_lst *env_undefine(unsigned char *, unsigned char *);
-struct env_lst *env_export(unsigned char *, unsigned char *);
-struct env_lst *env_unexport(unsigned char *, unsigned char *);
-struct env_lst *env_send(unsigned char *, unsigned char *);
-struct env_lst *env_list(unsigned char *, unsigned char *);
+struct env_lst *env_define(const unsigned char *, unsigned char *);
+struct env_lst *env_undefine(const unsigned char *, unsigned char *);
+struct env_lst *env_export(const unsigned char *, unsigned char *);
+struct env_lst *env_unexport(const unsigned char *, unsigned char *);
+struct env_lst *env_send(const unsigned char *, unsigned char *);
+struct env_lst *env_list(const unsigned char *, unsigned char *);
 unsigned char *env_default(int, int );
-unsigned char *env_getvalue(unsigned char *);
-void env_varval(unsigned char *);
+unsigned char *env_getvalue(const unsigned char *);
+void env_varval(const unsigned char *);
 int auth_cmd(int, char *[]);
 int ayt_status(void);
 int encrypt_cmd(int, char *[]);
 int tn(int, char *[]);
-void command(int, char *, int);
+void command(int, const char *, int);
 void cmdrc(const char *, const char *);
 struct addrinfo;
 int sourceroute(struct addrinfo *, char *, char **, int *, int*);
@@ -296,7 +296,7 @@ void env_opt(unsigned char *, int);
 void env_opt_start(void);
 void env_opt_start_info(void);
 void env_opt_add(unsigned char *);
-int opt_welldefined(char *);
+int opt_welldefined(const char *);
 void env_opt_end(int);
 int telrcv(void);
 int rlogin_susp(void);
@@ -329,13 +329,13 @@ void upcase(char *);
 int SetSockOpt(int, int, int, int);
 void SetNetTrace(char *);
 void Dump(int, unsigned char *, int);
-void printoption(char *, int, int );
+void printoption(const char *, int, int );
 void optionstatus(void);
 void printsub(int, unsigned char *, int);
 void EmptyTerminal(void);
 void SetForExit(void);
 void Exit(int) __attribute__((__noreturn__));
-void ExitString(char *, int) __attribute__((__noreturn__));
+void ExitString(const char *, int) __attribute__((__noreturn__));
 
 
 extern struct	termios new_tc;

Index: src/usr.bin/telnet/main.c
diff -u src/usr.bin/telnet/main.c:1.27 src/usr.bin/telnet/main.c:1.28
--- src/usr.bin/telnet/main.c:1.27	Mon Jul 21 10:19:26 2008
+++ src/usr.bin/telnet/main.c	Mon Jan  9 11:08:55 2012
@@ -1,4 +1,4 @@
-/*	$NetBSD: main.c,v 1.27 2008/07/21 14:19:26 lukem Exp $	*/
+/*	$NetBSD: main.c,v 1.28 2012/01/09 16:08:55 christos Exp $	*/
 
 /*
  * Copyright (c) 1988, 1990, 1993
@@ -39,7 +39,7 @@ __COPYRIGHT("@(#) Copyright (c) 1988, 19
 #if 0
 static char sccsid[] = "@(#)main.c	8.3 (Berkeley) 5/30/95";
 #else
-__RCSID("$NetBSD: main.c,v 1.27 2008/07/21 14:19:26 lukem Exp $");
+__RCSID("$NetBSD: main.c,v 1.28 2012/01/09 16:08:55 christos Exp $");
 #endif
 #endif /* not lint */
 
@@ -325,6 +325,7 @@ main(int argc, char *argv[])
 	argv += optind;
 
 	if (argc) {
+		static char ml[] = "-l";
 		char *args[7];
 		char ** volatile argp;	/* avoid longjmp clobbering */
 
@@ -333,7 +334,7 @@ main(int argc, char *argv[])
 			usage();
 		*argp++ = prompt;
 		if (user) {
-			*argp++ = "-l";
+			*argp++ = ml;
 			*argp++ = user;
 		}
 		*argp++ = argv[0];		/* host */

Index: src/usr.bin/telnet/sys_bsd.c
diff -u src/usr.bin/telnet/sys_bsd.c:1.32 src/usr.bin/telnet/sys_bsd.c:1.33
--- src/usr.bin/telnet/sys_bsd.c:1.32	Wed Nov 10 15:26:43 2004
+++ src/usr.bin/telnet/sys_bsd.c	Mon Jan  9 11:08:55 2012
@@ -1,4 +1,4 @@
-/*	$NetBSD: sys_bsd.c,v 1.32 2004/11/10 20:26:43 christos Exp $	*/
+/*	$NetBSD: sys_bsd.c,v 1.33 2012/01/09 16:08:55 christos Exp $	*/
 
 /*
  * Copyright (c) 1988, 1990, 1993
@@ -34,7 +34,7 @@
 #if 0
 from: static char sccsid[] = "@(#)sys_bsd.c	8.4 (Berkeley) 5/30/95";
 #else
-__RCSID("$NetBSD: sys_bsd.c,v 1.32 2004/11/10 20:26:43 christos Exp $");
+__RCSID("$NetBSD: sys_bsd.c,v 1.33 2012/01/09 16:08:55 christos Exp $");
 #endif
 #endif /* not lint */
 
@@ -75,7 +75,7 @@ int
 	tin,			/* Input file descriptor */
 	net;
 
-struct	termios old_tc = { 0 };
+struct	termios old_tc = { .c_iflag = 0 };
 extern struct termios new_tc;
 
 # ifndef	TCSANOW

Index: src/usr.bin/telnet/telnet.c
diff -u src/usr.bin/telnet/telnet.c:1.34 src/usr.bin/telnet/telnet.c:1.35
--- src/usr.bin/telnet/telnet.c:1.34	Fri Oct  7 12:30:17 2011
+++ src/usr.bin/telnet/telnet.c	Mon Jan  9 11:08:55 2012
@@ -1,4 +1,4 @@
-/*	$NetBSD: telnet.c,v 1.34 2011/10/07 16:30:17 christos Exp $	*/
+/*	$NetBSD: telnet.c,v 1.35 2012/01/09 16:08:55 christos Exp $	*/
 
 /*
  * Copyright (c) 1988, 1990, 1993
@@ -34,7 +34,7 @@
 #if 0
 static char sccsid[] = "@(#)telnet.c	8.4 (Berkeley) 5/30/95";
 #else
-__RCSID("$NetBSD: telnet.c,v 1.34 2011/10/07 16:30:17 christos Exp $");
+__RCSID("$NetBSD: telnet.c,v 1.35 2012/01/09 16:08:55 christos Exp $");
 #endif
 #endif /* not lint */
 
@@ -527,7 +527,7 @@ dooption(int option)
 #endif
 
 	    case TELOPT_XDISPLOC:	/* X Display location */
-		if (env_getvalue((unsigned char *)"DISPLAY"))
+		if (env_getvalue((const unsigned char *)"DISPLAY"))
 		    new_state_ok = 1;
 		break;
 
@@ -618,7 +618,7 @@ dontoption(int option)
  * duplicate, or verbose names (names with spaces).
  */
 
-static char *name_unknown = "UNKNOWN";
+static char name_unknown[] = "UNKNOWN";
 static char *unknown[] = { 0, 0 };
 
 char **
@@ -800,7 +800,7 @@ gettermname(void)
 		resettermname = 0;
 		if (tnamep && tnamep != unknown)
 			free(tnamep);
-		if ((tname = (char *)env_getvalue((unsigned char *)"TERM")) &&
+		if ((tname = (char *)env_getvalue((const unsigned char *)"TERM")) &&
 				(setupterm(tname, 1, &err) == 0)) {
 			tnamep = mklist(termbuf, tname);
 		} else {
@@ -872,14 +872,14 @@ suboption(void)
 	if (SB_EOF())
 	    return;
 	if (SB_GET() == TELQUAL_SEND) {
-	    long ospeed, ispeed;
+	    long osp, isp;
 	    unsigned char temp[50];
 	    int len;
 
-	    TerminalSpeeds(&ispeed, &ospeed);
+	    TerminalSpeeds(&isp, &osp);
 
 	    sprintf((char *)temp, "%c%c%c%c%ld,%ld%c%c", IAC, SB, TELOPT_TSPEED,
-		    TELQUAL_IS, (long)ospeed, (long)ispeed, IAC, SE);
+		    TELQUAL_IS, osp, isp, IAC, SE);
 	    len = strlen((char *)temp+4) + 4;	/* temp[3] is 0 ... */
 
 	    if (len < NETROOM()) {
@@ -975,7 +975,7 @@ suboption(void)
 	    unsigned char temp[50], *dp;
 	    int len;
 
-	    if ((dp = env_getvalue((unsigned char *)"DISPLAY")) == NULL) {
+	    if ((dp = env_getvalue((const unsigned char *)"DISPLAY")) == NULL) {
 		/*
 		 * Something happened, we no longer have a DISPLAY
 		 * variable.  So, turn off the option.
@@ -1106,7 +1106,7 @@ lm_will(unsigned char *cmd, int len)
     default:
 	str_lm[3] = DONT;
 	str_lm[4] = cmd[0];
-	if (NETROOM() > sizeof(str_lm)) {
+	if ((size_t)NETROOM() > sizeof(str_lm)) {
 	    ring_supply_data(&netoring, str_lm, sizeof(str_lm));
 	    printsub('>', &str_lm[2], sizeof(str_lm)-2);
 	}
@@ -1142,7 +1142,7 @@ lm_do(unsigned char *cmd, int len)
     default:
 	str_lm[3] = WONT;
 	str_lm[4] = cmd[0];
-	if (NETROOM() > sizeof(str_lm)) {
+	if ((size_t)NETROOM() > sizeof(str_lm)) {
 	    ring_supply_data(&netoring, str_lm, sizeof(str_lm));
 	    printsub('>', &str_lm[2], sizeof(str_lm)-2);
 	}
@@ -1183,7 +1183,7 @@ lm_mode(unsigned char *cmd, int len, int
 	str_lm_mode[4] = linemode;
 	if (!init)
 	    str_lm_mode[4] |= MODE_ACK;
-	if (NETROOM() > sizeof(str_lm_mode)) {
+	if ((size_t)NETROOM() > sizeof(str_lm_mode)) {
 	    ring_supply_data(&netoring, str_lm_mode, sizeof(str_lm_mode));
 	    printsub('>', &str_lm_mode[2], sizeof(str_lm_mode)-2);
 	}
@@ -1297,7 +1297,7 @@ unsigned char slc_import_def[] = {
 void
 slc_import(int def)
 {
-    if (NETROOM() > sizeof(slc_import_val)) {
+    if ((size_t)NETROOM() > sizeof(slc_import_val)) {
 	if (def) {
 	    ring_supply_data(&netoring, slc_import_def, sizeof(slc_import_def));
 	    printsub('>', &slc_import_def[2], sizeof(slc_import_def)-2);
@@ -1438,7 +1438,7 @@ slc_start_reply(void)
 void
 slc_add_reply(unsigned int func, unsigned int flags, cc_t value)
 {
-	if ((slc_replyp - slc_reply) + 6 > sizeof(slc_reply))
+	if ((size_t)(slc_replyp - slc_reply) + 6 > sizeof(slc_reply))
 		return;
 	if ((*slc_replyp++ = func) == IAC)
 		*slc_replyp++ = IAC;
@@ -1454,7 +1454,7 @@ slc_end_reply(void)
     int len;
 
     len = slc_replyp - slc_reply;
-    if (len <= 4 || (len + 2 > sizeof(slc_reply)))
+    if (len <= 4 || ((size_t)len + 2 > sizeof(slc_reply)))
 	return;
     *slc_replyp++ = IAC;
     *slc_replyp++ = SE;
@@ -1688,7 +1688,7 @@ env_opt_add(unsigned char *ep)
 }
 
 int
-opt_welldefined(char *ep)
+opt_welldefined(const char *ep)
 {
 	if ((strcmp(ep, "USER") == 0) ||
 	    (strcmp(ep, "DISPLAY") == 0) ||
@@ -2280,7 +2280,7 @@ telnet(const char *user)
 	send_will(TELOPT_LINEMODE, 1);
 	send_will(TELOPT_NEW_ENVIRON, 1);
 	send_do(TELOPT_STATUS, 1);
-	if (env_getvalue((unsigned char *)"DISPLAY"))
+	if (env_getvalue((const unsigned char *)"DISPLAY"))
 	    send_will(TELOPT_XDISPLOC, 1);
 	if (eight)
 	    tel_enter_binary(eight);

Index: src/usr.bin/telnet/utilities.c
diff -u src/usr.bin/telnet/utilities.c:1.22 src/usr.bin/telnet/utilities.c:1.23
--- src/usr.bin/telnet/utilities.c:1.22	Sat Oct  7 13:27:57 2006
+++ src/usr.bin/telnet/utilities.c	Mon Jan  9 11:08:55 2012
@@ -1,4 +1,4 @@
-/*	$NetBSD: utilities.c,v 1.22 2006/10/07 17:27:57 elad Exp $	*/
+/*	$NetBSD: utilities.c,v 1.23 2012/01/09 16:08:55 christos Exp $	*/
 
 /*
  * Copyright (c) 1988, 1993
@@ -34,7 +34,7 @@
 #if 0
 static char sccsid[] = "@(#)utilities.c	8.3 (Berkeley) 5/30/95";
 #else
-__RCSID("$NetBSD: utilities.c,v 1.22 2006/10/07 17:27:57 elad Exp $");
+__RCSID("$NetBSD: utilities.c,v 1.23 2012/01/09 16:08:55 christos Exp $");
 #endif
 #endif /* not lint */
 
@@ -172,7 +172,7 @@ Dump(int direction, unsigned char *buffe
 
 
 void
-printoption(char *direction, int cmd, int option)
+printoption(const char *direction, int cmd, int option)
 {
 	if (!showoptions)
 		return;
@@ -182,7 +182,7 @@ printoption(char *direction, int cmd, in
 		else
 		    fprintf(NetTrace, "%s IAC %d", direction, option);
 	} else {
-		char *fmt;
+		const char *fmt;
 		fmt = (cmd == WILL) ? "WILL" : (cmd == WONT) ? "WONT" :
 			(cmd == DO) ? "DO" : (cmd == DONT) ? "DONT" : 0;
 		if (fmt) {
@@ -654,7 +654,7 @@ printsub(
 	    break;
 
 	case TELOPT_STATUS: {
-	    char *cp;
+	    const char *cp;
 	    int j, k;
 
 	    fprintf(NetTrace, "STATUS");
@@ -768,7 +768,8 @@ printsub(
 		fprintf(NetTrace, "INFO ");
 	    env_common:
 		{
-		    int noquote = 2;
+		    static const char NQ[] = "\" ";
+		    const char *noquote = NQ;
 #if defined(ENV_HACK) && defined(OLD_ENVIRON)
 		    extern int old_env_var, old_env_value;
 #endif
@@ -780,14 +781,14 @@ printsub(
 			    if (pointer[0] == TELOPT_OLD_ENVIRON) {
 # ifdef	ENV_HACK
 				if (old_env_var == OLD_ENV_VALUE)
-				    fprintf(NetTrace, "\" (VALUE) " + noquote);
+				    fprintf(NetTrace, "%s(VALUE) ", noquote);
 				else
 # endif
-				    fprintf(NetTrace, "\" VAR " + noquote);
+				    fprintf(NetTrace, "%sVAR ", noquote);
 			    } else
 #endif /* OLD_ENVIRON */
-				fprintf(NetTrace, "\" VALUE " + noquote);
-			    noquote = 2;
+				fprintf(NetTrace, "%sVALUE ", noquote);
+			    noquote = NQ;
 			    break;
 
 			case NEW_ENV_VAR:
@@ -796,37 +797,37 @@ printsub(
 			    if (pointer[0] == TELOPT_OLD_ENVIRON) {
 # ifdef	ENV_HACK
 				if (old_env_value == OLD_ENV_VAR)
-				    fprintf(NetTrace, "\" (VAR) " + noquote);
+				    fprintf(NetTrace, "%s(VAR) ", noquote);
 				else
 # endif
-				    fprintf(NetTrace, "\" VALUE " + noquote);
+				    fprintf(NetTrace, "%sVALUE ", noquote);
 			    } else
 #endif /* OLD_ENVIRON */
-				fprintf(NetTrace, "\" VAR " + noquote);
-			    noquote = 2;
+				fprintf(NetTrace, "%sVAR ", noquote);
+			    noquote = NQ;
 			    break;
 
 			case ENV_ESC:
-			    fprintf(NetTrace, "\" ESC " + noquote);
-			    noquote = 2;
+			    fprintf(NetTrace, "%sESC ", noquote);
+			    noquote = NQ;
 			    break;
 
 			case ENV_USERVAR:
-			    fprintf(NetTrace, "\" USERVAR " + noquote);
-			    noquote = 2;
+			    fprintf(NetTrace, "%sUSERVAR ", noquote);
+			    noquote = NQ;
 			    break;
 
 			default:
 			    if (isprint(pointer[i]) && pointer[i] != '"') {
-				if (noquote) {
+				if (*noquote) {
 				    putc('"', NetTrace);
-				    noquote = 0;
+				    noquote = "";
 				}
 				putc(pointer[i], NetTrace);
 			    } else {
-				fprintf(NetTrace, "\" %03o " + noquote,
+				fprintf(NetTrace, "%s%03o ", noquote,
 							pointer[i]);
-				noquote = 2;
+				noquote = NQ;
 			    }
 			    break;
 			}
@@ -916,7 +917,7 @@ Exit(int returnCode)
 }
 
 void
-ExitString(char *string, int returnCode)
+ExitString(const char *string, int returnCode)
 {
     SetForExit();
     fwrite(string, 1, strlen(string), stderr);

Reply via email to