History log of /freebsd-current/usr.sbin/vidcontrol/vidcontrol.c
Revision Date Author Comments
# eba230af 25-Sep-2023 John Baldwin <jhb@FreeBSD.org>

Purge more stray embedded $FreeBSD$ strings

These do not use __FBSDID but instead use bare char arrays.

Reviewed by: imp, emaste
Differential Revision: https://reviews.freebsd.org/D41957


# c71ae91f 06-Apr-2022 Ed Maste <emaste@FreeBSD.org>

vidcontrol: disable p, P, and H when vt(4) is in use

These options use the CONS_SCRSHOT ioctl to capture the contents of the
current console, which is not yet supported by vt(4). Disable the
options when vt(4) is in use rather than emitting a possibly confusing
error message.

This change should be reverted if CONS_SCRSHOT is implemented for vt(4).

PR: 263099
MFC after: 1 week
Sponsored by: The FreeBSD Foundation


# e7fd9688 14-Jun-2020 Toomas Soome <tsoome@FreeBSD.org>

Move font related data structured to sys/font.c and update vtfontcvt

Prepare support to be able to handle font data in loader, consolidate
data structures to sys/font.h and update vtfontcvt.

vtfontcvt update is about to output set of glyphs in form of C source,
the implementation does allow to output compressed or uncompressed font
bitmaps.

Reviewed by: bcr
Differential Revision: https://reviews.freebsd.org/D24189


# b96ab410 07-Apr-2019 Bruce Evans <bde@FreeBSD.org>

Fix restoring the geometry when recovering from an error. Just restore the
previous geometry, and don't do extra work to calculate the default geometry
so as to reset to that.


# 4138acc5 22-Feb-2019 Bruce Evans <bde@FreeBSD.org>

Oops, actually fix warnings from -Wpointer-sign.


# 15d64f4e 21-Feb-2019 Bruce Evans <bde@FreeBSD.org>

Fix warnings from -Wpointer-sign.


# d09131e0 21-Feb-2019 Bruce Evans <bde@FreeBSD.org>

Connect the restored dumb and sc terminal emulators to the kernel build.
Add or fix options to control static and dynamic configuration. Keep
the default of scteken, but default to statically configuring all available
emulators (now 3 instead of 1).

The dumb emulator is almost usable. libedit and libreadline handle
dumb terminals perfectly for at least shell history. less(1) works
as well as possible except on exit. But curses programs make messes.
The dumb emulator has strange color support, with 2 dumb colors for
normal output but fancy colorization for the cursor, mouse pointer and
(with a non-dumb initial emulator) for low-level console output.

Using the sc emulator instead of the default of scteken fixes at least
the following bugs:
- NUL is a printing character in cons25 but not in teken
- teken doesn't support fixed colors for "reverse" video.
- The best versions of sc are about 10 times faster than scteken (for
printing to the frame buffer). This version is only about 5 times
faster.

Fix configuration features:
- make SC_DFLT_TERM (for setting the initial emulator) a normal option.

Add configuration features:
- negative options SC_NO_TERM_* for omitting emulators in the static config.
Modules for emulators might work, but I don't know of any
- vidcontrol -e shows the available emulators
- vidcontrol -E <emulator> sets the active emulator.


# 1de7b4b8 27-Nov-2017 Pedro F. Giffuni <pfg@FreeBSD.org>

various: general adoption of SPDX licensing ID tags.

Mainly focus on files that use BSD 2-Clause license, however the tool I
was using misidentified many licenses so this was mostly a manual - error
prone - task.

The Software Package Data Exchange (SPDX) group provides a specification
to make it easier for automated tools to detect and summarize well known
opensource licenses. We are gradually adopting the specification, noting
that the tags are considered only advisory and do not, in any way,
superceed or replace the license texts.

No functional change intended.


# 82edb108 21-Nov-2017 Ed Maste <emaste@FreeBSD.org>

vidcontrol: correct history size error message

`vidcontrol -h 0` is acceptable, so be explicit that it's less than zero
that is not allowed.

Reported by: Siva Mahadevan
Sponsored by: The FreeBSD Foundation


# 9bc7c363 25-Aug-2017 Bruce Evans <bde@FreeBSD.org>

Support setting the colors of cursors for the VGA renderer.

Advertise this by changing the defaults to mostly red. If you don't like
this, change them (almost) back using:
vidcontrol -c charcolors,base=7,height=0
vidcontrol -c mousecolors,base=0[,height=15]

The (graphics mode only) mouse cursor colors were hard-coded to a black
border and lightwhite interior. Black for the border is the worst
possible default, since it is the same as the default black background
and not good for any dark background. Reversing this gives the better
default of X Windows. Coloring everything works better still. Now
the coloring defaults to a lightwhite border and red interior.

Coloring for the character cursor is more complicated and mode
dependent. The new coloring doesn't apply for hardware cursors. For
non-block cursors, it only applies in graphics mode. In text mode,
the cursor color was usually a hard-coded (dull)white for the background
only, unless the foreground was white when it was a hard-coded black
for the background only, unless the foreground was white and the
background was black it was reverse video. In graphics mode, it was
always reverse video for the block cursor. Reverse video is worse,
especially over cutmarking regions, since cutmarking still uses simple
reverse video (nothing better is possible in text mode) and double
reverse video for the cursor gives normal video. Now, graphics mode
uses the same algorithm as the best case for text mode in all cases
for graphics mode. The hard-coded sequence { white, black, } for the
background is now { red, white, blue, } where the first 2 colors can
be configured. The blue color at the end is a sentinel which prevents
reverse video being used in most cases but breaks the compatibility
setting for white on black and black on white characters. This will
be fixed later. The compatibility setting is most needed for mono modes.

The previous commit to syscons.c changed sc_cnterm() to be more careful.
It followed null pointers in some cases. But sc_cnterm() has been
unreachable for 15+ years since changes for multiple consoles turned
off calls to the the cnterm destructor for all console drivers. Before
them, it was only called at boot time. So no driver with an attached
console has ever been unloadable and not even the non-console destructors
have been tested much.


# dd51fceb 18-Aug-2017 Bruce Evans <bde@FreeBSD.org>

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).


# eb4fa1ad 17-Aug-2017 Bruce Evans <bde@FreeBSD.org>

I misplaced a newline in the previous commit. Fix this, and move line
breaks in the vt case to the same places that the man(1) puts then in
the SYNOPSIS. This was already done for the syscons case. Man pages
can't depend on the driver, and the SYNOPSIS is hard-coded for syscons
except for -f where it is hard-coded for vt. The usage message reverses
this for sc. The only other differences are whitespace and removing
-[dL] and -l for vt.


# 92dedf1b 17-Aug-2017 Bruce Evans <bde@FreeBSD.org>

Update vidcontrol -c to support all cursor appearance setting
capabilities.

Most of the capabilities (all of the arcane ones) were in FreeBSD-2.0.5,
but were harder to use then, and vidcontrol didn't try. FreeBSD-4.1.0
added per-vty support, fixed the destructivness of the "destructive"
cursor, and improved APIs. Start using the new APIs, support all of
their capabilities, and document all of the capabilities and some of
the historical mistakes.

vt doesn't support any of this before or after the change.

Fix minor unrelated bitrot in the usage message for the syscons case.


# 03096857 16-Aug-2017 Bruce Evans <bde@FreeBSD.org>

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().


# 6be33b83 03-Apr-2017 Bruce Evans <bde@FreeBSD.org>

Fix a missing const in my previous commit which broke the build at
normal WARNS.

Reported by: lwhsu


# b60e1b81 03-Apr-2017 Bruce Evans <bde@FreeBSD.org>

Show high (blinking foreground/bright background) background colors. Format
output and source better for this. Format output for 40 columns if there
are less than 80 columns.


# 8f92a81b 03-Apr-2017 Bruce Evans <bde@FreeBSD.org>

Remove the global variable 'info' and fix associated bugs and style bugs.

This variable was used 4 times in 1 function and all uses were wrong.
The 4 uses were in he test_frame() (show) function, to try to restore
4 colors, 2 unnecessarily and these 2 now broken. This was wrong
because it is the previous colors that must be restored, but the global
holds the original colors. Excessive setting of colors at the end
restored the previous colors correctly in most cases, but I removed
this a couple of revisions ago.

Originally, this variable had 1 correct use, to test for being on a vty
as a side effect of initializing it. This is now down in init(), and
init() also leaves a better-named global with the same contents.

Fix this by reading the current console info into a local variable in
test_frame(), as is done for several other functions. Fix style bugs
in this reading for all callers:
- extra blank lines
- all error messages different. The first one now in init() is not as
specific as the old one, but it is after a different specific one for
another ioctl and is unlikely to be reached when the first ioctl
succeeds. Ones after the first are to repeat the ioctl, so are even
more likely to be reached. The correctness of full removal of the
old global depends on the error handling for failure to initialize
it being unreachable.
- err() instead of warn() for failure in load_font(). This is almost
unreachable, and it makes no sense to continue after undoing previous
changes with revert().
- unreachable return after err() for failure in dump_screen().

Undo large renaming of local variables from the good name 'info' to the
bad name _info, which was done to protect the buggy global's bad name
from -Wshadow warnings.


# 2b881cf4 03-Apr-2017 Bruce Evans <bde@FreeBSD.org>

Save errno across revert().

Change 25 uses of errc() to err(). 2 of these were correct. 23 used
errno for the arg so were just a verbose spelling of err(). 5 of these
were just style bugs, and 18 depended on revert() saving errno.

1 warn() also depended on revert() saving errno.

Remove 2 warnx()'s that duplicate the message from a later errx().
These used to be before returns, and should have reported errno in
some cases. errno is also not reported for for openguess() failures.

Only "restore" the video mode in revert() if the mode was just set
(necessarily partially). Setting the mode to its current setting
doesn't "restore" it, but resets it, with the least harmful change
being to clear the screen. revert() is called even for some harmless
syntax errors and usually did nothing except reset the mode. Now it
usually does nothing. The only things that it tries to restore apart
from the mode are the active vty number, the screen map, 2 colors that
only need to be restored (only after a mode change) to fix kernel bugs,
and 3 colors that can't be restored due to kernel bugs. (This is
mostly for sc, since vt doesn't support mode changes.)

revert() is not called for syntax and setting errors after [mode], so
the mode reset is only done for failures to set raster mode after
setting graphics mode. normal colors can only be set after [mode],
and that is why reverting them should be unnecessary.


# 1b8c842e 03-Apr-2017 Bruce Evans <bde@FreeBSD.org>

Fix some parsing and error handling bugs.

r146736 added an undocumented syntax and many bugs handling it. The
documented syntax is "... [mode] [fg [bg]] [show]", where it is critical
for reducing ambiguity and keeping things simple that the mode is
parsed first. r146736 added buggy support for "... [mode] [fg [bg]]
[show] [mode] [fg [bg]]". One error was that after for failing to set
a partially-supported graphics mode, argv[optind] remains pointing to
the mode so doesn't match the first [fg [bg]], so the setting is
attempted again, with slightly worse error handling.

Fix this by removing it (support for the trailing '[mode] [fg [bg]]')
and cleaning up. The cleanups are mostly to remove convolutions and
bugs that didn't work to handle the ambiguous syntax '[fg [bg]] [fg [bg]]'
when [mode] and [show] are not present. Globals were set to allow
repeating the color settings at the end. The functions that set the
colors earlier were misnamed from set* to get*. All that they "got" is
is settings from argv. They applied the settings to the kernel and
the globals.

Fix restoration of colors in revert() by restoring 2 after the mode
change. Colors should not need to be restored, but a bug in scteken
clobbers them on any mode change, including ones for restoration. Don't
move the restoration of the other 3. Teken doesn't clobber them on
mode changes because it doesn't support them at all (sc still supports
the border color, but only using a non-teken ioctl).

Add restoration of colors after a successful mode change to work around
the scteken bug there too. The bug was previously masked by the general
setting of colors at the end.

Fix a longstanding parsing/error handling bug by exiting almost immediately
after matching the [mode] arg but failing to set the mode. Just revert
if necessary. Don't return to continue parsing but do it wrong. This
bug caused spamming the output with a usage() message and exiting with
status 1 whenever [mode] is not present bug [fg [bg]] or [show]. The
exit code 1 was actualy an ambiguous internal code for failure to match
[mode] or failure to set [mode]. This 1 was obfuscated by spelling it
EXIT_FAILURE, but actual exit codes spell EXIT_FAILURE as 1. Remove
another global which could have been used to disambiguate this but was
only used to micro-optimize the (unnecessary except for other bugs)
setting of colors at the end.


# 12dd1cd3 02-Apr-2017 Bruce Evans <bde@FreeBSD.org>

Remove checks that background (bg) colors are not bright and buggy
attempts to keep them that way. The bg brightness bit is interpreted
as blinking in some modes, but it would barely be useful to disallow
setting it when it would give blinking in code which knew when that
is. The old code mostly knew this wrong, and added handling errors.
It is in fact impossible to know, since future mode switches may
change the meaning of the bit many times on the screen and in history.

Old versions of vidcontrol disallowed bg color numbers >= 8 in all
cases. This is very VGA/syscons-centric. Syscons uses the VGA defaults
of blinking fg instead of bright bg in text mode and bright bg in
graphics mode. On VGA, this is very easy to toggle at any time, and
vt blows away the VGA text mode default at boot time.

r146736 changed this to try to allow bg color numbers in graphics mode
only. This is even more VGA/syscons-centric, and there are many bugs
in this, and many nearby bugs in the parser. These are increased or
decreased by differences and bugs in vt and teken.

Perhaps the most obvious bug was that almost any vidcontrol command
which changes any color or the mode causes an error if the initial fg
color is bright. E.g., in syscons text mode, after "vidcontrol
lightwhite" to make the fg bright, another "vidcontrol lightwhite" is
rejected and buggy fixup code changes the fg to white. This is because
the bright fg color creates a bright bg color for the phantom reverse
video attribute, so was rejected. (The reverse video attribute is
phantom because teken ignores the user's setting of it and simply
reverses the fg attributes to create the bg attributes. Sometimes
some layer masks off the brightness/blinking bit, but not here.)

Perhaps the next most obvious one was that "vidcontrol lightgreen
lightblue" was misparsed as 2 settings of the fg instead of 1 setting
of the fg and 1 invalid setting of the bg. This is because the
parser supports an undocumented syntax with many parsing bugs (an
ambiguity gives this one).

I recently fix bugs in teken that broke setting of bright fg's and
bg's in the normal way. This gave more settings of then, so the old
bugs showed up more often.


# 2b375b4e 27-Jan-2017 Yoshihiro Takahashi <nyan@FreeBSD.org>

Remove pc98 support completely.
I thank all developers and contributors for pc98.

Relnotes: yes


# becf2d11 05-Nov-2016 Ed Maste <emaste@FreeBSD.org>

vidcontrol: use calloc where appropriate

Reported by: kib


# aba6e414 04-Nov-2016 Ed Maste <emaste@FreeBSD.org>

vidcontrol: improve error handling in vt(4) font loading

PR: 209078
Reported by: ecturt@gmail.com
Reviewed by: Oliver Pinter
Differential Revision: https://reviews.freebsd.org/D8176


# 449d10e5 19-Jan-2016 Edward Tomasz Napierala <trasz@FreeBSD.org>

Add "vidcontrol -i active", to print out active vty number,
to be used with eg "vidcontrol -s".

Reviewed by: emaste@
MFC after: 1 month
Sponsored by: The FreeBSD Foundation
Differential Revision: https://reviews.freebsd.org/D4968


# 16028f6a 20-Apr-2015 Ed Maste <emaste@FreeBSD.org>

vidcontrol: skip invalid video modes returned by vt(4)

vt(4) has a stub CONS_MODEINFO ioctl that does not provide any data
but returns success. This needs to be fixed in the kernel, but address
it in vidcontrol(1) as well in case it's run on an older kernel.

Reviewed by: bde
Sponsored by: The FreeBSD Foundation


# bbfcc42e 15-Apr-2015 Ed Maste <emaste@FreeBSD.org>

vidcontrol: make size argument optional again for syscons

r273544 changed the -f option allow no arguments in vt mode (used to
reset the font back to the default), but broke the optionality of the
size argument for syscons. Drop the required argument from syscons'
optstring for -f so the optional argument handler works the same way
for both syscons and vt.

Reported by: bde
Sponsored by: The FreeBSD Foundation


# 069f1c25 22-Oct-2014 Jean-Sébastien Pédron <dumbbell@FreeBSD.org>

vt(4): Add PIO_VFONT_DEFAULT ioctl to restore the default builtin font

To restore the default font using vidcontrol(1), use the "-f" flag
without an argument:
vidcontrol -f < /dev/ttyv0

PR: 193910
Differential Revision: https://reviews.freebsd.org/D971
Submitted by: Marcin Cieslak <saper@saper.info>
Reviewed by: ray@, emaste@
Approved by: ray@
MFC after: 1 week


# 6c79f788 02-Jul-2014 Ed Maste <emaste@FreeBSD.org>

Fix vt(4) detection in kbdcontrol and vidcontrol

As sc(4) and vt(4) coexist and are both enabled in GENERIC, the existence
of a vt(4) sysctl is not sufficient to determine that vt(4) is in use.

Reported by: Trond Endrestøl


# 30bf10ef 29-May-2014 Aleksandr Rybalko <ray@FreeBSD.org>

o Teach vidcontrol(1) how to load vt(4) font.
o Teach vidcontrol(1) to distinct which virtual terminal system is running now.
o Load vt(4) fonts from different location.
o Add $FreeBSD$ tag for path.h.

Tested by: Claude Buisson <clbuisson@orange.fr>

MFC after: 7 days
Sponsored by: The FreeBSD Foundation


# a8de143c 11-May-2013 Eitan Adler <eadler@FreeBSD.org>

The M_VESA_MODE_MAX is latest valid mode - not the first invalid.
Permit its use in vidcontrol -i

PR: bin/119483
Submitted by: Dan Lukes <dan@obluda.cz>
Arrival-Date: Wed Jan 09 10:30:01 UTC 2008
Reviewed by: ed
MFC after: 3 days


# bf70bece 19-Oct-2012 Ed Schouten <ed@FreeBSD.org>

More -Wmissing-variable-declarations fixes.

In addition to adding `static' where possible:

- bin/date: Move `retval' into extern.h to make it visible to date.c.
- bin/ed: Move globally used variables into ed.h.
- sbin/camcontrol: Move `verbose' into camcontrol.h and fix shadow warnings.
- usr.bin/calendar: Remove unneeded variables.
- usr.bin/chat: Make `line' local instead of global.
- usr.bin/elfdump: Comment out unneeded function.
- usr.bin/rlogin: Use _Noreturn instead of __dead2.
- usr.bin/tset: Pull `Ospeed' into extern.h.
- usr.sbin/mfiutil: Put global variables in mfiutil.h.
- usr.sbin/pkg: Remove unused `os_corres'.
- usr.sbin/quotaon, usr.sbin/repquota: Remove unused `qfname'.


# 436f6474 28-Jun-2012 Andrey A. Chernov <ache@FreeBSD.org>

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


# 3df5ecac 30-Dec-2011 Ulrich Spörlein <uqs@FreeBSD.org>

Spelling fixes for usr.sbin/


# f76b3199 29-Dec-2011 Ulrich Spörlein <uqs@FreeBSD.org>

Reencode files to UTF-8. Drop CP1252 em-dash.


# 3be02c20 11-Dec-2011 Ed Schouten <ed@FreeBSD.org>

Add static keywords to vidcontrol(1).

While there, remove the false optimisation of the colors array. It seems
that changing it to an array of pointers instead of a 16x16 array does
not cause any increase in binary size at all.


# a7d5f7eb 19-Oct-2010 Jamie Gritton <jamie@FreeBSD.org>

A new jail(8) with a configuration file, to replace the work currently done
by /etc/rc.d/jail.


# 3a0a3e04 31-Mar-2010 Jung-uk Kim <jkim@FreeBSD.org>

MFC: r205855

Print memory model of the video mode except for planar memory model.
'P', 'D', 'C', 'H', and 'V' mean packed pixel, direct color, CGA, Hercules,
and VGA X memory models respectively where they have fixed number of planes.


# f46f4ae1 29-Mar-2010 Jung-uk Kim <jkim@FreeBSD.org>

Print memory model of the video mode except for planar memory model.
'P', 'D', 'C', 'H', 'V' mean packed pixel, direct color, CGA, Hercules,
VGA X memory models respectively where they have fixed number of planes.


# fe0506d7 09-Mar-2010 Marcel Moolenaar <marcel@FreeBSD.org>

Create the altix project branch. The altix project will add support
for the SGI Altix 350 to FreeBSD/ia64. The hardware used for porting
is a two-module system, consisting of a base compute module and a
CPU expansion module. SGI's NUMAFlex architecture can be an excellent
platform to test CPU affinity and NUMA-aware features in FreeBSD.


# c8f1c817 11-Nov-2009 Ed Schouten <ed@FreeBSD.org>

Add a new flag to vidcontrol, -T, that allows terminal mode switching.

This will make it more easy for people to experiment with TERM=xterm.
Instead of echoing these strange escape sequences, I can just instruct
them to run `vidcontrol -T xterm'.


# d7f03759 19-Oct-2008 Ulf Lilleengen <lulf@FreeBSD.org>

- Import the HEAD csup code which is the basis for the cvsmode work.


# eb0fa6f5 26-Sep-2006 Ruslan Ermilov <ru@FreeBSD.org>

Remove bogus casts of valid integer ioctl() arguments.


# 387d5354 16-Sep-2005 Craig Rodrigues <rodrigc@FreeBSD.org>

Fix so that color changes are not lost when the video mode changes.

PR: bin/83553
Submitted by: Dan Lukes <dan at obluda dot cz>


# f1121206 29-May-2005 Xin LI <delphij@FreeBSD.org>

Add VESA mode support for syscons, which enables the support of 15, 16,
24, and 32 bit modes. To use that, syscons(4) must be built with
the compile time option 'options SC_PIXEL_MODE', and VESA support (a.k.a.
vesa.ko) must be either loaded, or be compiled into the kernel.

Do not return EINVAL when the mouse state is changed to what it already is,
which seems to cause problems when you have two mice attached, and
applications are not likely obtain useful information through the EINVAL
caused by showing the mouse pointer twice.

Teach vidcontrol(8) about mode names like MODE_<NUMBER>, where <NUMBER> is
the video mode number from the vidcontrol -i mode output. Also, revert the
video mode if something fails.

Obtained from: DragonFlyBSD
Discussed at: current@ with patch attached [1]
PR: kern/71142 [2]
Submitted by: Xuefeng DENG <dsnofe at msn com> [1],
Cyrille Lefevre <cyrille dot lefevre at laposte dot net> [2]


# 5ad9a2d7 15-May-2005 Yoshihiro Takahashi <nyan@FreeBSD.org>

Use \033 instead of \e because \e is not a standard.

Noticed by: stefanf
Reviewed by: diff(1)


# 947d66c0 15-May-2005 Yoshihiro Takahashi <nyan@FreeBSD.org>

A foreground color number on pc98 console is 7 not 15.


# 2d8cb12d 15-May-2005 Yoshihiro Takahashi <nyan@FreeBSD.org>

Use \e for escape char instead of ^[ directly.


# 9a03b27d 12-Jan-2005 Xin LI <delphij@FreeBSD.org>

WANRS=6 cleanup for vidcontrol(1):
- Use foo(void) instead of foo().
- Use static where applicable.
- Apply more const's when passing parameters
- signed/unsigned madness
- Avoid namespace collision by adding underscores.
- For 64-bit architectures, use %zx instead of %x
when necessary.
- When storing constants, use const instead of
variable.
- Bump WARNS?= from 2 to 6


# a0503c27 18-Sep-2003 Eivind Eklund <eivind@FreeBSD.org>

Propagate ioctl() failure to exit status


# c449db6a 19-Aug-2002 Maxim Sobolev <sobomax@FreeBSD.org>

Add a new `-H' modifier, which when combined with `-p' or `-P' allows to dump
full console history.


# 5d1bb94f 09-Jul-2002 Dima Dorfman <dd@FreeBSD.org>

Remove some missing words.

Submitted by: roam


# 5ec065ee 09-Jul-2002 Dima Dorfman <dd@FreeBSD.org>

Deuglify the usage message by making it look more like the synopsis in
the manual page.


# b471ed9e 09-Jul-2002 Dima Dorfman <dd@FreeBSD.org>

Add an -S option that allows the user to disable vty switching. It is
implemented using a new VT_LOCKSWITCH ioctl. Although it is possible
to implement something like this by VT_SETMODEing to VT_PROCESS and
never releasing the vty, that method has a number of downsides, the
biggest of which is that some program has to stay resident for the
lock to be in effect.

Reviewed by: roam, sheldonh


# 21dc7d4f 02-Jun-2002 Jens Schweikhardt <schweikh@FreeBSD.org>

Fix typo in the BSD copyright: s/withough/without/

Spotted and suggested by: des
MFC after: 3 weeks


# 3646fbda 16-Mar-2002 Maxim Sobolev <sobomax@FreeBSD.org>

When loading a font allow suffix specifying its size be omited, in which
case use size of the currently displaying font as a suffix. For example,
when the when the size of the currently displayed font is 8x8 the
following command will load koi8-r-8x8.fnt.

# vidcontrol -f koi8-r

MFC after: 2 weeks


# e64c88b2 22-Jul-2001 Kazutaka YOKOTA <yokota@FreeBSD.org>

Use the correct ioctl command to set a VESA mode.

PR: 24423
MFC after: 10 days


# 031c57af 28-May-2001 Dag-Erling Smørgrav <des@FreeBSD.org>

Move the scrollback controls from kbdcontrol to vidcontrol.
Also fix some style bugs in the code and poor language in the man pages.

Reviewed by: sobomax


# 1f22a113 19-May-2001 Maxim Sobolev <sobomax@FreeBSD.org>

- Sort usage() output;
- sync usage() with reality and manpage;
- display usage() even if terminal is not a syscons.

Submitted by: ru, sobomax


# d02ca551 19-May-2001 Maxim Sobolev <sobomax@FreeBSD.org>

Move scrshot(1) functionality into vidcontrol(1).

Suggested by: many
Not objected to by: nik (scrshot co-author)


# e4ef2fa2 21-Apr-2001 Andrey A. Chernov <ache@FreeBSD.org>

Proper upper limit for mousechar start is UCHAR_MAX - 3, not UCHAR_MAX

PR: 24437
Submitted by: Cejka Rudolf <cejkar@dcse.fee.vutbr.cz>


# 5e0db936 09-Apr-2001 Maxim Sobolev <sobomax@FreeBSD.org>

Allow user to omit font size specification when loading a font. In addition
the following fixes had been made:

- check the size of the font being loaded and compare it with possible sizes
to minimise possibility of loading something that is not a fontfile at all
and turning console screen into garbage;

- prevent buffer overflow (and coredump as a result ) when loading valid
uuencoded file with size that exceeds allocated buffer;

- correct and improve several error messages.

Approved by: -audit, -hackers (silently)


# acdb2839 25-Jan-2001 Maxim Sobolev <sobomax@FreeBSD.org>

New option `-g' to allow selecting custom text geometry in VESA_800x600 raster
text mode. For example `vidcontrol -g 100x37 VESA_800x600' will setup 100x37
text mode as opposed to default 80x25.

Reviewed by: imp


# 00d25f51 08-Oct-2000 Poul-Henning Kamp <phk@FreeBSD.org>

Initiate deorbit burn sequence for <machine/console.h>.

Replace all in-tree uses with necessary subset of <sys/{fb,kb,cons}io.h>.
This is also the appropriate fix for exo-tree sources.

Put warnings in <machine/console.h> to discourage use.
November 15th 2000 the warnings will be converted to errors.
January 15th 2001 the <machine/console.h> files will be removed.


# e2f29c6e 11-Jan-2000 Kazutaka YOKOTA <yokota@FreeBSD.org>

Make the mouse cursor char code configurable via the CONS_MOUSECTL
ioctl.

By popular demand.


# 39b235ef 15-Oct-1999 Bill Fumerola <billf@FreeBSD.org>

-Wall fix: ambigious else


# a0d3b21c 19-Sep-1999 Kazutaka YOKOTA <yokota@FreeBSD.org>

Fix -s option.

PR: bin/13799


# 97d92980 27-Aug-1999 Peter Wemm <peter@FreeBSD.org>

$Id$ -> $FreeBSD$


# ac80d4b4 22-Jun-1999 Kazutaka YOKOTA <yokota@FreeBSD.org>

Reflect recent changes in syscons.


# 2bfad86d 25-Jan-1999 Doug Rabson <dfr@FreeBSD.org>

Back out a couple of i386 conditionals which aren't needed with the new
syscons and fix a few printfs.

Reviewed by: Kazutaka YOKOTA <yokota@zodiac.mech.utsunomiya-u.ac.jp>


# bc9e0443 12-Jan-1999 Matt Jacob <mjacob@FreeBSD.org>

fix for compiling on alpha


# c67e8bd3 10-Jan-1999 Kazutaka YOKOTA <yokota@FreeBSD.org>

The first stage of console driver reorganization: activate new
keyboard and video card drivers.


# ad7b2eec 01-Oct-1998 Kazutaka YOKOTA <yokota@FreeBSD.org>

- Express various sizes in bytes, rather than Kbytes, in the video
mode and adapter information structures.


# 028a80e4 23-Sep-1998 Gary Palmer <gpalmer@FreeBSD.org>

Don't assume that we have extended modes on all platforms.


# cb1d2924 23-Sep-1998 Kazutaka YOKOTA <yokota@FreeBSD.org>

VESA BIOS support update in syscons.

- Accept generic video mode names: 80x25, 80x30, etc. Specific video
mode names, VGA_80x25, VESA_132x25, are still accpeted too.
- Update the man page accordingly.


# 8a8d9b08 16-Sep-1998 Andrzej Bialecki <abial@FreeBSD.org>

Add new '-i' option to usage().


# a8445737 15-Sep-1998 Søren Schmidt <sos@FreeBSD.org>

Add VESA support to syscons.

Kazu writes:

The VESA support code requires vm86 support. Make sure your kernel
configuration file has the following line.
options "VM86"
If you want to statically link the VESA support code to the kernel,
add the following option to the kernel configuration file.
options "VESA"

The vidcontrol command now accepts the following video mode names:
VESA_132x25, VESA_132x43, VESA_132x50, VESA_132x60, VESA_800x600

The VESA_800x600 mode is a raster display mode. The 80x25 text will
be displayed on the 800x600 screen. Useful for some laptop computers.

vidcontrol accepts the new `-i <info>' option, where <info> must be
either `adapter' or `mode'. When the `-i adapter' option is given,
vidcontrol will print basic information (not much) on the video
adapter. When the `-i mode' option is specified, vidcontrol will
list video modes which are actually supported by the video adapter.

Submitted by: Kazutaka YOKOTA yokota@FreeBSD.ORG


# af01fff3 14-Jul-1998 Bruce Evans <bde@FreeBSD.org>

ioctl() request args are unsigned longs, so don't attempt to store
them as ints. Among other bugs, doing so at best caused benign
overflow followed by fatal sign extension on machines with 32-bit
ints and 64-bit longs.


# 9396247e 27-Oct-1997 Philippe Charnier <charnier@FreeBSD.org>

Use err(3). Stylistic changes in man page.


# ca54d401 11-Mar-1997 Peter Wemm <peter@FreeBSD.org>

Update to compile under Lite2 includes


# bfc214e3 06-Mar-1997 Brian Somers <brian@FreeBSD.org>

Add a -s option for setting the current vty. This should make
life easier if a PS/2 mouse locks up the keyboard (frequent-ish,
but not repeatable).
Tidy up code (a bit) and make it -Wall

Is this a 2.2 candidate ? (although it doesn't -Wall in 2.2 because
of the lack of sys/sysproto.h


# 476602a9 22-Feb-1997 Peter Wemm <peter@FreeBSD.org>

Revert $FreeBSD$ to $Id$


# 1130b656 14-Jan-1997 Jordan K. Hubbard <jkh@FreeBSD.org>

Make the long-awaited change from $Id$ to $FreeBSD$

This will make a number of things easier in the future, as well as (finally!)
avoiding the Id-smashing problem which has plagued developers for so long.

Boy, I'm glad we're not using sup anymore. This update would have been
insane otherwise.


# 21496d48 03-Jul-1996 Gary Palmer <gpalmer@FreeBSD.org>

Fix typo.

Submitted by: Philippe Charnier <charnier@xp11.frmug.org>


# bfa09c9c 21-Jun-1996 Søren Schmidt <sos@FreeBSD.org>

Added new -m option, that enable / disables the mousepointer on
a textmode screen.


# 709e8f9a 29-May-1995 Rodney W. Grimes <rgrimes@FreeBSD.org>

Remove trailing whitespace.


# 50d387a3 03-Mar-1995 Dima Ruban <dima@FreeBSD.org>

remove option "-s saver" from usage()


# 17ee9d00 22-Feb-1995 Søren Schmidt <sos@FreeBSD.org>

Next syscons update (given up on numbering :)

Removed screensavers from syscons, they are now LKM's. This makes it
possible to do some really "interesting" screensavers...
Fixed bug that sometimes caused garbage to appear when leaving
"scroll-lock" history.
Reformattet indentation, it got too deep for a normal 80 pos screen.
Split up in syscons.c & syscons.h for use with the saver-lkm's.
Temporarily removed -s option from vidcontrol, savers should now
be loaded with modload.


# 8aec2608 07-Feb-1995 Dima Ruban <dima@FreeBSD.org>

Fixed usage() (cosmetic changes. "(string)" looks much better
than "(string" :-)


# e3dbac5e 07-Feb-1995 Søren Schmidt <sos@FreeBSD.org>

Added new choises of cursors.


# 1f741c31 30-Jan-1995 Søren Schmidt <sos@FreeBSD.org>

Added 80x30 & 80x60 experimental modes officially.


# a926a37b 28-Jan-1995 Søren Schmidt <sos@FreeBSD.org>

Third round in syscons update.

Display update method changed, now allways write in memory buffer,
then periodically update physical display.
Speed improvements (now > 5 times faster than the old syscons).
History now circular buffer, with changeable size.
History scroll by up/down line, up/down page, home and end.
Backtab proberly implemented.
Now space for 96 function keys, 63 allocated standard, default now
SCO/SYSV compat again as in the old days.
New keyboard definition files ~share/syscons/keymaps/*
Misc fixes for old "hacks" that broke SCO/SYSV compat.
More that I forgot before writing this...


# 63787756 12-Jan-1995 Søren Schmidt <sos@FreeBSD.org>

First round in syscons update. Several new features has been added:

No kernel config options anymore besides keyboard language layout.
Virtual consoles are now dynamically allocated, no NCONS anymore.
Software cursor blinking/nonblinking.
Visual bell for laptops (don't beep at meetings :-).
Cursor/bell default type setable via config "flags" instead of as defines.
Cursor/bell type setable via ioctl's.
New video modes 80x30 80x60 for some laptops, and those with multisync monitors.
Scroll-lock history (length currently fixed at 100 lines).
Lots of cleanups, some only commented out for now (will goaway soon).
Support for new features in vidcontrol/kbdcontrol.
Updated manpages.


# d28fc953 26-Sep-1994 Andrey A. Chernov <ache@FreeBSD.org>

usage help: uncomment -d option, add -x option


# 3644e283 15-Sep-1994 Søren Schmidt <sos@FreeBSD.org>

Added support for some of the new video modes in syscons.

Reviewed by:
Submitted by:
Obtained from:


# 7363955d 17-Aug-1994 Søren Schmidt <sos@FreeBSD.org>

Added vidcontrol util from 1.1.5.1+

Reviewed by:
Submitted by: