Module Name:    src
Committed By:   macallan
Date:           Fri Jun 23 02:16:39 UTC 2017

Modified Files:
        src/usr.sbin/wsfontload: wsfontload.c

Log Message:
load files from ttf2wsfont


To generate a diff of this commit:
cvs rdiff -u -r1.18 -r1.19 src/usr.sbin/wsfontload/wsfontload.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/usr.sbin/wsfontload/wsfontload.c
diff -u src/usr.sbin/wsfontload/wsfontload.c:1.18 src/usr.sbin/wsfontload/wsfontload.c:1.19
--- src/usr.sbin/wsfontload/wsfontload.c:1.18	Fri Apr  5 03:18:26 2013
+++ src/usr.sbin/wsfontload/wsfontload.c	Fri Jun 23 02:16:39 2017
@@ -1,4 +1,4 @@
-/* $NetBSD: wsfontload.c,v 1.18 2013/04/05 03:18:26 dholland Exp $ */
+/* $NetBSD: wsfontload.c,v 1.19 2017/06/23 02:16:39 macallan Exp $ */
 
 /*
  * Copyright (c) 1999
@@ -33,6 +33,7 @@
 #include <unistd.h>
 #include <sys/types.h>
 #include <sys/ioctl.h>
+#include <sys/stat.h>
 #include <err.h>
 
 #include <dev/wscons/wsconsio.h>
@@ -134,9 +135,11 @@ main(int argc, char **argv)
 {
 	const char *wsdev;
 	struct wsdisplay_font f;
+	struct stat st;
 	int c, res, wsfd, ffd, verbose = 0;
 	size_t len;
 	void *buf;
+	char nbuf[65];
 
 	wsdev = DEFDEV;
 	f.fontwidth = DEFWIDTH;
@@ -205,6 +208,39 @@ main(int argc, char **argv)
 	if (!f.stride)
 		f.stride = (f.fontwidth + 7) / 8;
 	len = f.fontheight * f.numchars * f.stride;
+	if (fstat(ffd, &st) == 0) {
+		if (len != st.st_size) {
+			uint32_t foo = 0;
+			char b[65];
+			len = st.st_size;
+			/* read header */
+			read(ffd, b, 4);
+			if (strncmp(b, "WSFT", 4) != 0)
+				errx(1, "invalid wsf file ");
+			read(ffd, b, 64);
+			b[64] = 0;
+			strcpy(nbuf, b);
+			f.name = nbuf;
+			read(ffd, &foo, 4);
+			f.firstchar = le32toh(foo);
+			read(ffd, &foo, 4);
+			f.numchars = le32toh(foo);
+			read(ffd, &foo, 4);
+			f.encoding = le32toh(foo);
+			read(ffd, &foo, 4);
+			f.fontwidth = le32toh(foo);
+			read(ffd, &foo, 4);
+			f.fontheight = le32toh(foo);
+			read(ffd, &foo, 4);
+			f.stride = le32toh(foo);
+			read(ffd, &foo, 4);
+			f.bitorder = le32toh(foo);
+			read(ffd, &foo, 4);
+			f.byteorder = le32toh(foo);
+			len = f.numchars * f.fontheight * f.stride;
+		}
+	}
+
 	if (!len)
 		errx(1, "invalid font size");
 

Reply via email to