diff -Nru tvision_level_j/source/linux.cpp tvision_level_j-laforge/source/linux.cpp
--- tvision_level_j/source/linux.cpp	2004-08-21 00:36:20.000000000 +0200
+++ tvision_level_j-laforge/source/linux.cpp	2004-11-03 17:55:51.000000000 +0100
@@ -2465,7 +2465,7 @@
 
     if(   !isatty(STDIN_FILENO) || !isatty(STDOUT_FILENO)
        || (tty_mode = fcntl(STDIN_FILENO, F_GETFL, 0)) == -1
-       || (tty_mode & O_ACCMODE) != O_RDWR
+       || !((tty_mode & O_ACCMODE) & O_RDWR)
        || tcgetattr(STDIN_FILENO, &old_tios))
                         error("Can not work with redirected stdin/stdout");
 
@@ -2536,7 +2536,8 @@
       int tmp = 7;  // get mouse reporting (check tty==con :)
       if(ioctl(STDIN_FILENO, TIOCLINUX, &tmp) != -1) work.pc_console = 1;
     }
-    if(work.pc_console && (hGPM = dlopen("libgpm.so", RTLD_NOW)) != NULL) {
+    if(work.pc_console && !no_gpm &&
+       (hGPM = dlopen("libgpm.so", RTLD_NOW)) != NULL) {
       pGpm_GetEvent = (tGpm_GetEvent)dlsym(hGPM, "Gpm_GetEvent");
       if(dlerror()) goto drop_gpm;
       pGpm_Close = (tGpm_Close)dlsym(hGPM, "Gpm_Close");
@@ -2563,7 +2564,7 @@
     if(work.pc_console) goto set_term_linux;
 
 //X11-console (speed - no check X11 if tty is console :)
-    if((hX11 = dlopen("libX11.so", RTLD_NOW)) != NULL) {
+    if(!no_x11 && (hX11 = dlopen("libX11.so", RTLD_NOW)) != NULL) {
       tXOpenDisplay pXOpenDisplay;
 
       pXCloseDisplay = (tXCloseDisplay)dlsym(hX11, "XCloseDisplay");
@@ -2573,7 +2574,6 @@
       pXQueryPointer = (tXQueryPointer)dlsym(hX11, "XQueryPointer");
       if(dlerror()) {
 drop_x11:
-        if(no_x11) goto ignore_x11;
         error("Invalid libX11.so\n"
                 "\tTemporary you may want to append 'noX11' to TVOPT");
       }

