aboutsummaryrefslogtreecommitdiffstats
path: root/packages/gnuplot/files/debian-separate-x11-package.patch
blob: 7afa0ee00ef129a2e1fb8c6030f6550d97964254 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
--- 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