diff options
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.patch | 119 |
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(); |