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

Bruce Evans bde at FreeBSD.org
Sat Aug 19 12:14:48 UTC 2017


Author: bde
Date: Sat Aug 19 12:14:46 2017
New Revision: 322693
URL: https://svnweb.freebsd.org/changeset/base/322693

Log:
  Reduce complexity and backwards compatibilty a little by removing new aliases
  and repurposing "blink".  Improve accuracy of documentation of historical
  mistakes and other bugs.
  
  "blink" now means "set the blink attribute for the target(s)" instead of
  "set the blink attribute and clear other attributes [and control flags]".
  It was even more confusing to use "blinking" for the single attribute to
  keep the old meaning for "blink".
  
  "destructive" is not as historically broken or gone as the previous version
  said.
  
  The bugs involving resetting from defaults are now understood and partly
  documented (the defaults are mis-initialized).

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

Modified: head/usr.sbin/vidcontrol/vidcontrol.1
==============================================================================
--- head/usr.sbin/vidcontrol/vidcontrol.1	Sat Aug 19 09:38:43 2017	(r322692)
+++ head/usr.sbin/vidcontrol/vidcontrol.1	Sat Aug 19 12:14:46 2017	(r322693)
@@ -137,26 +137,38 @@ The following override
 .Cm setting Ns s
 are available:
 .Bl -tag -width indent
-.It Cm block
+.It Cm normal
 Set to a block covering 1 character cell,
 with a configuration-dependent coloring
 that should be at worst inverse video.
-.It Cm blinkingblock
-Set to a blinking
-.Cm block .
-.It Cm underline
-Set to
+.It Cm destructive
+Set to a blinking sub-block with
 .Cm height
 scanlines starting at
 .Cm base .
-This only gives an underline in normal configurations.
-.It Cm blinkingunderline
-Set to a blinking
-.Cm underline .
+The name
+.Dq destructive
+is bad for backwards compatibility.
+This
+.Cm setting
+should not force destructiveness,
+and it now only gives destructiveness in some
+configurations (typically for hardware cursors
+in text mode).
+Blinking limits destructiveness.
+This
+.Cm setting
+should now be spelled
+.Cm normal , Ns Cm blink , Ns Cm noblock .
+A non-blinking destructive cursor would be unusable,
+so old versions of
+.Nm
+didn't support it,
+and this version doesn't have an override for it.
 .It Cm base Ns = Ns Ar value, Cm height Ns = Ns Ar value
 Set the specified scanline parameters.
-These parameters are only active in so-called
-.Cm char ( underline )
+These parameters are only active in
+.Cm noblock
 mode.
 .Cm value
 is an integer in any base supported by
@@ -164,7 +176,7 @@ is an integer in any base supported by
 Setting
 .Cm height
 to 0 turns off the cursor in
-.Cm char
+.Cm noblock
 mode.
 Negative
 .Ar value Ns s
@@ -174,73 +186,57 @@ Positive
 are clamped to fit in the character cell when the cursor is drawn.
 .El
 .Pp
-The following override
-.Cm setting Ns s
-are provided for backwards compatibility:
-.Bl -tag -width indent
-.It Cm normal
-Old name for
-.Cm block .
-.It Cm blink
-Old name for
-.Cm blinkingblock .
-.It Cm destructive
-Bad old name for
-.Cm blinkingunderline .
-The so-called
-.Cm destructive
-cursor was only destructive due to a bug that was fixed in
-.Fx 4.1.0 .
-The destruction in the non-blinking case was so large that
-this case was not supported by
-.Nm ,
-so no backwards compatible name is needed for this case.
-.El
-.Pp
 The following modifier
 .Cm setting Ns s
 are available:
 .Bl -tag -width indent
-.It Cm blinking , noblinking
+.It Cm blink , noblink
 Set or clear the blinking attribute.
-.It Cm char , nochar
-Set or clear the so-called
-.Cm char
+This is not quite backwards compatible.
+In old versions of
+.Nm , Cm blink
+was an override to a blinking block.
+.It Cm block , noblock
+Set or clear the
+.Cm block
 attribute.
-Names in this section follow the bad old names of
-flags in the implementation.
-.Cm char
-now means
-.Do
-activate the scanline parameters,
-and implement them using the best available method
-(at worst, actually use the old
-.Cm char
-method with its destruction fixed if it is configured,
-else silently ignore this flag).
-.Dc
+This attribute is the inverse of the flag
+.Dv CONS_CHAR_CURSOR
+in the implementation.
+It deactivates the scanline parameters,
+and expresses a preference for using a
+simpler method of implementation.
+Its inverse does the opposite.
+When the scanline parameters give a full block,
+this attribute reduces to a method selection bit.
+The
+.Cm block
+method tends to give better coloring.
 .It Cm hidden , nohidden
 Set or clear the hidden attribute.
+.El
+.Pp
+The following (non-sticky) flags control application of the
+.Cm setting Ns s :
+.Bl -tag -width indent
 .It Cm local
-Apply the changes (except for the
-.Cm local
-and
-.Cm reset
-control flags)
-to the current vty.
-The default is to apply them to all vtys.
+Apply the changes to the current vty.
+The default is to apply them to a global place
+and copy from there to all vtys.
 .It Cm reset
 Reset everything.
 The default is to not reset.
 When the
 .Cm local
-parameter is specified, the resetting is for the 
-current local settings to the current global settings.
-Otherwise, the resetting is for the current global
-settings to defaults configured a boot time.
-Beware that the scanline parameters and not automatically
-scaled by the font size and resetting tends to undo manual
-fixups for this.
+parameter is specified, the current local settings are reset
+to default local settings.
+Otherwise, the current global settings are reset to default
+global settings and then copied to the current and default
+settings for all vtys.
+The global defaults are decided (not quite right) at boot time
+and cannot be fixed up.
+The local defaults are obtained as above and cannot be fixed up
+locally.
 .El
 .It Fl d
 Print out current output screen map.

Modified: head/usr.sbin/vidcontrol/vidcontrol.c
==============================================================================
--- head/usr.sbin/vidcontrol/vidcontrol.c	Sat Aug 19 09:38:43 2017	(r322692)
+++ head/usr.sbin/vidcontrol/vidcontrol.c	Sat Aug 19 12:14:46 2017	(r322693)
@@ -630,36 +630,26 @@ parse_cursor_params(char *param, struct cshape *shape)
 	param = dupparam = strdup(param);
 	type = shape->shape[0];
 	while ((word = strsep(&param, ",")) != NULL) {
-		if (strcmp(word, "block") == 0)
+		if (strcmp(word, "normal") == 0)
 			type = 0;
-		else if (strcmp(word, "underline") == 0)
-			type = CONS_CHAR_CURSOR;
-		else if (strcmp(word, "blinkingblock") == 0)
-			type = CONS_BLINK_CURSOR;
-		else if (strcmp(word, "blinkingunderline") == 0)
-			type = CONS_BLINK_CURSOR | CONS_CHAR_CURSOR;
-		else if (strncmp(word, "base=", 5) == 0)
-			shape->shape[1] = strtol(word + 5, NULL, 0);
-		else if (strncmp(word, "height=", 7) == 0)
-			shape->shape[2] = strtol(word + 7, NULL, 0);
-		else if (strcmp(word, "blinking") == 0)
-			type |= CONS_BLINK_CURSOR;
-		else if (strcmp(word, "normal") == 0)
-			type = 0;
-		else if (strcmp(word, "blink") == 0)
-			type = CONS_BLINK_CURSOR;
 		else if (strcmp(word, "destructive") == 0)
 			type = CONS_BLINK_CURSOR | CONS_CHAR_CURSOR;
-		else if (strcmp(word, "noblinking") == 0)
+		else if (strcmp(word, "blink") == 0)
+			type |= CONS_BLINK_CURSOR;
+		else if (strcmp(word, "noblink") == 0)
 			type &= ~CONS_BLINK_CURSOR;
-		else if (strcmp(word, "char") == 0)
-			type |= CONS_CHAR_CURSOR;
-		else if (strcmp(word, "nochar") == 0)
+		else if (strcmp(word, "block") == 0)
 			type &= ~CONS_CHAR_CURSOR;
+		else if (strcmp(word, "noblock") == 0)
+			type |= CONS_CHAR_CURSOR;
 		else if (strcmp(word, "hidden") == 0)
 			type |= CONS_HIDDEN_CURSOR;
 		else if (strcmp(word, "nohidden") == 0)
 			type &= ~CONS_HIDDEN_CURSOR;
+		else if (strncmp(word, "base=", 5) == 0)
+			shape->shape[1] = strtol(word + 5, NULL, 0);
+		else if (strncmp(word, "height=", 7) == 0)
+			shape->shape[2] = strtol(word + 7, NULL, 0);
 		else if (strcmp(word, "local") == 0)
 			type |= CONS_LOCAL_CURSOR;
 		else if (strcmp(word, "reset") == 0)


More information about the svn-src-all mailing list