diff options
Diffstat (limited to 'src')
-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")) { |