--- gnuplot-4.0.0.orig/src/term.c +++ gnuplot-4.0.0/src/term.c @@ -1278,6 +1278,33 @@ return (t); } +#ifdef X11 +int +x11driver_found() +{ + char *binname = "/gnuplot_x11"; + char *fullname; + struct stat buf; + + fullname = (char*)malloc(sizeof(X11_DRIVER_DIR) + sizeof(binname) + 1); + strcat(fullname, X11_DRIVER_DIR); + strcat(fullname, binname); + + /* exists? */ + if (stat(fullname, &buf)) { + free(fullname); + return 0; + } + + free(fullname); + /* executable? */ + if (buf.st_mode && S_IXOTH) + return 1; + + return 0; +} +#endif + /* * Routine to detect what terminal is being used (or do anything else * that would be nice). One anticipated (or allowed for) side effect @@ -1356,12 +1383,18 @@ env_term = getenv("TERM"); /* try $TERM */ if (term_name == (char *) NULL && env_term != (char *) NULL && strcmp(env_term, "xterm") == 0) - term_name = "x11"; + term_name = "x11"; display = getenv("DISPLAY"); if (term_name == (char *) NULL && display != (char *) NULL) - term_name = "x11"; + term_name = "x11"; if (X11_Display) - term_name = "x11"; + term_name = "x11"; + /* if x11 was selected check for driver */ + if (term_name && (strcmp(term_name, "x11") == 0) && !x11driver_found() && isatty(fileno(stdin))) { + printf("*** X11 output driver not found, switching to dumb terminal!\n"); + printf("*** If you want to use the X11 output, please install the ""gnuplot-x11"" package\n"); + term_name = "dumb"; + }; #endif /* x11 */ #ifdef AMIGA