diff options
Diffstat (limited to 'help.c')
-rw-r--r-- | help.c | 244 |
1 files changed, 122 insertions, 122 deletions
diff --git a/help.c b/help.c index da73527..61a0488 100644 --- a/help.c +++ b/help.c @@ -1,4 +1,4 @@ -/* Copyright (c) 2017, Curtis McEnroe <curtis@cmcenroe.me> +/* Copyright (C) 2017 Curtis 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 @@ -26,37 +26,37 @@ 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"); + 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); + 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); + struct ClientMessage msg = { + .type = CLIENT_PUT, + .put = { .color = color, .cell = cell }, + }; + clientMessage(msg); } static const useconds_t DELAY = 50000; enum { - 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, + 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); } @@ -69,116 +69,116 @@ 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); + 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); - } + for (; *str; ++len, ++str) { + clientPut(color, *str); + clientMove(1, 0); + usleep(DELAY); + } } static void r(void) { - clientMove(-len, 1); - usleep(DELAY); - len = 0; + 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(); - - l(); n(); - - 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(); - } + 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(); + + l(); n(); + + 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(); + } } |