shithub: neatroff

Download patch

ref: 7f189830897b8e338087b45dfba9b7ff18a9bb24
parent: f8e3db6d29a44708872dd51a57b74033fdac41b6
author: Jacob Moody <moody@posixcafe.org>
date: Mon Feb 13 19:02:14 EST 2023

initial port

--- a/char.c
+++ b/char.c
@@ -1,8 +1,8 @@
 /* reading characters and escapes */
+#include <u.h>
+#include <libc.h>
 #include <ctype.h>
 #include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
 #include "roff.h"
 
 /* return the length of a utf-8 character based on its first byte */
--- a/clr.c
+++ b/clr.c
@@ -1,8 +1,8 @@
 /* color management */
+#include <u.h>
+#include <libc.h>
 #include <ctype.h>
 #include <stdio.h>
-#include <string.h>
-#include <stdlib.h>
 #include "roff.h"
 
 static struct color {
--- a/cp.c
+++ b/cp.c
@@ -1,7 +1,7 @@
 /* copy-mode character interpretation */
+#include <u.h>
+#include <libc.h>
 #include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
 #include "roff.h"
 
 static int cp_blkdep;		/* input block depth (text in \{ and \}) */
--- a/dev.c
+++ b/dev.c
@@ -1,8 +1,8 @@
 /* output device */
-#include <ctype.h>
+#include <u.h>
+#include <libc.h>
 #include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
+#include <ctype.h>
 #include "roff.h"
 
 static char dev_dir[PATHLEN];	/* device directory */
--- a/dict.c
+++ b/dict.c
@@ -1,6 +1,6 @@
+#include <u.h>
+#include <libc.h>
 #include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
 #include "roff.h"
 
 #define CNTMIN		(1 << 10)
--- a/dir.c
+++ b/dir.c
@@ -1,7 +1,7 @@
 /* output text direction */
+#include <u.h>
+#include <libc.h>
 #include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
 #include "roff.h"
 
 int dir_do;			/* enable text direction processing */
--- a/draw.c
+++ b/draw.c
@@ -1,7 +1,8 @@
 /* helper for drawing commands in ren.c */
+#include <u.h>
+#include <libc.h>
 #include <ctype.h>
-#include <stdlib.h>
-#include <string.h>
+#include <stdio.h>
 #include "roff.h"
 
 static int cwid(char *c)
--- a/eval.c
+++ b/eval.c
@@ -1,7 +1,8 @@
 /* evaluation of integer expressions */
-#include <ctype.h>
+#include <u.h>
+#include <libc.h>
 #include <stdio.h>
-#include <string.h>
+#include <ctype.h>
 #include "roff.h"
 
 #define SCHAR	"icpPvmnu"	/* scale indicators */
--- a/fmt.c
+++ b/fmt.c
@@ -11,9 +11,9 @@
  * means the call should be repeated after fetching previously
  * formatted lines via fmt_nextline().
  */
+#include <u.h>
+#include <libc.h>
 #include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
 #include "roff.h"
 
 #define FMT_LLEN(f)	MAX(0, (f)->ll - (f)->li - (f)->lI)
--- a/font.c
+++ b/font.c
@@ -1,7 +1,7 @@
 /* font handling */
+#include <u.h>
+#include <libc.h>
 #include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
 #include "roff.h"
 
 /* convert wid in device unitwidth size to size sz */
--- a/hyph.c
+++ b/hyph.c
@@ -1,7 +1,8 @@
 /* hyphenation */
+#include <u.h>
+#include <libc.h>
 #include <ctype.h>
 #include <stdio.h>
-#include <string.h>
 #include "roff.h"
 #include "hyen.h"
 
--- a/in.c
+++ b/in.c
@@ -1,7 +1,7 @@
 /* input stream management */
+#include <u.h>
+#include <libc.h>
 #include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
 #include "roff.h"
 
 struct inbuf {
--- a/iset.c
+++ b/iset.c
@@ -1,5 +1,5 @@
-#include <stdlib.h>
-#include <string.h>
+#include <u.h>
+#include <libc.h>
 #include "roff.h"
 
 #define ALIGN(n, a)	(((n) + (a) - 1) & ~((a) - 1))
@@ -43,7 +43,7 @@
 
 int *iset_get(struct iset *iset, int key)
 {
-	return key >= 0 && key < iset->cnt ? iset->set[key] : NULL;
+	return key >= 0 && key < iset->cnt ? iset->set[key] : nil;
 }
 
 int iset_len(struct iset *iset, int key)
--- a/map.c
+++ b/map.c
@@ -1,6 +1,7 @@
 /* mapping register/macro names to indices */
+#include <u.h>
+#include <libc.h>
 #include <stdio.h>
-#include <string.h>
 #include "roff.h"
 
 #define MAPBEG		256	/* the entries reserved for .x names */
--- /dev/null
+++ b/mkfile
@@ -1,0 +1,33 @@
+</$objtype/mkfile
+
+FDIR=/sys/lib/neatroff/font
+MDIR=/sys/lib/neatroff/tmac
+
+CFLAGS=-Fpw -DTROFFFDIR="/sys/lib/neatroff/font" -DTROFFMDIR="/sys/lib/neatroff/tmac"
+BIN=/$objtype/bin/
+TARG=neatroff
+
+OFILES=\
+	roff.$O\
+	dev.$O\
+	font.$O\
+	in.$O\
+	cp.$O\
+	tr.$O\
+	ren.$O\
+	out.$O\
+	reg.$O\
+	sbuf.$O\
+	fmt.$O\
+	eval.$O\
+	draw.$O\
+	wb.$O\
+	hyph.$O\
+	map.$O\
+	clr.$O\
+	char.$O\
+	dict.$O\
+	iset.$O\
+	dir.$O\
+
+</sys/src/cmd/mkone
--- a/out.c
+++ b/out.c
@@ -1,9 +1,8 @@
 /* generating troff output */
-#include <ctype.h>
-#include <stdarg.h>
+#include <u.h>
+#include <libc.h>
 #include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
+#include <ctype.h>
 #include "roff.h"
 
 static int out_nl = 1;
--- a/reg.c
+++ b/reg.c
@@ -1,11 +1,8 @@
 /* registers and environments */
-#include <ctype.h>
+#include <u.h>
+#include <libc.h>
 #include <stdio.h>
-#include <stdlib.h>
-#include <stdlib.h>
-#include <string.h>
-#include <time.h>
-#include <unistd.h>
+#include <ctype.h>
 #include "roff.h"
 
 #define NENVS		64	/* number of environment registers */
@@ -258,13 +255,16 @@
 
 static void init_time(void)
 {
-	time_t t = time(NULL);
-	struct tm *tm = localtime(&t);
-	num_set(map("dw"), tm->tm_wday + 1);
-	num_set(map("dy"), tm->tm_mday);
-	num_set(map("mo"), tm->tm_mon + 1);
-	num_set(map("yr"), tm->tm_year % 100);
-	num_set(map(".yr"), 1900 + tm->tm_year);
+	Tzone *tz;
+	Tm tm;
+	tz = tzload("local");
+	tmnow(&tm, tz);
+
+	num_set(map("dw"), tm.wday + 1);
+	num_set(map("dy"), tm.mday);
+	num_set(map("mo"), tm.mon + 1);
+	num_set(map("yr"), tm.year % 100);
+	num_set(map(".yr"), 1900 + tm.year);
 }
 
 static void init_globals(void)
--- a/ren.c
+++ b/ren.c
@@ -1,8 +1,8 @@
 /* rendering lines and managing traps */
-#include <ctype.h>
+#include <u.h>
+#include <libc.h>
 #include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
+#include <ctype.h>
 #include "roff.h"
 
 #define NOPAGE		0x40000000	/* undefined bp_next */
--- a/roff.c
+++ b/roff.c
@@ -15,10 +15,9 @@
  * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
  * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
  */
-#include <stdarg.h>
+#include <u.h>
+#include <libc.h>
 #include <stdio.h>
-#include <string.h>
-#include <stdlib.h>
 #include "roff.h"
 
 void errmsg(char *fmt, ...)
@@ -32,12 +31,12 @@
 void errdie(char *msg)
 {
 	fprintf(stderr, "%s", msg);
-	exit(1);
+	exits(msg);
 }
 
 void *mextend(void *old, long oldsz, long newsz, int memsz)
 {
-	void *new = xmalloc(newsz * memsz);
+	char *new = xmalloc(newsz * memsz);
 	memcpy(new, old, oldsz * memsz);
 	memset(new + oldsz * memsz, 0, (newsz - oldsz) * memsz);
 	free(old);
--- a/sbuf.c
+++ b/sbuf.c
@@ -1,8 +1,7 @@
 /* variable length string buffer */
-#include <stdarg.h>
+#include <u.h>
+#include <libc.h>
 #include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
 #include "roff.h"
 
 #define ALIGN(n, a)	(((n) + (a) - 1) & ~((a) - 1))
--- a/tr.c
+++ b/tr.c
@@ -1,8 +1,8 @@
 /* built-in troff requests */
+#include <u.h>
+#include <libc.h>
 #include <ctype.h>
 #include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
 #include "roff.h"
 
 static int tr_nl = 1;		/* just read a newline */
@@ -131,7 +131,7 @@
 	cp_copymode(0);
 	if (empty) {
 		sbuf_done(&sbuf);
-		return NULL;
+		return nil;
 	}
 	return sbuf_out(&sbuf);
 }
@@ -161,7 +161,7 @@
 {
 	int first = 1;
 	int c;
-	char *req = NULL;
+	char *req = nil;
 	cp_back('\n');
 	cp_copymode(1);
 	while ((c = cp_next()) >= 0) {
@@ -175,7 +175,7 @@
 			}
 			req = read_name(n_cp);
 			if (!strcmp(end, req)) {
-				in_push(end, NULL);
+				in_push(end, nil);
 				cp_back(c_cc);
 				break;
 			}
@@ -184,7 +184,7 @@
 				sbuf_append(sbuf, req);
 			}
 			free(req);
-			req = NULL;
+			req = nil;
 		}
 	}
 	free(req);
@@ -210,10 +210,10 @@
 
 static void tr_ig(char **args)
 {
-	macrobody(NULL, args[1] ? args[1] : ".");
+	macrobody(nil, args[1] ? args[1] : ".");
 }
 
-/* read into sbuf until stop; if stop is NULL, stop at whitespace */
+/* read into sbuf until stop; if stop is nil, stop at whitespace */
 static int read_until(struct sbuf *sbuf, char *stop,
 			int (*next)(void), void (*back)(int))
 {
@@ -276,7 +276,7 @@
 	struct sbuf sbuf;
 	int ret;
 	sbuf_init(&sbuf);
-	read_until(&sbuf, NULL, next, back);
+	read_until(&sbuf, nil, next, back);
 	ret = eval(sbuf_buf(&sbuf), '\0') > 0;
 	sbuf_done(&sbuf);
 	return ret;
@@ -389,7 +389,7 @@
 
 static void tr_sy(char **args)
 {
-	system(args[1]);
+	//system(args[1]);
 }
 
 static void tr_lt(char **args)
@@ -600,7 +600,7 @@
 
 static void tr_cs(char **args)
 {
-	struct font *fn = args[1] ? dev_font(dev_pos(args[1])) : NULL;
+	struct font *fn = args[1] ? dev_font(dev_pos(args[1])) : nil;
 	if (fn)
 		font_setcs(fn, args[2] ? eval(args[2], 0) : 0,
 				args[3] ? eval(args[3], 0) : 0);
@@ -608,7 +608,7 @@
 
 static void tr_fzoom(char **args)
 {
-	struct font *fn = args[1] ? dev_font(dev_pos(args[1])) : NULL;
+	struct font *fn = args[1] ? dev_font(dev_pos(args[1])) : nil;
 	if (fn)
 		font_setzoom(fn, args[2] ? eval(args[2], 0) : 0);
 }
@@ -615,7 +615,7 @@
 
 static void tr_tkf(char **args)
 {
-	struct font *fn = args[1] ? dev_font(dev_pos(args[1])) : NULL;
+	struct font *fn = args[1] ? dev_font(dev_pos(args[1])) : nil;
 	if (fn && args[5])
 		font_track(fn, eval(args[2], 0), eval(args[3], 0),
 				eval(args[4], 0), eval(args[5], 0));
@@ -623,7 +623,7 @@
 
 static void tr_ff(char **args)
 {
-	struct font *fn = args[1] ? dev_font(dev_pos(args[1])) : NULL;
+	struct font *fn = args[1] ? dev_font(dev_pos(args[1])) : nil;
 	int i;
 	for (i = 2; i < NARGS; i++)
 		if (fn && args[i] && args[i][0] && args[i][1])
@@ -632,7 +632,7 @@
 
 static void tr_ffsc(char **args)
 {
-	struct font *fn = args[1] ? dev_font(dev_pos(args[1])) : NULL;
+	struct font *fn = args[1] ? dev_font(dev_pos(args[1])) : nil;
 	if (fn)
 		font_scrp(fn, args[2]);
 	if (fn)
@@ -663,7 +663,7 @@
 
 static void tr_bd(char **args)
 {
-	struct font *fn = args[1] ? dev_font(dev_pos(args[1])) : NULL;
+	struct font *fn = args[1] ? dev_font(dev_pos(args[1])) : nil;
 	if (!args[1] || !strcmp("S", args[1]))
 		return;
 	if (fn)
@@ -783,7 +783,7 @@
 char *cdef_map(char *c, int fn)
 {
 	int i = cdef_find(c, fn);
-	return !cdef_expanding && i >= 0 ? cdef_dst[i] : NULL;
+	return !cdef_expanding && i >= 0 ? cdef_dst[i] : nil;
 }
 
 int cdef_expand(struct wb *wb, char *s, int fn)
@@ -808,7 +808,7 @@
 		if (!strcmp(cdef_src[i], c)) {
 			if (!fn || (fp > 0 && cdef_fn[i] == fp)) {
 				free(cdef_dst[i]);
-				cdef_dst[i] = NULL;
+				cdef_dst[i] = nil;
 				cdef_src[i][0] = '\0';
 			}
 		}
@@ -842,15 +842,15 @@
 	int i;
 	for (i = 1; i < NARGS; i++)
 		if (args[i])
-			cdef_remove(NULL, args[i]);
+			cdef_remove(nil, args[i]);
 }
 
 static void tr_char(char **args)
 {
 	if (args[2])
-		cdef_add(NULL, args[1], args[2]);
+		cdef_add(nil, args[1], args[2]);
 	else
-		cdef_remove(NULL, args[1]);
+		cdef_remove(nil, args[1]);
 }
 
 static void tr_ochar(char **args)
@@ -863,7 +863,7 @@
 
 static void tr_fmap(char **args)
 {
-	struct font *fn = args[1] ? dev_font(dev_pos(args[1])) : NULL;
+	struct font *fn = args[1] ? dev_font(dev_pos(args[1])) : nil;
 	if (fn && args[2])
 		font_map(fn, args[2], args[3]);
 }
@@ -1264,7 +1264,7 @@
 int tr_nextreq(void)
 {
 	char *mac;
-	char *arg0 = NULL;
+	char *arg0 = nil;
 	int c;
 	if (!tr_nl)
 		return 1;
--- a/wb.c
+++ b/wb.c
@@ -1,8 +1,8 @@
 /* word buffer */
+#include <u.h>
+#include <libc.h>
 #include <ctype.h>
-#include <stdlib.h>
 #include <stdio.h>
-#include <string.h>
 #include "roff.h"
 
 /* the current font, size and color */