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

Bruce Evans bde at FreeBSD.org
Wed Aug 16 15:14:47 UTC 2017


Author: bde
Date: Wed Aug 16 15:14:46 2017
New Revision: 322579
URL: https://svnweb.freebsd.org/changeset/base/322579

Log:
  Fix setting of the border color.  Teken doesn't support syscons' escape
  sequence "ESC [ %d A" for this although that was used here.  I will fix
  teken later, but use the more portable ioctl KDSBORDER here.
  
  The ioctl is also much easier to use if you check that it works.  For
  -b, check it and complain and exit if it failed, so that it is more
  obvious that that vt doesn't support border colors.  Don't check it
  when restoring the border color in revert(), since revert() is used
  on vt for handling other errors.
  
  Fix nearby error handling and style.  For the error of an invalid
  color, revert() and print a specific error message using err() instead
  of not revert()ing and printing spam using usage().

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

Modified: head/usr.sbin/vidcontrol/vidcontrol.c
==============================================================================
--- head/usr.sbin/vidcontrol/vidcontrol.c	Wed Aug 16 13:44:46 2017	(r322578)
+++ head/usr.sbin/vidcontrol/vidcontrol.c	Wed Aug 16 15:14:46 2017	(r322579)
@@ -154,7 +154,7 @@ revert(void)
 
 	ioctl(0, VT_ACTIVATE, cur_info.active_vty);
 
-	fprintf(stderr, "\033[=%dA", cur_info.console_info.mv_ovscan);
+	ioctl(0, KDSBORDER, cur_info.console_info.mv_ovscan);
 	fprintf(stderr, "\033[=%dH", cur_info.console_info.mv_rev.fore);
 	fprintf(stderr, "\033[=%dI", cur_info.console_info.mv_rev.back);
 
@@ -910,11 +910,15 @@ set_border_color(char *arg)
 {
 	int color;
 
-	if ((color = get_color_number(arg)) != -1) {
-		fprintf(stderr, "\033[=%dA", color);
+	color = get_color_number(arg);
+	if (color == -1) {
+		revert();
+		errx(1, "invalid color '%s'", arg);
 	}
-	else
-		usage();
+	if (ioctl(0, KDSBORDER, color) != 0) {
+		revert();
+		err(1, "ioctl(KD_SBORDER)");
+	}
 }
 
 static void


More information about the svn-src-head mailing list