From 2473e3028e84e99f5ca163b00a8ffc61dc32cdc1 Mon Sep 17 00:00:00 2001 From: June McEnroe Date: Mon, 8 Oct 2018 17:32:13 -0400 Subject: Add ttpre --- bin/.gitignore | 1 + bin/Makefile | 1 + bin/README | 3 ++- bin/man/bin.7 | 3 +++ bin/man/ttpre.1 | 32 ++++++++++++++++++++++++++++++++ bin/ttpre.c | 54 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 6 files changed, 93 insertions(+), 1 deletion(-) create mode 100644 bin/man/ttpre.1 create mode 100644 bin/ttpre.c diff --git a/bin/.gitignore b/bin/.gitignore index 03b52195..35364af3 100644 --- a/bin/.gitignore +++ b/bin/.gitignore @@ -13,6 +13,7 @@ pbpaste pngo psf2png scheme +ttpre wake xx watch diff --git a/bin/Makefile b/bin/Makefile index f43c7ad7..23643871 100644 --- a/bin/Makefile +++ b/bin/Makefile @@ -12,6 +12,7 @@ BINS += pbpaste BINS += pngo BINS += psf2png BINS += scheme +BINS += ttpre BINS += wake BINS += xx diff --git a/bin/README b/bin/README index 552c9ce8..f6ac0046 100644 --- a/bin/README +++ b/bin/README @@ -19,8 +19,9 @@ DESCRIPTION pngo(1) PNG optimizer psf2png(1) PSF2 to PNG renderer psfed(1) PSF2 font editor + ttpre(1) man output to HTML wake(1) wake-on-LAN watch(1) watch files xx(1) hexdump -Causal Agency September 11, 2018 Causal Agency +Causal Agency September 28, 2018 Causal Agency diff --git a/bin/man/bin.7 b/bin/man/bin.7 index d38e940b..8698c8f8 100644 --- a/bin/man/bin.7 +++ b/bin/man/bin.7 @@ -52,6 +52,9 @@ PSF2 to PNG renderer .It Xr psfed 1 PSF2 font editor . +.It Xr ttpre 1 +man output to HTML +. .It Xr wake 1 wake-on-LAN . diff --git a/bin/man/ttpre.1 b/bin/man/ttpre.1 new file mode 100644 index 00000000..f772758e --- /dev/null +++ b/bin/man/ttpre.1 @@ -0,0 +1,32 @@ +.Dd October 8, 2018 +.Dt TTPRE 1 +.Os "Causal Agency" +. +.Sh NAME +.Nm ttpre +.Nd man output to HTML +. +.Sh SYNOPSIS +.Nm +. +.Sh DESCRIPTION +.Nm +formats +.Xr man 1 +output on standard input +as an HTML +.Sy
+fragment on standard output.
+Ampersands and angle brackets
+are replaced with corresponding HTML entities,
+and backspace formatting sequences
+are replaced with
+.Sy 
+and
+.Sy 
+tags.
+.
+.Sh SEE ALSO
+.Xr less 1 ,
+.Xr man 1 ,
+.Xr mandoc 1
diff --git a/bin/ttpre.c b/bin/ttpre.c
new file mode 100644
index 00000000..85654d4b
--- /dev/null
+++ b/bin/ttpre.c
@@ -0,0 +1,54 @@
+/* Copyright (C) 2018  June McEnroe 
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program.  If not, see .
+ */
+
+#include 
+#include 
+#include 
+
+static void put(const char *tag, char ch) {
+	if (tag) printf("<%s>", tag);
+	switch (ch) {
+		break; case '&': printf("&");
+		break; case '<': printf("<");
+		break; case '>': printf(">");
+		break; default:  printf("%c", ch);
+	}
+	if (tag) printf("", tag);
+}
+
+static void push(char ch) {
+	static char q[3];
+	if (q[1] == '\b' && q[0] == '_') {
+		put("i", q[2]);
+		memset(q, 0, 3);
+	} else if (q[1] == '\b' && q[0] == q[2]) {
+		put("b", q[2]);
+		memset(q, 0, 3);
+	} else if (q[0]) {
+		put(NULL, q[0]);
+	}
+	memmove(q, &q[1], 2);
+	q[2] = ch;
+}
+
+int main() {
+	printf("
");
+	char ch;
+	while (EOF != (ch = getchar_unlocked())) push(ch);
+	push('\0'); push('\0'); push('\0');
+	printf("
\n"); + return EXIT_SUCCESS; +} -- cgit 1.4.1