Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 15 Apr 2001 12:47:11 -0700 (PDT)
From:      dd@freebsd.org
To:        FreeBSD-gnats-submit@freebsd.org
Subject:   bin/26603: [PATCH] add option to vidcontrol(1) to enable visual bell
Message-ID:  <200104151947.f3FJlBu36097@spike.unixfreak.org>

next in thread | raw e-mail | index | archive | help

>Number:         26603
>Category:       bin
>Synopsis:       [PATCH] add option to vidcontrol(1) to enable visual bell
>Confidential:   no
>Severity:       non-critical
>Priority:       low
>Responsible:    freebsd-bugs
>State:          open
>Quarter:        
>Keywords:       
>Date-Required:
>Class:          change-request
>Submitter-Id:   current-users
>Arrival-Date:   Sun Apr 15 12:50:02 PDT 2001
>Closed-Date:
>Last-Modified:
>Originator:     Dima Dorfman
>Release:        FreeBSD 5.0-20010407-CURRENT i386
>Organization:
Private
>Environment:
System: FreeBSD spike.unixfreak.org 5.0-20010407-CURRENT FreeBSD 5.0-20010407-CURRENT #42: Fri Apr 13 16:01:31 PDT 2001 dima@spike.unixfreak.org:/c/home/dima/w/f/src/sys/compile/SPIKE i386

>Description:

syscons(4) implements a visual bell feature (CONS_BELLTYPE ioctl), but
there is no corresponding option in vidcontrol(1) to make use of it.

>How-To-Repeat:

Read syscons.c; find CONS_BELLTYPE ioctl; try to find a way to enable
it from the userland; fail; apply the patch below; succeed.

>Fix:

The following patch is relevant to src/usr.sbin/vidcontrol on -current.

Index: vidcontrol.1
===================================================================
RCS file: /st/src/FreeBSD/src/usr.sbin/vidcontrol/vidcontrol.1,v
retrieving revision 1.30
diff -u -r1.30 vidcontrol.1
--- vidcontrol.1	2001/03/28 02:32:10	1.30
+++ vidcontrol.1	2001/04/15 19:02:43
@@ -21,6 +21,7 @@
 .Nd a utility for manipulating the syscons console driver.
 .Sh SYNOPSIS
 .Nm
+.Op Fl B Cm on | off
 .Op Fl b Ar color
 .Op Fl c Ar appearance
 .Op Fl d
@@ -105,6 +106,13 @@
 .Ar foreground 
 and 
 .Ar background .
+.It Fl B Cm on | off
+Turn the visual bell
+.Cm on
+or
+.Cm off .
+Default is
+.Cm off .
 .It Fl b Ar color
 Set border color to 
 .Ar color .
Index: vidcontrol.c
===================================================================
RCS file: /st/src/FreeBSD/src/usr.sbin/vidcontrol/vidcontrol.c,v
retrieving revision 1.34
diff -u -r1.34 vidcontrol.c
--- vidcontrol.c	2001/01/25 16:53:22	1.34
+++ vidcontrol.c	2001/04/15 19:02:43
@@ -67,7 +67,7 @@
 {
 	fprintf(stderr, "%s\n%s\n%s\n%s\n",
 "usage: vidcontrol [-r fg bg] [-b color] [-c appearance] [-d] [-l scrmap]",
-"                  [-i adapter | mode] [-L] [-M char] [-m on|off]",
+"                  [-i adapter | mode] [-L] [-M char] [-m on|off] [-B on|off]",
 "                  [-f size file] [-s number] [-t N|off] [-x] [-g geometry]", 
 "                  [mode] [fgcol [bgcol]] [show]");
 	exit(1);
@@ -419,6 +419,25 @@
 }
 
 void
+set_bell(char *arg)
+{
+	unsigned long data;
+	int rv = 0;
+
+	if (strcmp(arg, "on") == 0)
+		data = 0x01;
+	else if (strcmp(arg, "off") == 0)
+		data = 0x02;
+	else {
+		warnx("argument to -B must be either on or off");
+		return;
+	}
+	rv = ioctl(0, CONS_BELLTYPE, &data);
+	if (rv)
+		warn("ioctl(CONS_BELLTYPE)");
+}
+
+void
 set_border_color(char *arg)
 {
 	int color;
@@ -596,8 +615,11 @@
 	info.size = sizeof(info);
 	if (ioctl(0, CONS_GETINFO, &info) < 0)
 		err(1, "must be on a virtual console");
-	while((opt = getopt(argc, argv, "b:c:df:g:i:l:LM:m:r:s:t:x")) != -1)
+	while((opt = getopt(argc, argv, "B:b:c:df:g:i:l:LM:m:r:s:t:x")) != -1)
 		switch(opt) {
+			case 'B':
+				set_bell(optarg);
+				break;
 			case 'b':
 				set_border_color(optarg);
 				break;

>Release-Note:
>Audit-Trail:
>Unformatted:

To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-bugs" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200104151947.f3FJlBu36097>