shithub: hx

Download patch

ref: eaac0f22ca88dbe40afa83fbfaf36da0c6f7821b
parent: fbfd677a4f6cd2fac688dce5d39cc128be58524f
author: Sigrid Haflínudóttir <ftrvxmtrx@gmail.com>
date: Sat Dec 28 10:06:57 EST 2019

port to plan 9

--- /dev/null
+++ b/.gitignore
@@ -1,0 +1,2 @@
+*.out
+hx.[^c]
--- a/README.md
+++ b/README.md
@@ -12,9 +12,11 @@
 
 Around 40 times faster, eh?
 
-# Building
+# Building/installing
 
-`gcc -Wall -Wextra -O2 -s -g0 hx.c -o hx`
+UNIX-like operating systems: `gcc -Wall -Wextra -O2 -s -g0 hx.c -o hx`
+
+Plan 9: `cd /tmp && hget https://github.com/ftrvxmtrx/hx/archive/master.tar.gz | tar xz && cd hx-master && mk install`
 
 # Notes
 
--- a/hx.c
+++ b/hx.c
@@ -1,3 +1,4 @@
+#ifdef __unix__
 #ifdef __linux__
 #define _GNU_SOURCE
 #else
@@ -9,6 +10,15 @@
 #include <stdlib.h>
 #include <string.h>
 #include <unistd.h>
+#define print printf
+#define OREAD O_RDONLY
+#define nil NULL
+#define exits(s) do { return (s) != nil; } while (0)
+typedef size_t u64int;
+#else
+#include <u.h>
+#include <libc.h>
+#endif
 
 enum
 {
@@ -31,8 +41,8 @@
 static int
 hx(int fd)
 {
-	size_t addr;
-	ssize_t sz, i;
+	u64int addr;
+	long sz, i;
 	char s[65536], c;
 	unsigned char line[16];
 	int wroff, off, eof, lineoff, r;
@@ -44,6 +54,7 @@
 	lineoff = 0;
 	off = 0;
 	eof = 0;
+	sz = 0;
 	for (addr = 0; eof == 0 && (sz = read(fd, buf, Bufsz)) > 0;) {
 		for (i = 0; i < sz; ) {
 			if (lineoff == 0) {
@@ -140,24 +151,28 @@
 	return sz != 0;
 }
 
+#ifdef __unix__
 int
+#else
+void
+#endif
 main(int argc, char **argv)
 {
 	int i, fd, res;
 
-	if ((buf = malloc(Bufsz)) == NULL) {
+	if ((buf = malloc(Bufsz)) == nil) {
 		perror("buf");
-		return 1;
+		exits("buf");
 	}
 
 	res = 0;
 	for (i = 1; i < argc && res == 0; i++) {
-		if ((fd = open(argv[i], O_RDONLY)) < 0) {
+		if ((fd = open(argv[i], OREAD)) < 0) {
 			perror(argv[i]);
 			res = 1;
 		} else {
 			if (argc > 2)
-				printf("hx %s\n", argv[i]);
+				print("hx %s\n", argv[i]);
 			if ((res = hx(fd)) != 0)
 				perror(argv[1]);
 			close(fd);
@@ -167,5 +182,5 @@
 	memset(buf, 0, Bufsz);
 	free(buf);
 
-	return res;
+	exits(res == 0 ? nil : "error");
 }
--- /dev/null
+++ b/mkfile
@@ -1,0 +1,10 @@
+</$objtype/mkfile
+
+TARG=hx
+BIN=/$objtype/bin
+OFILES=\
+	hx.$O\
+
+default:V:	all
+
+</sys/src/cmd/mkone