summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Shalayeff <mickey@cvs.openbsd.org>2001-03-14 02:51:37 +0000
committerMichael Shalayeff <mickey@cvs.openbsd.org>2001-03-14 02:51:37 +0000
commit8b8d50881096eb61da10377b8ec19ba882a5b7e7 (patch)
treee2b62f78b930a5e971172db8e04f1fe46cfacddd
parent1be35009bec0e46defcd8a4b5a1871168f30c735 (diff)
allow listing and soon deleting fonts; aaron@ ok
-rw-r--r--usr.sbin/wsconscfg/wsconscfg.c10
-rw-r--r--usr.sbin/wsfontload/wsfontload.c78
2 files changed, 63 insertions, 25 deletions
diff --git a/usr.sbin/wsconscfg/wsconscfg.c b/usr.sbin/wsconscfg/wsconscfg.c
index 8fecfab5b00..01ed66f7380 100644
--- a/usr.sbin/wsconscfg/wsconscfg.c
+++ b/usr.sbin/wsconscfg/wsconscfg.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: wsconscfg.c,v 1.3 2001/01/30 06:50:12 aaron Exp $ */
+/* $OpenBSD: wsconscfg.c,v 1.4 2001/03/14 02:51:36 mickey Exp $ */
/* $NetBSD: wsconscfg.c,v 1.4 1999/07/29 18:24:10 augustss Exp $ */
/*
@@ -74,8 +74,8 @@ main(argc, argv)
delete = 0;
kbd = 0;
mux = 0;
- asd.screentype = 0;
- asd.emul = 0;
+ asd.screentype[0] = 0;
+ asd.emul[0] = 0;
dsd.flags = 0;
while ((c = getopt(argc, argv, "f:dkmt:e:F")) != -1) {
@@ -94,10 +94,10 @@ main(argc, argv)
kbd++;
break;
case 't':
- asd.screentype = optarg;
+ strlcpy(asd.screentype, optarg, WSSCREEN_NAME_SIZE);
break;
case 'e':
- asd.emul = optarg;
+ strlcpy(asd.emul, optarg, WSEMUL_NAME_SIZE);
break;
case 'F':
dsd.flags |= WSDISPLAY_DELSCR_FORCE;
diff --git a/usr.sbin/wsfontload/wsfontload.c b/usr.sbin/wsfontload/wsfontload.c
index 131fc9134b5..8a243bbbefa 100644
--- a/usr.sbin/wsfontload/wsfontload.c
+++ b/usr.sbin/wsfontload/wsfontload.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: wsfontload.c,v 1.3 2001/03/13 03:10:21 mickey Exp $ */
+/* $OpenBSD: wsfontload.c,v 1.4 2001/03/14 02:51:36 mickey Exp $ */
/* $NetBSD: wsfontload.c,v 1.2 2000/01/05 18:46:43 ad Exp $ */
/*
@@ -39,6 +39,7 @@
#include <unistd.h>
#include <sys/types.h>
#include <sys/ioctl.h>
+#include <string.h>
#include <err.h>
#include <dev/wscons/wsconsio.h>
@@ -60,35 +61,51 @@ usage()
extern char *__progname;
(void)fprintf(stderr,
- "Usage: %s [-f wsdev] [-w width] [-h height] [-e encoding]"
- " [-N name] [-b] [-B] [fontfile]\n",
- __progname);
+ "Usage: %s [-f wsdev] -l\n"
+ " %s [-f wsdev] -d name\n"
+ " %s [-w width] [-h height] [-e encoding] "
+ "[-N name] [-b] [-B] [fontfile]\n",
+ __progname, __progname, __progname);
exit(1);
}
+static const
+struct {
+ const char *name;
+ int val;
+} encodings[] = {
+ {"iso", WSDISPLAY_FONTENC_ISO},
+ {"ibm", WSDISPLAY_FONTENC_IBM},
+ {"pcvt", WSDISPLAY_FONTENC_PCVT},
+ {"iso7", WSDISPLAY_FONTENC_ISO7},
+ {"sony", WSDISPLAY_FONTENC_SONY},
+};
+
int
main(argc, argv)
int argc;
char **argv;
{
- char *wsdev;
+ char *wsdev, *p;
struct wsdisplay_font f;
- int c, res, wsfd, ffd;
+ int c, res, wsfd, ffd, list, i;
size_t len;
void *buf;
wsdev = DEFDEV;
+ f.index = -1;
f.fontwidth = DEFWIDTH;
f.fontheight = DEFHEIGHT;
f.firstchar = 0;
f.numchars = 256;
f.stride = 0;
f.encoding = DEFENC;
- f.name = 0;
+ f.name[0] = 0;
f.bitorder = DEFBITORDER;
f.byteorder = DEFBYTEORDER;
- while ((c = getopt(argc, argv, "bBe:f:h:N:w:")) != -1) {
+ list = 0;
+ while ((c = getopt(argc, argv, "bB:e:f:h:lN:w:")) != -1) {
switch (c) {
case 'f':
wsdev = optarg;
@@ -106,8 +123,11 @@ main(argc, argv)
case 'e':
f.encoding = getencoding(optarg);
break;
+ case 'l':
+ list++;
+ break;
case 'N':
- f.name = optarg;
+ strlcpy(f.name, optarg, WSFONT_NAME_SIZE);
break;
case 'b':
f.bitorder = WSDISPLAY_FONTORDER_R2L;
@@ -124,6 +144,9 @@ main(argc, argv)
argc -= optind;
argv += optind;
+ if (list && argc)
+ usage();
+
if (argc > 1)
usage();
@@ -131,12 +154,36 @@ main(argc, argv)
if (wsfd < 0)
err(2, "open %s", wsdev);
+ if (list) {
+ i = 0;
+ p = " # Name Encoding W H";
+ do {
+ f.index = i;
+ res = ioctl(wsfd, WSDISPLAYIO_LSFONT, &f);
+ if (res == 0) {
+ if (f.name[0]) {
+ if (p) {
+ puts(p);
+ p = NULL;
+ }
+ printf("%2d %-16s %8s %2d %2d\n",
+ f.index, f.name,
+ encodings[f.encoding].name,
+ f.fontwidth, f.fontheight);
+ }
+ }
+ i++;
+ } while(res == 0);
+
+ return (0);
+ }
+
if (argc > 0) {
ffd = open(argv[0], O_RDONLY, 0);
if (ffd < 0)
err(4, "open %s", argv[0]);
- if (!f.name)
- f.name = argv[0];
+ if (!*f.name)
+ strlcpy(f.name, argv[0], WSFONT_NAME_SIZE);
} else
ffd = 0;
@@ -164,15 +211,6 @@ main(argc, argv)
return (0);
}
-static struct {
- char *name;
- int val;
-} encodings[] = {
- {"iso", WSDISPLAY_FONTENC_ISO},
- {"ibm", WSDISPLAY_FONTENC_IBM},
- {"pcvt", WSDISPLAY_FONTENC_PCVT},
-};
-
static int
getencoding(name)
char *name;