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")) { | 
