aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKevin Lange <kevin.lange@dakko.us>2012-12-13 19:58:37 -0800
committerKevin Lange <kevin.lange@dakko.us>2012-12-13 19:58:37 -0800
commite948abcb64adf60faa0c9ae095fdd85d0dfab7ce (patch)
treebe6926d71ab4f57dc155ba9a0b6a5cb501155421
parentbe9c6c6303122e7f83e5ce1137f5ec5434ea0e79 (diff)
downloadnyancat-e948abcb64adf60faa0c9ae095fdd85d0dfab7ce.tar.gz
Support building and running on とあるOS
-rw-r--r--src/nyancat.c28
1 files changed, 27 insertions, 1 deletions
diff --git a/src/nyancat.c b/src/nyancat.c
index d6eb4e4..6ab0403 100644
--- a/src/nyancat.c
+++ b/src/nyancat.c
@@ -58,9 +58,22 @@
#include <signal.h>
#include <time.h>
#include <setjmp.h>
-#include <sys/ioctl.h>
#include <getopt.h>
+#ifdef __toaru__
+
+#include <syscall.h>
+
+DEFN_SYSCALL2(nanosleep, 46, unsigned long, unsigned long);
+
+int usleep(useconds_t time) {
+ syscall_nanosleep(0, time / 10000);
+}
+
+#else
+#include <sys/ioctl.h>
+#endif
+
#ifndef TIOCGWINSZ
#include <termios.h>
#ifdef ECHO
@@ -517,9 +530,20 @@ int main(int argc, char ** argv) {
}
/* Also get the number of columns */
+#ifdef __toaru__
+ if (strstr(term, "toaru")) {
+ printf("\033[1003z");
+ fflush(stdout);
+ int height;
+ scanf("%d,%d", &terminal_width, &height);
+ } else {
+ terminal_width = 80; /* better safe than sorry */
+ }
+#else
struct winsize w;
ioctl(0, TIOCGWINSZ, &w);
terminal_width = w.ws_col;
+#endif
}
/* Convert the entire terminal string to lower case */
@@ -535,6 +559,8 @@ int main(int argc, char ** argv) {
/* Do our terminal detection */
if (strstr(term, "xterm")) {
ttype = 1; /* 256-color, spaces */
+ } else if (strstr(term, "toaru")) {
+ ttype = 1; /* emulates xterm */
} else if (strstr(term, "linux")) {
ttype = 3; /* Spaces and blink attribute */
} else if (strstr(term, "vtnt")) {