summary refs log tree commit diff homepage
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--.gitignore1
-rw-r--r--Makefile6
-rw-r--r--help.c187
3 files changed, 3 insertions, 191 deletions
diff --git a/.gitignore b/.gitignore
index 7f76e0f..230472d 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,7 +1,6 @@
 *.o
 chroot.tar
 client
-help
 merge
 meta
 root
diff --git a/Makefile b/Makefile
index f2b2ca0..2b0ca87 100644
--- a/Makefile
+++ b/Makefile
@@ -3,7 +3,7 @@ CHROOT_GROUP = $(CHROOT_USER)
 
 CFLAGS += -Wall -Wextra -Wpedantic
 LDLIBS = -lm -lcursesw
-BINS = server client help meta merge
+BINS = server client meta merge
 OBJS = $(BINS:%=%.o)
 
 all: tags $(BINS)
@@ -13,7 +13,7 @@ $(OBJS): torus.h
 tags: *.h *.c
 	ctags -w *.h *.c
 
-chroot.tar: server client help
+chroot.tar: server client
 	mkdir -p root
 	install -d -o root -g wheel \
 	    root/bin \
@@ -35,7 +35,7 @@ chroot.tar: server client help
 	cp -a -f /usr/share/locale root/usr/share
 	cp -p -f /usr/share/misc/termcap.db root/usr/share/misc
 	cp -p -f /bin/sh root/bin
-	install -o root -g wheel -m 555 server client help root/bin
+	install -o root -g wheel -m 555 server client root/bin
 	tar -c -f chroot.tar -C root bin home lib libexec usr
 
 clean:
diff --git a/help.c b/help.c
deleted file mode 100644
index dd13c4f..0000000
--- a/help.c
+++ /dev/null
@@ -1,187 +0,0 @@
-/* Copyright (C) 2017  June McEnroe <june@causal.agency>
- *
- * 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 <http://www.gnu.org/licenses/>.
- */
-
-#include <err.h>
-#include <stdint.h>
-#include <sys/socket.h>
-#include <sys/un.h>
-#include <sysexits.h>
-#include <unistd.h>
-
-#include "torus.h"
-
-static int client;
-
-static void clientMessage(struct ClientMessage msg) {
-	ssize_t size = send(client, &msg, sizeof(msg), 0);
-	if (size < 0) err(EX_IOERR, "send");
-}
-
-static void clientMove(int8_t dx, int8_t dy) {
-	struct ClientMessage msg = {
-		.type = CLIENT_MOVE,
-		.move = { .dx = dx, .dy = dy },
-	};
-	clientMessage(msg);
-}
-
-static void clientPut(uint8_t color, char cell) {
-	struct ClientMessage msg = {
-		.type = CLIENT_PUT,
-		.put = { .color = color, .cell = cell },
-	};
-	clientMessage(msg);
-}
-
-static const useconds_t DELAY = 50000;
-
-enum {
-	K = COLOR_BLACK,
-	R = COLOR_RED,
-	G = COLOR_GREEN,
-	Y = COLOR_YELLOW,
-	B = COLOR_BLUE,
-	M = COLOR_MAGENTA,
-	C = COLOR_CYAN,
-	W = COLOR_WHITE,
-	I = COLOR_BRIGHT | COLOR_WHITE,
-};
-
-static void h(void) { clientMove(-1,  0); usleep(DELAY); }
-static void j(void) { clientMove( 0,  1); usleep(DELAY); }
-static void k(void) { clientMove( 0, -1); usleep(DELAY); }
-static void l(void) { clientMove( 1,  0); usleep(DELAY); }
-static void y(void) { clientMove(-1, -1); usleep(DELAY); }
-static void u(void) { clientMove( 1, -1); usleep(DELAY); }
-static void b(void) { clientMove(-1,  1); usleep(DELAY); }
-static void n(void) { clientMove( 1,  1); usleep(DELAY); }
-
-static void p(uint8_t color, char cell) {
-	clientPut(color, cell);
-	usleep(DELAY);
-}
-
-static uint8_t len;
-
-static void s(uint8_t color, const char *str) {
-	for (; *str; ++len, ++str) {
-		clientPut(color, *str);
-		clientMove(1, 0);
-		usleep(DELAY);
-	}
-}
-
-static void r(void) {
-	clientMove(-len, 1);
-	usleep(DELAY);
-	len = 0;
-}
-
-int main() {
-	client = socket(PF_LOCAL, SOCK_STREAM, 0);
-	if (client < 0) err(EX_OSERR, "socket");
-
-	struct sockaddr_un addr = {
-		.sun_family = AF_LOCAL,
-		.sun_path = "torus.sock",
-	};
-	int error = connect(client, (struct sockaddr *)&addr, sizeof(addr));
-	if (error) err(EX_NOINPUT, "torus.sock");
-
-	pid_t pid = fork();
-	if (pid < 0) err(EX_OSERR, "fork");
-
-	if (!pid) {
-		for (;;) {
-			char buf[4096];
-			ssize_t size = recv(client, buf, sizeof(buf), 0);
-			if (size < 0) err(EX_IOERR, "recv");
-			if (!size) return EX_OK;
-		}
-	}
-
-	clientMove(-CELL_INIT_X, -CELL_INIT_Y);
-	clientMove(28, 0);
-
-	for (;;) {
-		for (int i = 0; i < 10; ++i) {
-			clientMove(0, 1);
-			usleep(DELAY / 5);
-		}
-		for (int i = 0; i < 11; ++i) {
-			for (int j = 0; j < 28; ++j) {
-				clientPut(W, ' ');
-				if (i % 2) clientMove(1, 0);
-				else clientMove(-1, 0);
-				usleep(DELAY / 5);
-			}
-			clientPut(W, ' ');
-			if (i != 10) clientMove(0, -1);
-			usleep(DELAY / 5);
-		}
-
-		j(); l(); l();
-		s(W, "Welcome to "); s(I, "ascii.town"); s(W, "!"); r();
-		r(); r();
-
-		n(); n(); s(W, "o-"); s(I, "l");
-		h(); b(); p(W, '\\'); n(); p(I, 'n');
-		y(); h(); p(W, '|'); j(); p(I, 'j');
-		y(); p(W, '/'); b(); p(I, 'b');
-		k(); u(); p(W, '-'); h(); p(I, 'h');
-		u(); p(W, '\\'); y(); p(I, 'y');
-		n(); l(); p(W, '|'); k(); p(I, 'k');
-		n(); p(W, '/');  u(); p(I, 'u');
-
-		u(); s(W, "    "); len = 0;
-
-		s(I, "q "); s(W, "quit");    r();
-		s(I, "i "); s(W, "insert");  r();
-		s(I, "r "); s(W, "replace"); r();
-		s(I, "R "); s(W, "draw");    r();
-		s(I, "~ "); s(W, "color");   r();
-		s(I, "` "); s(W, "pipette"); r();
-		s(I, "* "); s(W, "bright");
-
-		s(W, "     "); len = 0;
-
-		clientPut(W, '7'); k();
-		clientPut(C, '6'); k();
-		clientPut(M, '5'); k();
-		clientPut(B, '4'); k();
-		clientPut(Y, '3'); k();
-		clientPut(G, '2'); k();
-		clientPut(R, '1'); k();
-		clientPut(K, '0');
-
-		l(); l();
-
-		clientPut(K << 4, ')'); j();
-		clientPut(R << 4, '!'); j();
-		clientPut(G << 4, '@'); j();
-		clientPut(Y << 4, '#'); j();
-		clientPut(B << 4, '$'); j();
-		clientPut(M << 4, '%'); j();
-		clientPut(C << 4, '^'); j();
-		clientPut(W << 4, '&'); j();
-
-		h(); k(); k(); k(); k(); k(); k(); k(); k(); k(); h();
-
-		sleep(30);
-
-		u(); l(); l(); l();
-	}
-}