svn commit: r237777 - head/usr.sbin/vidcontrol

Andrey A. Chernov ache at FreeBSD.org
Fri Jun 29 12:55:36 UTC 2012


Author: ache
Date: Fri Jun 29 12:55:36 2012
New Revision: 237777
URL: http://svn.freebsd.org/changeset/base/237777

Log:
  Call set_terminal_mode() after video mode change, not before, because
  video mode change always reset terminal mode to xterm.
  It allows things like 'vidcontrol -T cons25 80x30' works as supposed,
  and allows 'allscreens_flags="-T cons25 80x30"' in /etc/rc.conf too.
  
  MFC after:      1 week

Modified:
  head/usr.sbin/vidcontrol/vidcontrol.c

Modified: head/usr.sbin/vidcontrol/vidcontrol.c
==============================================================================
--- head/usr.sbin/vidcontrol/vidcontrol.c	Fri Jun 29 12:11:31 2012	(r237776)
+++ head/usr.sbin/vidcontrol/vidcontrol.c	Fri Jun 29 12:55:36 2012	(r237777)
@@ -1192,15 +1192,13 @@ set_terminal_mode(char *arg)
 		fprintf(stderr, "\033[=T");
 	else if (strcmp(arg, "cons25") == 0)
 		fprintf(stderr, "\033[=1T");
-	else
-		usage();
 }
 
 
 int
 main(int argc, char **argv)
 {
-	char	*font, *type;
+	char    *font, *type, *termmode;
 	int	dumpmod, dumpopt, opt;
 	int	reterr;
 
@@ -1212,6 +1210,7 @@ main(int argc, char **argv)
 		err(1, "must be on a virtual console");
 	dumpmod = 0;
 	dumpopt = DUMP_FBF;
+	termmode = NULL;
 	while ((opt = getopt(argc, argv,
 	    "b:Cc:df:g:h:Hi:l:LM:m:pPr:S:s:T:t:x")) != -1)
 		switch(opt) {
@@ -1283,7 +1282,10 @@ main(int argc, char **argv)
 			set_console(optarg);
 			break;
 		case 'T':
-			set_terminal_mode(optarg);
+			if (strcmp(optarg, "xterm") != 0 &&
+			    strcmp(optarg, "cons25") != 0)
+				usage();
+			termmode = optarg;
 			break;
 		case 't':
 			set_screensaver_timeout(optarg);
@@ -1306,6 +1308,8 @@ main(int argc, char **argv)
 	}
 
 	video_mode(argc, argv, &optind);
+	if (termmode != NULL)
+		set_terminal_mode(termmode);
 
 	get_normal_colors(argc, argv, &optind);
 


More information about the svn-src-all mailing list