Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 27 Nov 2015 00:04:40 +0000 (UTC)
From:      Ed Maste <emaste@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r291377 - head/usr.sbin/kbdmap
Message-ID:  <201511270004.tAR04euc004311@repo.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: emaste
Date: Fri Nov 27 00:04:39 2015
New Revision: 291377
URL: https://svnweb.freebsd.org/changeset/base/291377

Log:
  vidfont: with vt(4) omit size from vidcontrol -f
  
  When using syscons, vidfont extracts the font size from the filename
  passes it to vidcontrol -f. In vt(4) mode the size argument is not
  required, and some of the fonts in /usr/share/vt/fonts do not have the
  size in the filename, which caused vidfont to fail. Thus, just omit the
  size argument in vt(4) mode.
  
  MFC after:	1 week
  Sponsored by:	The FreeBSD Foundation

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

Modified: head/usr.sbin/kbdmap/kbdmap.c
==============================================================================
--- head/usr.sbin/kbdmap/kbdmap.c	Thu Nov 26 23:12:41 2015	(r291376)
+++ head/usr.sbin/kbdmap/kbdmap.c	Fri Nov 27 00:04:39 2015	(r291377)
@@ -57,6 +57,7 @@ static const char *dir;
 static const char *menu = "";
 
 static int x11;
+static int using_vt;
 static int show;
 static int verbose;
 static int print;
@@ -150,7 +151,7 @@ add_keymap(const char *desc, int mark, c
  * Return 0 if syscons is in use (to select legacy defaults).
  */
 static int
-check_newcons(void)
+check_vt(void)
 {
 	size_t len;
 	char term[3];
@@ -159,7 +160,7 @@ check_newcons(void)
 	if (sysctlbyname("kern.vty", &term, &len, NULL, 0) != 0 ||
 	    strcmp(term, "vt") != 0)
 		return 0;
-	return -1;
+	return 1;
 }
 
 /*
@@ -256,7 +257,7 @@ get_font(void)
 static void
 vidcontrol(const char *fnt)
 {
-	char *tmp, *p, *q;
+	char *tmp, *p, *q, *cmd;
 	char ch;
 	int i;
 
@@ -264,6 +265,13 @@ vidcontrol(const char *fnt)
 	if (x11)
 		return;
 
+	if (using_vt) {
+		asprintf(&cmd, "vidcontrol -f %s", fnt);
+		system(cmd);
+		free(cmd);
+		return;
+	}
+
 	tmp = strdup(fnt);
 
 	/* Extract font size */
@@ -281,7 +289,6 @@ vidcontrol(const char *fnt)
 		if (sscanf(p, "%dx%d%c", &i, &i, &ch) != 2)
 			fprintf(stderr, "Which font size? %s\n", fnt);
 		else {
-			char *cmd;
 			asprintf(&cmd, "vidcontrol -f %s %s", p, fnt);
 			if (verbose)
 				fprintf(stderr, "%s\n", cmd);
@@ -832,7 +839,8 @@ main(int argc, char **argv)
 		sleep(2);
 	}
 
-	if (check_newcons() == 0) {
+	using_vt = check_vt();
+	if (using_vt == 0) {
 		keymapdir = DEFAULT_SC_KEYMAP_DIR;
 		fontdir = DEFAULT_SC_FONT_DIR;
 		font_default = DEFAULT_SC_FONT;



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