diff options
author | Kevin Lange <kevin.lange@dakko.us> | 2012-12-13 19:58:37 -0800 |
---|---|---|
committer | Kevin Lange <kevin.lange@dakko.us> | 2012-12-13 19:58:37 -0800 |
commit | e948abcb64adf60faa0c9ae095fdd85d0dfab7ce (patch) | |
tree | be6926d71ab4f57dc155ba9a0b6a5cb501155421 | |
parent | be9c6c6303122e7f83e5ce1137f5ec5434ea0e79 (diff) | |
download | nyancat-e948abcb64adf60faa0c9ae095fdd85d0dfab7ce.tar.gz |
Support building and running on とあるOS
-rw-r--r-- | src/nyancat.c | 28 |
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")) { |