summaryrefslogtreecommitdiff
path: root/games-roguelike/dwarf-fortress/files/dwarf-fortress-0.47.05-nogtk.patch
diff options
context:
space:
mode:
Diffstat (limited to 'games-roguelike/dwarf-fortress/files/dwarf-fortress-0.47.05-nogtk.patch')
-rw-r--r--games-roguelike/dwarf-fortress/files/dwarf-fortress-0.47.05-nogtk.patch119
1 files changed, 119 insertions, 0 deletions
diff --git a/games-roguelike/dwarf-fortress/files/dwarf-fortress-0.47.05-nogtk.patch b/games-roguelike/dwarf-fortress/files/dwarf-fortress-0.47.05-nogtk.patch
new file mode 100644
index 000000000000..7702362b4a69
--- /dev/null
+++ b/games-roguelike/dwarf-fortress/files/dwarf-fortress-0.47.05-nogtk.patch
@@ -0,0 +1,119 @@
+Removes hard dependency on GTK in favour of stdin calls.
+
+--- a/g_src/KeybindingScreen.cpp
++++ b/g_src/KeybindingScreen.cpp
+@@ -1,7 +1,9 @@
+ #ifdef __APPLE__
+ # include "osx_messagebox.h"
+ #elif defined(unix)
+-# include <gtk/gtk.h>
++# ifdef HAVE_GTK
++# include <gtk/gtk.h>
++# endif
+ #endif
+
+ #include "GL/glew.h"
+--- a/g_src/enabler.cpp
++++ b/g_src/enabler.cpp
+@@ -1,7 +1,9 @@
+ #ifdef __APPLE__
+ # include "osx_messagebox.h"
+ #elif defined(unix)
+-# include <gtk/gtk.h>
++# ifdef HAVE_GTK
++# include <gtk/gtk.h>
++# endif
+ #endif
+
+ #include <cassert>
+@@ -713,7 +715,7 @@ int main (int argc, char* argv[]) {
+ #ifdef unix
+ setlocale(LC_ALL, "");
+ #endif
+-#if !defined(__APPLE__) && defined(unix)
++#if !defined(__APPLE__) && defined(unix) && defined(HAVE_GTK)
+ bool gtk_ok = false;
+ if (getenv("DISPLAY"))
+ gtk_ok = gtk_init_check(&argc, &argv);
+@@ -734,6 +736,7 @@ int main (int argc, char* argv[]) {
+ init.begin(); // Load init.txt settings
+
+ #if !defined(__APPLE__) && defined(unix)
++ #if defined(HAVE_GTK)
+ if (!gtk_ok && !init.display.flag.has_flag(INIT_DISPLAY_FLAG_TEXT)) {
+ puts("Display not found and PRINT_MODE not set to TEXT, aborting.");
+ exit(EXIT_FAILURE);
+@@ -743,6 +746,7 @@ int main (int argc, char* argv[]) {
+ puts("Graphical tiles are not compatible with text output, sorry");
+ exit(EXIT_FAILURE);
+ }
++ #endif
+ #endif
+
+ // Initialize video, if we /use/ video
+--- a/g_src/renderer_curses.cpp
++++ b/g_src/renderer_curses.cpp
+@@ -1,3 +1,7 @@
++#if defined(__APPLE__) || defined(unix)
++# include <unistd.h>
++#endif
++
+ static bool curses_initialized = false;
+
+ static void endwin_void() {
+--- a/g_src/win32_compat.cpp
++++ b/g_src/win32_compat.cpp
+@@ -13,7 +13,11 @@
+ # ifdef __APPLE__
+ # include "osx_messagebox.h"
+ # elif defined(unix)
+-# include <gtk/gtk.h>
++# ifdef HAVE_GTK
++# include <gtk/gtk.h>
++# else
++# include <unistd.h>
++# endif
+ # endif
+ #endif
+
+@@ -112,6 +116,7 @@ int MessageBox(HWND *dummy, const char *text, const char *caption, UINT type)
+ }
+ # else // GTK code
+ if (getenv("DISPLAY")) {
++ #ifdef HAVE_GTK
+ // Have X, will dialog
+ GtkWidget *dialog = gtk_message_dialog_new(NULL,
+ GTK_DIALOG_DESTROY_WITH_PARENT,
+@@ -141,6 +146,23 @@ int MessageBox(HWND *dummy, const char *text, const char *caption, UINT type)
+ break;
+ }
+ }
++ #else
++ if (isatty(fileno(stdin))) {
++ dprintf(2, "Alert %s:\n%s\n", caption ? caption : "", text ? text : "");
++ if (type & MB_YESNO) {
++ while(ret == IDOK) {
++ dprintf(2, "please answer with 'yes' or 'no'\n");
++ char buf[16];
++ fgets(buf, sizeof buf, stdin);
++ if(!strncmp(buf, "yes", 3)) ret = IDYES;
++ else if(!strncmp(buf, "no", 2)) ret = IDNO;
++ }
++ }
++ } else {
++ /* just assume windowed if no TTY is available to ask */
++ ret = IDNO;
++ }
++ #endif /* HAVE_GTK */
+ } else {
+ // Use curses
+ init_curses();
+@@ -173,7 +195,7 @@ int MessageBox(HWND *dummy, const char *text, const char *caption, UINT type)
+ }
+ nodelay(*stdscr_p, -1);
+ }
+-# endif
++ #endif
+
+ if (toggle_screen) {
+ enabler.toggle_fullscreen();