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 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159
|
From: =?utf-8?q?Lo=C3=AFc_Minier?= <lool@dooz.org>
Date: Sun, 3 Aug 2008 14:42:21 +0000
Subject: Allow using the builtin termcap support instead of ncurses
---
configure.in | 85 ++++++++++++++++++++++++++++++++----------------------------
src/keymap.c | 6 ++++-
src/ssfe.c | 2 +-
3 files changed, 52 insertions(+), 41 deletions(-)
diff --git a/configure.in b/configure.in
index 33cd3e8..a87edc4 100644
--- a/configure.in
+++ b/configure.in
@@ -368,45 +368,52 @@ fi
AC_CHECK_FUNC(floor,,AC_CHECK_LIB(m,floor,LIBS=["$LIBS -lm"]))
AC_CHECK_FUNCS([ceil floor])
-# Look for tgetent
-
-AC_CHECK_FUNC([tgetent],[vte_cv_termcap_lib=libc],
- [AC_CHECK_LIB([ncurses],[tgetent],[vte_cv_termcap_lib=libncurses],
- [AC_CHECK_LIB([tinfo],[tgetent],[vte_cv_termcap_lib=libtinfo],
- [AC_CHECK_LIB([curses],[tgetent],[vte_cv_termcap_lib=libcurses],
- [AC_CHECK_LIB([termcap],[tgetent],[vte_cv_termcap_lib=libtermcap],
- [vte_cv_termcap_lib=])])])])])
-
-case "$vte_cv_termcap_lib" in
- libc) # FIXME: which headers to include here?
- ;;
- libncurses) # We need ncurses.h and term.h, or ncurses/curses.h and ncurses/term.h
- AC_CHECK_HEADERS([ncurses.h term.h],[],
- [AC_CHECK_HEADERS([ncurses/curses.h ncurses/term.h],[],
- [AC_MSG_ERROR([ncurses headers not found])])])
- LIBS="-lncurses $LIBS"
- ;;
- libtinfo) # Need ncurses/curses.h and ncurses/term.h
- AC_CHECK_HEADERS([ncurses.h term.h],[],
- [AC_CHECK_HEADERS([ncurses/curses.h ncurses/term.h],[],
- [AC_MSG_ERROR([ncurses headers not found])])])
- LIBS="-ltinfo $LIBS"
- ;;
- libcurses) # Need curses.h and term.h
- AC_CHECK_HEADERS([curses.h term.h],[],
- [AC_MSG_ERROR([curses headers not found])],
- [[#ifdef HAVE_CURSES_H
- #include <curses.h>
- #endif]])
- LIBS="-lcurses $LIBS"
- ;;
- libtermcap) # Need termcap.h
- AC_CHECK_HEADERS([termcap.h],[],
- [AC_MSG_ERROR([termcap headers not found])])
- LIBS="-ltermcap $LIBS"
- ;;
- *) AC_MSG_ERROR([tgetent not found in any library]) ;;
-esac
+AC_ARG_WITH(ncurses,
+ [AS_HELP_STRING([--without-ncurses],
+ [don't use ncurses library])
+ ], with_ncurses=$withval, with_ncurses=yes)
+
+if test x$with_ncurses = xyes ; then
+ # Look for tgetent
+
+ AC_CHECK_FUNC([tgetent],[vte_cv_termcap_lib=libc],
+ [AC_CHECK_LIB([ncurses],[tgetent],[vte_cv_termcap_lib=libncurses],
+ [AC_CHECK_LIB([tinfo],[tgetent],[vte_cv_termcap_lib=libtinfo],
+ [AC_CHECK_LIB([curses],[tgetent],[vte_cv_termcap_lib=libcurses],
+ [AC_CHECK_LIB([termcap],[tgetent],[vte_cv_termcap_lib=libtermcap],
+ [vte_cv_termcap_lib=])])])])])
+
+ case "$vte_cv_termcap_lib" in
+ libc) # FIXME: which headers to include here?
+ ;;
+ libncurses) # We need ncurses.h and term.h, or ncurses/curses.h and ncurses/term.h
+ AC_CHECK_HEADERS([ncurses.h term.h],[],
+ [AC_CHECK_HEADERS([ncurses/curses.h ncurses/term.h],[],
+ [AC_MSG_ERROR([ncurses headers not found])])])
+ LIBS="-lncurses $LIBS"
+ ;;
+ libtinfo) # Need ncurses/curses.h and ncurses/term.h
+ AC_CHECK_HEADERS([ncurses.h term.h],[],
+ [AC_CHECK_HEADERS([ncurses/curses.h ncurses/term.h],[],
+ [AC_MSG_ERROR([ncurses headers not found])])])
+ LIBS="-ltinfo $LIBS"
+ ;;
+ libcurses) # Need curses.h and term.h
+ AC_CHECK_HEADERS([curses.h term.h],[],
+ [AC_MSG_ERROR([curses headers not found])],
+ [[#ifdef HAVE_CURSES_H
+ #include <curses.h>
+ #endif]])
+ LIBS="-lcurses $LIBS"
+ ;;
+ libtermcap) # Need termcap.h
+ AC_CHECK_HEADERS([termcap.h],[],
+ [AC_MSG_ERROR([termcap headers not found])])
+ LIBS="-ltermcap $LIBS"
+ ;;
+ *) AC_MSG_ERROR([tgetent not found in any library]) ;;
+ esac
+fi
# Search for the required modules.
diff --git a/src/keymap.c b/src/keymap.c
index 95b4c5b..66672e3 100644
--- a/src/keymap.c
+++ b/src/keymap.c
@@ -50,7 +50,7 @@
#include <termcap.h>
#define VTE_TERMCAP_NAME "termcap"
#else
-#error No termcap??
+#undef VTE_TERMCAP_NAME
#endif
#ifdef VTE_DEBUG
@@ -1025,8 +1025,10 @@ _vte_keymap_map(guint keyval,
enum _vte_fkey_mode fkey_mode;
char *cap, *tmp;
const char *termcap_special = NULL;
+#ifdef VTE_TERMCAP_NAME
char ncurses_buffer[4096];
char ncurses_area[512];
+#endif
g_return_if_fail(normal != NULL);
g_return_if_fail(normal_length != NULL);
@@ -1180,6 +1182,7 @@ _vte_keymap_map(guint keyval,
}
}
}
+#ifdef VTE_TERMCAP_NAME
if (termcap_special != NULL) {
tmp = g_strdup(terminal);
cap = NULL;
@@ -1220,6 +1223,7 @@ _vte_keymap_map(guint keyval,
return;
}
}
+#endif
_vte_debug_print(VTE_DEBUG_KEYBOARD,
" (ignoring, no match for modifier state).\n");
diff --git a/src/ssfe.c b/src/ssfe.c
index 33706eb..31250c0 100644
--- a/src/ssfe.c
+++ b/src/ssfe.c
@@ -38,7 +38,7 @@
#include <termcap.h>
#define VTE_TERMCAP_NAME "termcap"
#else
-#error No termcap??
+#undef VTE_TERMCAP_NAME
#endif
#include <sys/types.h>
|