Support building and running on とあるOS

This commit is contained in:
Kevin Lange 2012-12-13 19:58:37 -08:00
parent be9c6c6303
commit e948abcb64

View File

@ -58,9 +58,22 @@
#include <signal.h> #include <signal.h>
#include <time.h> #include <time.h>
#include <setjmp.h> #include <setjmp.h>
#include <sys/ioctl.h>
#include <getopt.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 #ifndef TIOCGWINSZ
#include <termios.h> #include <termios.h>
#ifdef ECHO #ifdef ECHO
@ -517,9 +530,20 @@ int main(int argc, char ** argv) {
} }
/* Also get the number of columns */ /* 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; struct winsize w;
ioctl(0, TIOCGWINSZ, &w); ioctl(0, TIOCGWINSZ, &w);
terminal_width = w.ws_col; terminal_width = w.ws_col;
#endif
} }
/* Convert the entire terminal string to lower case */ /* Convert the entire terminal string to lower case */
@ -535,6 +559,8 @@ int main(int argc, char ** argv) {
/* Do our terminal detection */ /* Do our terminal detection */
if (strstr(term, "xterm")) { if (strstr(term, "xterm")) {
ttype = 1; /* 256-color, spaces */ ttype = 1; /* 256-color, spaces */
} else if (strstr(term, "toaru")) {
ttype = 1; /* emulates xterm */
} else if (strstr(term, "linux")) { } else if (strstr(term, "linux")) {
ttype = 3; /* Spaces and blink attribute */ ttype = 3; /* Spaces and blink attribute */
} else if (strstr(term, "vtnt")) { } else if (strstr(term, "vtnt")) {