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);
 
_______________________________________________
svn-src-head@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"

Reply via email to