shithub: neatroff

Download patch

ref: d2f835e905fcbe8fba2d08b80eca0a360be677fa
parent: ea02f33e211dd71a435d3c008cb102244110f5e1
author: Ali Gholami Rudi <ali@rudi.ir>
date: Tue Jul 30 12:01:15 EDT 2013

font: ignore nonexistent fonts

--- a/dev.c
+++ b/dev.c
@@ -182,7 +182,8 @@
 
 void dev_setcs(int fn, int cs)
 {
-	dev_font(fn)->cs = cs;
+	if (fn >= 0)
+		dev_font(fn)->cs = cs;
 }
 
 int dev_getbd(int fn)
@@ -192,5 +193,6 @@
 
 void dev_setbd(int fn, int bd)
 {
-	dev_font(fn)->bd = bd;
+	if (fn >= 0)
+		dev_font(fn)->bd = bd;
 }
--- a/font.c
+++ b/font.c
@@ -161,11 +161,14 @@
 
 struct font *font_open(char *path)
 {
-	struct font *fn = malloc(sizeof(*fn));
+	struct font *fn;
 	char tok[ILNLEN];
 	FILE *fin;
 	int i;
 	fin = fopen(path, "r");
+	if (!fin)
+		return NULL;
+	fn = malloc(sizeof(*fn));
 	memset(fn, 0, sizeof(*fn));
 	for (i = 0; i < LEN(fn->head); i++)
 		fn->head[i] = -1;
--- a/ren.c
+++ b/ren.c
@@ -519,7 +519,9 @@
 static void ren_ft(char *s)
 {
 	int fn = !s || !*s || !strcmp("P", s) ? n_f0 : dev_pos(s);
-	if (fn >= 0) {
+	if (fn < 0) {
+		errmsg("neatroff: failed to mount <%s>\n", s);
+	} else {
 		n_f0 = n_f;
 		n_f = fn;
 	}
@@ -535,7 +537,7 @@
 	if (!args[2])
 		return;
 	if (dev_mnt(atoi(args[1]), args[2], args[3] ? args[3] : args[2]) < 0)
-		errmsg("troff: failed to mount %s\n", args[2]);
+		errmsg("neatroff: failed to mount <%s>\n", args[2]);
 }
 
 void tr_nf(char **args)