summary | shortlog | log | commit | commitdiff | tree
raw | patch | inline | side by side (parent: df92291)
raw | patch | inline | side by side (parent: df92291)
author | Avuton Olrich <avuton@gmail.com> | |
Thu, 3 Nov 2011 09:20:51 +0000 (02:20 -0700) | ||
committer | Avuton Olrich <avuton@gmail.com> | |
Thu, 3 Nov 2011 13:16:00 +0000 (06:16 -0700) |
This commit adds the ax_with_curses.m4 macro from the autoconf-archive
project. This also adds support for more plain curses, proper color detection
and compartmentalizes the curses autoconf stuff.
project. This also adds support for more plain curses, proper color detection
and compartmentalizes the curses autoconf stuff.
19 files changed:
Makefile.am | patch | blob | history | |
configure.ac | patch | blob | history | |
m4/ax_with_curses.m4 | [new file with mode: 0644] | patch | blob |
src/charset.c | patch | blob | history | |
src/colors.h | patch | blob | history | |
src/hscroll.h | patch | blob | history | |
src/list_window.h | patch | blob | history | |
src/ncfix.h | patch | blob | history | |
src/ncmpc_curses.h | [new file with mode: 0644] | patch | blob |
src/ncu.c | patch | blob | history | |
src/options.c | patch | blob | history | |
src/screen.h | patch | blob | history | |
src/screen_browser.h | patch | blob | history | |
src/screen_interface.h | patch | blob | history | |
src/screen_list.h | patch | blob | history | |
src/song_paint.h | patch | blob | history | |
src/window.h | patch | blob | history | |
src/wreadln.c | patch | blob | history | |
src/wreadln.h | patch | blob | history |
diff --git a/Makefile.am b/Makefile.am
index e93c941f95bb2fec1d7b9ce17fc5c1939569327a..d0b55fcc852a53839be441950302eb1979302de1 100644 (file)
--- a/Makefile.am
+++ b/Makefile.am
AUTOMAKE_OPTIONS = foreign 1.10 dist-bzip2 subdir-objects
AM_CPPFLAGS = \
+ $(CURSES_LIB) \
$(LIBMPDCLIENT_CFLAGS) \
$(GLIB_CFLAGS) \
$(LIBLIRCCLIENT_CFLAGS) \
src/plugin.h \
src/lyrics.h \
src/str_pool.h \
- src/lirc.h
+ src/lirc.h \
+ src/ncmpc_curses.h
bin_PROGRAMS = src/ncmpc
src_ncmpc_LDADD = \
+ $(CURSES_LIB) \
$(LIBMPDCLIENT_LIBS) \
$(GLIB_LIBS) \
$(LIBLIRCCLIENT_LIBS)
diff --git a/configure.ac b/configure.ac
index 1935b1b599dc5be512dd8f31ab006eaad8845db5..4e85b10ecdd92d302a7455fae47d3e7c00199da5 100644 (file)
--- a/configure.ac
+++ b/configure.ac
dnl Check for programs
AC_PROG_CC_C99
AC_PROG_INSTALL
+AX_WITH_CURSES
+
+AS_IF([ test "x$ax_cv_curses" = xno ],
+ [AC_MSG_ERROR([No curses support detected.])
+ ])
dnl =======================================================
dnl initialize variables
auto=no
disable_mini=no
auto_mini=no
- ncurses=ncurses
else
auto=auto
disable_mini=yes
auto_mini=auto
- ncurses=auto
fi
AC_CANONICAL_HOST
mingw32* | windows*)
LIBS="$LIBS -lws2_32"
;;
+
*)
AC_CHECK_FUNC([socket],
[],
])
esac
-
-dnl wide character support
-AC_ARG_ENABLE([wide],
- AS_HELP_STRING([--enable-wide],
- [Enable wide character support]),,
- [enable_wide=auto])
-
-
-dnl ncurses
-AC_ARG_WITH([ncurses],
- AS_HELP_STRING([--with-ncurses], [compile/link with ncurses library] ),
- [ncurses=ncurses])
-AC_ARG_WITH(ncursesw,
- AS_HELP_STRING([--with-ncursesw], [compile/link with wide-char ncurses library @<:@default@:>@]),
- [ncurses=ncursesw])
-
-if test "x$enable_wide" = "xno"; then
- if test "x$ncurses" = "xauto"; then
- dnl select narrow ncurses
- ncurses=ncurses
- fi
-
- if test "x$ncurses" = "xncursesw"; then
- AC_MSG_WARN([Narrow ncmpc linking against wide libncurses])
- fi
-fi
-
-if test "x$ncurses" = "xauto"; then
- AC_CHECK_LIB([ncursesw],
- [initscr],
- [ncurses=ncursesw],
- [ncurses=ncurses])
-fi
-
-AC_CHECK_LIB([$ncurses],
- [initscr],
- [LIBS="$LIBS -l$ncurses"],
- [AC_MSG_ERROR($ncurses library is required)])
-
-if test "x$ncurses" = "xncursesw"; then
- AC_CHECK_HEADER([ncursesw/ncurses.h],
- AC_DEFINE([HAVE_NCURSESW_NCURSES_H], [1], [ncursesw/ncurses.h]),
- ,)
-fi
-
-
-dnl wide character support II
-
-if test "x$enable_wide" = "xauto" ; then
- AC_CHECK_LIB([$ncurses],
- [wget_wch],
- [enable_wide=yes],
- [enable_wide=no])
-fi
-
-AC_MSG_CHECKING([wide character support])
-AC_MSG_RESULT([$enable_wide])
-
-if test "x$enable_wide" = "xyes" ; then
- AC_DEFINE([ENABLE_WIDE], [1], [Enable wide character support])
-fi
-
dnl multi-byte character support
AC_ARG_ENABLE([multibyte],
if test x$enable_multibyte = xyes; then
AC_DEFINE([ENABLE_MULTIBYTE], [1], [Enable multibyte character support])
else
- if test x$enable_wide = xyes; then
+ if test "x$ax_cv_ncursesw" = xyes; then
AC_MSG_WARN(wide characters without multibyte characters makes little sense)
fi
fi
fi
dnl enable colors
-AC_MSG_CHECKING([color support])
AC_ARG_ENABLE([colors],
AS_HELP_STRING([--enable-colors],
- [Enable color support]),,
- [enable_colors=$disable_mini])
-AC_MSG_RESULT([$enable_colors])
-if test "x$enable_colors" = "xyes" ; then
- AC_DEFINE([ENABLE_COLORS], [1], [Enable color support])
-fi
+ [Enable color support]),
+ [enable_colors=$enableval],
+ [enable_colors=auto])
+AC_MSG_CHECKING([whether to include color support])
+AS_IF([ test "x$enable_colors" = xyes || test "x$enable_colors" = xauto ],
+ [AS_IF([ test "x$disable_mini" = xyes],
+ [AS_IF([ test "x$ax_cv_curses_color" = xyes ],
+ [AC_MSG_RESULT([yes])
+ AC_DEFINE([ENABLE_COLORS], [1], [Enable color support])],
+ [AS_IF([ test "x$enable_colors" = xyes ],
+ AC_MSG_ERROR(["No color support found in curses library"])
+ AC_MSG_RESULT([no]),
+ AC_MSG_RESULT([no])
+ )
+ ])
+ ],
+ [AC_MSG_RESULT([no])
+ AC_MSG_WARN(["Colors disabled due to mini mode being enabled."])]
+ )],
+ [AC_MSG_RESULT([no])])
dnl test for LIRC support
AM_CONDITIONAL(ENABLE_HELP_SCREEN, test x$enable_help_screen = xyes)
dnl Optional - curses getmouse support
-AC_MSG_CHECKING([whether to include mouse support])
+
+dnl AC_CHECK_LIB depends on being able to prepend a '-l', remove the '-l' from CURSES_LIB first
+AC_CHECK_LIB([$(expr substr $CURSES_LIB 3 99)],
+ [getmouse],
+ [ax_cv_curses_mouse=yes],
+ [ax_cv_curses_mouse=no])
+
AC_ARG_ENABLE([mouse],
- AS_HELP_STRING([--enable-mouse],
- [Enable curses getmouse support @<:@default=yes@:>@]),,
- [enable_mouse=$disable_mini])
-AC_MSG_RESULT([$enable_mouse])
-if test "x$enable_mouse" = "xyes" ; then
- AC_CHECK_LIB([$ncurses],
- [getmouse],
- [AC_DEFINE([HAVE_GETMOUSE], [1], [$ncurses - getmouse()])],
- [])
-fi
+ AS_HELP_STRING([--enable-mouse],
+ [Enable curses getmouse support @<:@default=yes@:>@]),
+ [enable_mouse=$enableval],
+ [enable_mouse=auto])
+
+AC_MSG_CHECKING([whether to include mouse support])
+
+AS_IF([ test "x$enable_mouse" = xyes || test "x$enable_mouse" = xauto ],
+ [AS_IF([ test "x$disable_mini" = xyes],
+ [AS_IF([ test "x$ax_cv_curses_mouse" = xyes ],
+ [AC_MSG_RESULT([yes])
+ AC_DEFINE([HAVE_GETMOUSE], [1], [Enable mouse support])],
+ [AC_MSG_RESULT([no])
+ AS_IF([ test "x$enable_mouse" = xyes ],
+ [AC_MSG_ERROR(["No mouse support found in curses library"])
+ ])
+ ])
+ ],
+ [AC_MSG_RESULT([no])
+ AC_MSG_WARN("Mouse disabled due to mini mode being enabled.")]
+ )],
+ [AC_MSG_RESULT([no])])
dnl Optional screen - artist
AC_MSG_CHECKING([whether to include the artist screen])
AC_MSG_CHECKING([whether to include the lyrics screen])
AC_ARG_ENABLE([lyrics-screen],
AS_HELP_STRING([--enable-lyrics-screen],
- [Enable lyrics screen @<:@default=no@:>@]),,
+ [Enable lyrics screen @<:@default=no@:>@]),
+ [enable_lyrics_screen=$enableval],
[enable_lyrics_screen=no])
+
+case "$host_os" in
+mingw32* | windows*)
+ AS_IF([ test "x$enable_lyrics_screen" = xyes ],
+ [AC_MSG_ERROR([Lyrics screen is not yet compatible with windows.])
+ ])
+esac
+
if test "x$enable_lyrics_screen" = "xyes" ; then
AC_DEFINE(ENABLE_LYRICS_SCREEN, 1, [Enable lyrics screen])
fi
diff --git a/m4/ax_with_curses.m4 b/m4/ax_with_curses.m4
--- /dev/null
+++ b/m4/ax_with_curses.m4
@@ -0,0 +1,518 @@
+# ===========================================================================
+# http://www.gnu.org/software/autoconf-archive/ax_with_curses.html
+# ===========================================================================
+#
+# SYNOPSIS
+#
+# AX_WITH_CURSES
+#
+# DESCRIPTION
+#
+# This macro checks whether a SysV or X/Open-compatible Curses library is
+# present, along with the associated header file. The NcursesW
+# (wide-character) library is searched for first, followed by Ncurses,
+# then the system-default plain Curses. The first library found is the
+# one returned.
+#
+# The following options are understood: --with-ncursesw, --with-ncurses,
+# --without-ncursesw, --without-ncurses. The "--with" options force the
+# macro to use that particular library, terminating with an error if not
+# found. The "--without" options simply skip the check for that library.
+# The effect on the search pattern is:
+#
+# (no options) - NcursesW, Ncurses, Curses
+# --with-ncurses --with-ncursesw - NcursesW only [*]
+# --without-ncurses --with-ncursesw - NcursesW only [*]
+# --with-ncursesw - NcursesW only [*]
+# --with-ncurses --without-ncursesw - Ncurses only [*]
+# --with-ncurses - NcursesW, Ncurses [**]
+# --without-ncurses --without-ncursesw - Curses only
+# --without-ncursesw - Ncurses, Curses
+# --without-ncurses - NcursesW, Curses
+#
+# [*] If the library is not found, abort the configure script.
+#
+# [**] If the second library (Ncurses) is not found, abort configure.
+#
+# The following preprocessor symbols may be defined by this macro if the
+# appropriate conditions are met:
+#
+# HAVE_CURSES - if any SysV or X/Open Curses library found
+# HAVE_CURSES_ENHANCED - if library supports X/Open Enhanced functions
+# HAVE_CURSES_COLOR - if library supports color (enhanced functions)
+# HAVE_CURSES_OBSOLETE - if library supports certain obsolete features
+# HAVE_NCURSESW - if NcursesW (wide char) library is to be used
+# HAVE_NCURSES - if the Ncurses library is to be used
+#
+# HAVE_CURSES_H - if <curses.h> is present and should be used
+# HAVE_NCURSESW_H - if <ncursesw.h> should be used
+# HAVE_NCURSES_H - if <ncurses.h> should be used
+# HAVE_NCURSESW_CURSES_H - if <ncursesw/curses.h> should be used
+# HAVE_NCURSES_CURSES_H - if <ncurses/curses.h> should be used
+#
+# (These preprocessor symbols are discussed later in this document.)
+#
+# The following output variable is defined by this macro; it is precious
+# and may be overridden on the ./configure command line:
+#
+# CURSES_LIB - library to add to xxx_LDADD
+#
+# The library listed in CURSES_LIB is NOT added to LIBS by default. You
+# need to add CURSES_LIB to the appropriate xxx_LDADD line in your
+# Makefile.am. For example:
+#
+# prog_LDADD = @CURSES_LIB@
+#
+# If CURSES_LIB is set on the configure command line (such as by running
+# "./configure CURSES_LIB=-lmycurses"), then the only header searched for
+# is <curses.h>. The user may use the CPPFLAGS precious variable to
+# override the standard #include search path. If the user needs to
+# specify an alternative path for a library (such as for a non-standard
+# NcurseW), the user should use the LDFLAGS variable.
+#
+# The following shell variables may be defined by this macro:
+#
+# ax_cv_curses - set to "yes" if any Curses library found
+# ax_cv_curses_enhanced - set to "yes" if Enhanced functions present
+# ax_cv_curses_color - set to "yes" if color functions present
+# ax_cv_curses_obsolete - set to "yes" if obsolete features present
+#
+# ax_cv_ncursesw - set to "yes" if NcursesW library found
+# ax_cv_ncurses - set to "yes" if Ncurses library found
+# ax_cv_plaincurses - set to "yes" if plain Curses library found
+# ax_cv_curses_which - set to "ncursesw", "ncurses", "plaincurses" or "no"
+#
+# These variables can be used in your configure.ac to determine the level
+# of support you need from the Curses library. For example, if you must
+# have either Ncurses or NcursesW, you could include:
+#
+# AX_WITH_CURSES
+# if test "x$ax_cv_ncursesw" != xyes && test "x$ax_cv_ncurses" != xyes; then
+# AX_MSG_ERROR([requires either NcursesW or Ncurses library])
+# fi
+#
+# If any Curses library will do (but one must be present and must support
+# color), you could use:
+#
+# AX_WITH_CURSES
+# if test "x$ax_cv_curses" != xyes || test "x$ax_cv_curses_color" != xyes; then
+# AC_MSG_ERROR([requires an X/Open-compatible Curses library with color])
+# fi
+#
+# Certain preprocessor symbols and shell variables defined by this macro
+# can be used to determine various features of the Curses library. In
+# particular, HAVE_CURSES and ax_cv_curses are defined if the Curses
+# library found conforms to the traditional SysV and/or X/Open Base Curses
+# definition. Any working Curses library conforms to this level.
+#
+# HAVE_CURSES_ENHANCED and ax_cv_curses_enhanced are defined if the
+# library supports the X/Open Enhanced Curses definition. In particular,
+# the wide-character types attr_t, cchar_t and wint_t, the functions
+# wattr_set() and wget_wch() and the macros WA_NORMAL and _XOPEN_CURSES
+# are checked. The Ncurses library does NOT conform to this definition,
+# although NcursesW does.
+#
+# HAVE_CURSES_COLOR and ax_cv_curses_color are defined if the library
+# supports color functions and macros such as COLOR_PAIR, A_COLOR,
+# COLOR_WHITE, COLOR_RED and init_pair(). These are NOT part of the
+# X/Open Base Curses definition, but are part of the Enhanced set of
+# functions. The Ncurses library DOES support these functions, as does
+# NcursesW.
+#
+# HAVE_CURSES_OBSOLETE and ax_cv_curses_obsolete are defined if the
+# library supports certain features present in SysV and BSD Curses but not
+# defined in the X/Open definition. In particular, the functions
+# getattrs(), getcurx() and getmaxx() are checked.
+#
+# To use the HAVE_xxx_H preprocessor symbols, insert the following into
+# your system.h (or equivalent) header file:
+#
+# #if defined(HAVE_NCURSESW_CURSES_H)
+# # include <ncursesw/curses.h>
+# #elif defined(HAVE_NCURSESW_H)
+# # include <ncursesw.h>
+# #elif defined(HAVE_NCURSES_CURSES_H)
+# # include <ncurses/curses.h>
+# #elif defined(HAVE_NCURSES_H)
+# # include <ncurses.h>
+# #elif defined(HAVE_CURSES_H)
+# # include <curses.h>
+# #else
+# # error "SysV or X/Open-compatible Curses header file required"
+# #endif
+#
+# For previous users of this macro: you should not need to change anything
+# in your configure.ac or Makefile.am, as the previous (serial 10)
+# semantics are still valid. However, you should update your system.h (or
+# equivalent) header file to the fragment shown above. You are encouraged
+# also to make use of the extended functionality provided by this version
+# of AX_WITH_CURSES, as well as in the additional macros
+# AX_WITH_CURSES_PANEL, AX_WITH_CURSES_MENU and AX_WITH_CURSES_FORM.
+#
+# LICENSE
+#
+# Copyright (c) 2009 Mark Pulford <mark@kyne.com.au>
+# Copyright (c) 2009 Damian Pietras <daper@daper.net>
+# Copyright (c) 2011 Reuben Thomas <rrt@sc3d.org>
+# Copyright (c) 2011 John Zaitseff <J.Zaitseff@zap.org.au>
+#
+# This program is free software: you can redistribute it and/or modify it
+# under the terms of the GNU General Public License as published by the
+# Free Software Foundation, either version 3 of the License, or (at your
+# option) any later version.
+#
+# This program is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General
+# Public License for more details.
+#
+# You should have received a copy of the GNU General Public License along
+# with this program. If not, see <http://www.gnu.org/licenses/>.
+#
+# As a special exception, the respective Autoconf Macro's copyright owner
+# gives unlimited permission to copy, distribute and modify the configure
+# scripts that are the output of Autoconf when processing the Macro. You
+# need not follow the terms of the GNU General Public License when using
+# or distributing such scripts, even though portions of the text of the
+# Macro appear in them. The GNU General Public License (GPL) does govern
+# all other use of the material that constitutes the Autoconf Macro.
+#
+# This special exception to the GPL applies to versions of the Autoconf
+# Macro released by the Autoconf Archive. When you make and distribute a
+# modified version of the Autoconf Macro, you may extend this special
+# exception to the GPL to apply to your modified version as well.
+
+#serial 11
+
+AU_ALIAS([MP_WITH_CURSES], [AX_WITH_CURSES])
+AC_DEFUN([AX_WITH_CURSES], [
+ AC_ARG_VAR([CURSES_LIB], [linker library for Curses, e.g. -lcurses])
+ AC_ARG_WITH([ncurses], [AS_HELP_STRING([--with-ncurses],
+ [force the use of Ncurses or NcursesW])],
+ [], [with_ncurses=check])
+ AC_ARG_WITH([ncursesw], [AS_HELP_STRING([--without-ncursesw],
+ [do not use NcursesW (wide character support)])],
+ [], [with_ncursesw=check])
+
+ ax_saved_LIBS=$LIBS
+ AS_IF([test "x$with_ncurses" = xyes || test "x$with_ncursesw" = xyes],
+ [ax_with_plaincurses=no], [ax_with_plaincurses=check])
+
+ ax_cv_curses_which=no
+
+ # Test for NcursesW
+
+ AS_IF([test "x$CURSES_LIB" = x && test "x$with_ncursesw" != xno], [
+ LIBS="$ax_saved_LIBS -lncursesw"
+
+ AC_CACHE_CHECK([for NcursesW wide-character library], [ax_cv_ncursesw], [
+ AC_LINK_IFELSE([AC_LANG_CALL([], [initscr])],
+ [ax_cv_ncursesw=yes], [ax_cv_ncursesw=no])
+ ])
+ AS_IF([test "x$ax_cv_ncursesw" = xno && test "x$with_ncursesw" = xyes], [
+ AC_MSG_ERROR([--with-ncursesw specified but could not find NcursesW library])
+ ])
+
+ AS_IF([test "x$ax_cv_ncursesw" = xyes], [
+ ax_cv_curses=yes
+ ax_cv_curses_which=ncursesw
+ CURSES_LIB="-lncursesw"
+ AC_DEFINE([HAVE_NCURSESW], [1], [Define to 1 if the NcursesW library is present])
+ AC_DEFINE([HAVE_CURSES], [1], [Define to 1 if a SysV or X/Open compatible Curses library is present])
+
+ AC_CACHE_CHECK([for working ncursesw/curses.h], [ax_cv_header_ncursesw_curses_h], [
+ AC_LINK_IFELSE([AC_LANG_PROGRAM([[
+ @%:@define _XOPEN_SOURCE_EXTENDED 1
+ @%:@include <ncursesw/curses.h>
+ ]], [[
+ chtype a = A_BOLD;
+ int b = KEY_LEFT;
+ chtype c = COLOR_PAIR(1) & A_COLOR;
+ attr_t d = WA_NORMAL;
+ cchar_t e;
+ wint_t f;
+ int g = getattrs(stdscr);
+ int h = getcurx(stdscr) + getmaxx(stdscr);
+ initscr();
+ init_pair(1, COLOR_WHITE, COLOR_RED);
+ wattr_set(stdscr, d, 0, NULL);
+ wget_wch(stdscr, &f);
+ ]])],
+ [ax_cv_header_ncursesw_curses_h=yes],
+ [ax_cv_header_ncursesw_curses_h=no])
+ ])
+ AS_IF([test "x$ax_cv_header_ncursesw_curses_h" = xyes], [
+ ax_cv_curses_enhanced=yes
+ ax_cv_curses_color=yes
+ ax_cv_curses_obsolete=yes
+ AC_DEFINE([HAVE_CURSES_ENHANCED], [1], [Define to 1 if library supports X/Open Enhanced functions])
+ AC_DEFINE([HAVE_CURSES_COLOR], [1], [Define to 1 if library supports color (enhanced functions)])
+ AC_DEFINE([HAVE_CURSES_OBSOLETE], [1], [Define to 1 if library supports certain obsolete features])
+ AC_DEFINE([HAVE_NCURSESW_CURSES_H], [1], [Define to 1 if <ncursesw/curses.h> is present])
+ ])
+
+ AC_CACHE_CHECK([for working ncursesw.h], [ax_cv_header_ncursesw_h], [
+ AC_LINK_IFELSE([AC_LANG_PROGRAM([[
+ @%:@define _XOPEN_SOURCE_EXTENDED 1
+ @%:@include <ncursesw.h>
+ ]], [[
+ chtype a = A_BOLD;
+ int b = KEY_LEFT;
+ chtype c = COLOR_PAIR(1) & A_COLOR;
+ attr_t d = WA_NORMAL;
+ cchar_t e;
+ wint_t f;
+ int g = getattrs(stdscr);
+ int h = getcurx(stdscr) + getmaxx(stdscr);
+ initscr();
+ init_pair(1, COLOR_WHITE, COLOR_RED);
+ wattr_set(stdscr, d, 0, NULL);
+ wget_wch(stdscr, &f);
+ ]])],
+ [ax_cv_header_ncursesw_h=yes],
+ [ax_cv_header_ncursesw_h=no])
+ ])
+ AS_IF([test "x$ax_cv_header_ncursesw_h" = xyes], [
+ ax_cv_curses_enhanced=yes
+ ax_cv_curses_color=yes
+ ax_cv_curses_obsolete=yes
+ AC_DEFINE([HAVE_CURSES_ENHANCED], [1], [Define to 1 if library supports X/Open Enhanced functions])
+ AC_DEFINE([HAVE_CURSES_COLOR], [1], [Define to 1 if library supports color (enhanced functions)])
+ AC_DEFINE([HAVE_CURSES_OBSOLETE], [1], [Define to 1 if library supports certain obsolete features])
+ AC_DEFINE([HAVE_NCURSESW_H], [1], [Define to 1 if <ncursesw.h> is present])
+ ])
+
+ AC_CACHE_CHECK([for working ncurses.h], [ax_cv_header_ncurses_h_with_ncursesw], [
+ AC_LINK_IFELSE([AC_LANG_PROGRAM([[
+ @%:@define _XOPEN_SOURCE_EXTENDED 1
+ @%:@include <ncurses.h>
+ ]], [[
+ chtype a = A_BOLD;
+ int b = KEY_LEFT;
+ chtype c = COLOR_PAIR(1) & A_COLOR;
+ attr_t d = WA_NORMAL;
+ cchar_t e;
+ wint_t f;
+ int g = getattrs(stdscr);
+ int h = getcurx(stdscr) + getmaxx(stdscr);
+ initscr();
+ init_pair(1, COLOR_WHITE, COLOR_RED);
+ wattr_set(stdscr, d, 0, NULL);
+ wget_wch(stdscr, &f);
+ ]])],
+ [ax_cv_header_ncurses_h_with_ncursesw=yes],
+ [ax_cv_header_ncurses_h_with_ncursesw=no])
+ ])
+ AS_IF([test "x$ax_cv_header_ncurses_h_with_ncursesw" = xyes], [
+ ax_cv_curses_enhanced=yes
+ ax_cv_curses_color=yes
+ ax_cv_curses_obsolete=yes
+ AC_DEFINE([HAVE_CURSES_ENHANCED], [1], [Define to 1 if library supports X/Open Enhanced functions])
+ AC_DEFINE([HAVE_CURSES_COLOR], [1], [Define to 1 if library supports color (enhanced functions)])
+ AC_DEFINE([HAVE_CURSES_OBSOLETE], [1], [Define to 1 if library supports certain obsolete features])
+ AC_DEFINE([HAVE_NCURSES_H], [1], [Define to 1 if <ncurses.h> is present])
+ ])
+
+ AS_IF([test "x$ax_cv_header_ncursesw_curses_h" = xno && test "x$ax_cv_header_ncursesw_h" = xno && test "x$ax_cv_header_ncurses_h_with_ncursesw" = xno], [
+ AC_MSG_WARN([could not find a working ncursesw/curses.h, ncursesw.h or ncurses.h])
+ ])
+ ])
+ ])
+
+ # Test for Ncurses
+
+ AS_IF([test "x$CURSES_LIB" = x && test "x$with_ncurses" != xno && test "x$ax_cv_curses_which" = xno], [
+ LIBS="$ax_saved_LIBS -lncurses"
+
+ AC_CACHE_CHECK([for Ncurses library], [ax_cv_ncurses], [
+ AC_LINK_IFELSE([AC_LANG_CALL([], [initscr])],
+ [ax_cv_ncurses=yes], [ax_cv_ncurses=no])
+ ])
+ AS_IF([test "x$ax_cv_ncurses" = xno && test "x$with_ncurses" = xyes], [
+ AC_MSG_ERROR([--with-ncurses specified but could not find Ncurses library])
+ ])
+
+ AS_IF([test "x$ax_cv_ncurses" = xyes], [
+ ax_cv_curses=yes
+ ax_cv_curses_which=ncurses
+ CURSES_LIB="-lncurses"
+ AC_DEFINE([HAVE_NCURSES], [1], [Define to 1 if the Ncurses library is present])
+ AC_DEFINE([HAVE_CURSES], [1], [Define to 1 if a SysV or X/Open compatible Curses library is present])
+
+ AC_CACHE_CHECK([for working ncurses/curses.h], [ax_cv_header_ncurses_curses_h], [
+ AC_LINK_IFELSE([AC_LANG_PROGRAM([[
+ @%:@include <ncurses/curses.h>
+ ]], [[
+ chtype a = A_BOLD;
+ int b = KEY_LEFT;
+ chtype c = COLOR_PAIR(1) & A_COLOR;
+ int g = getattrs(stdscr);
+ int h = getcurx(stdscr) + getmaxx(stdscr);
+ initscr();
+ init_pair(1, COLOR_WHITE, COLOR_RED);
+ ]])],
+ [ax_cv_header_ncurses_curses_h=yes],
+ [ax_cv_header_ncurses_curses_h=no])
+ ])
+ AS_IF([test "x$ax_cv_header_ncurses_curses_h" = xyes], [
+ ax_cv_curses_color=yes
+ ax_cv_curses_obsolete=yes
+ AC_DEFINE([HAVE_CURSES_COLOR], [1], [Define to 1 if library supports color (enhanced functions)])
+ AC_DEFINE([HAVE_CURSES_OBSOLETE], [1], [Define to 1 if library supports certain obsolete features])
+ AC_DEFINE([HAVE_NCURSES_CURSES_H], [1], [Define to 1 if <ncurses/curses.h> is present])
+ ])
+
+ AC_CACHE_CHECK([for working ncurses.h], [ax_cv_header_ncurses_h], [
+ AC_LINK_IFELSE([AC_LANG_PROGRAM([[
+ @%:@include <ncurses.h>
+ ]], [[
+ chtype a = A_BOLD;
+ int b = KEY_LEFT;
+ chtype c = COLOR_PAIR(1) & A_COLOR;
+ int g = getattrs(stdscr);
+ int h = getcurx(stdscr) + getmaxx(stdscr);
+ initscr();
+ init_pair(1, COLOR_WHITE, COLOR_RED);
+ ]])],
+ [ax_cv_header_ncurses_h=yes],
+ [ax_cv_header_ncurses_h=no])
+ ])
+ AS_IF([test "x$ax_cv_header_ncurses_h" = xyes], [
+ ax_cv_curses_color=yes
+ ax_cv_curses_obsolete=yes
+ AC_DEFINE([HAVE_CURSES_COLOR], [1], [Define to 1 if library supports color (enhanced functions)])
+ AC_DEFINE([HAVE_CURSES_OBSOLETE], [1], [Define to 1 if library supports certain obsolete features])
+ AC_DEFINE([HAVE_NCURSES_H], [1], [Define to 1 if <ncurses.h> is present])
+ ])
+
+ AS_IF([test "x$ax_cv_header_ncurses_curses_h" = xno && test "x$ax_cv_header_ncurses_h" = xno], [
+ AC_MSG_WARN([could not find a working ncurses/curses.h or ncurses.h])
+ ])
+ ])
+ ])
+
+ # Test for plain Curses (or if CURSES_LIB was set by user)
+
+ AS_IF([test "x$with_plaincurses" != xno && test "x$ax_cv_curses_which" = xno], [
+ AS_IF([test "x$CURSES_LIB" != x], [
+ LIBS="$ax_saved_LIBS $CURSES_LIB"
+ ], [
+ LIBS="$ax_saved_LIBS -lcurses"
+ ])
+
+ AC_CACHE_CHECK([for Curses library], [ax_cv_plaincurses], [
+ AC_LINK_IFELSE([AC_LANG_CALL([], [initscr])],
+ [ax_cv_plaincurses=yes], [ax_cv_plaincurses=no])
+ ])
+
+ AS_IF([test "x$ax_cv_plaincurses" = xyes], [
+ ax_cv_curses=yes
+ ax_cv_curses_which=plaincurses
+ AS_IF([test "x$CURSES_LIB" = x], [
+ CURSES_LIB="-lcurses"
+ ])
+ AC_DEFINE([HAVE_CURSES], [1], [Define to 1 if a SysV or X/Open compatible Curses library is present])
+
+ # Check for base conformance (and header file)
+
+ AC_CACHE_CHECK([for working curses.h], [ax_cv_header_curses_h], [
+ AC_LINK_IFELSE([AC_LANG_PROGRAM([[
+ @%:@include <curses.h>
+ ]], [[
+ chtype a = A_BOLD;
+ int b = KEY_LEFT;
+ initscr();
+ ]])],
+ [ax_cv_header_curses_h=yes],
+ [ax_cv_header_curses_h=no])
+ ])
+ AS_IF([test "x$ax_cv_header_curses_h" = xyes], [
+ AC_DEFINE([HAVE_CURSES_H], [1], [Define to 1 if <curses.h> is present])
+
+ # Check for X/Open Enhanced conformance
+
+ AC_CACHE_CHECK([for X/Open Enhanced Curses conformance], [ax_cv_plaincurses_enhanced], [
+ AC_LINK_IFELSE([AC_LANG_PROGRAM([[
+ @%:@define _XOPEN_SOURCE_EXTENDED 1
+ @%:@include <curses.h>
+ @%:@ifndef _XOPEN_CURSES
+ @%:@error "this Curses library is not enhanced"
+ "this Curses library is not enhanced"
+ @%:@endif
+ ]], [[
+ chtype a = A_BOLD;
+ int b = KEY_LEFT;
+ chtype c = COLOR_PAIR(1) & A_COLOR;
+ attr_t d = WA_NORMAL;
+ cchar_t e;
+ wint_t f;
+ initscr();
+ init_pair(1, COLOR_WHITE, COLOR_RED);
+ wattr_set(stdscr, d, 0, NULL);
+ wget_wch(stdscr, &f);
+ ]])],
+ [ax_cv_plaincurses_enhanced=yes],
+ [ax_cv_plaincurses_enhanced=no])
+ ])
+ AS_IF([test "x$ax_cv_plaincurses_enhanced" = xyes], [
+ ax_cv_curses_enhanced=yes
+ ax_cv_curses_color=yes
+ AC_DEFINE([HAVE_CURSES_ENHANCED], [1], [Define to 1 if library supports X/Open Enhanced functions])
+ AC_DEFINE([HAVE_CURSES_COLOR], [1], [Define to 1 if library supports color (enhanced functions)])
+ ])
+
+ # Check for color functions
+
+ AC_CACHE_CHECK([for Curses color functions], [ax_cv_plaincurses_color], [
+ AC_LINK_IFELSE([AC_LANG_PROGRAM([[
+ @%:@define _XOPEN_SOURCE_EXTENDED 1
+ @%:@include <curses.h>
+ ]], [[
+ chtype a = A_BOLD;
+ int b = KEY_LEFT;
+ chtype c = COLOR_PAIR(1) & A_COLOR;
+ initscr();
+ init_pair(1, COLOR_WHITE, COLOR_RED);
+ ]])],
+ [ax_cv_plaincurses_color=yes],
+ [ax_cv_plaincurses_color=no])
+ ])
+ AS_IF([test "x$ax_cv_plaincurses_color" = xyes], [
+ ax_cv_curses_color=yes
+ AC_DEFINE([HAVE_CURSES_COLOR], [1], [Define to 1 if library supports color (enhanced functions)])
+ ])
+
+ # Check for obsolete functions
+
+ AC_CACHE_CHECK([for obsolete Curses functions], [ax_cv_plaincurses_obsolete], [
+ AC_LINK_IFELSE([AC_LANG_PROGRAM([[
+ @%:@include <curses.h>
+ ]], [[
+ chtype a = A_BOLD;
+ int b = KEY_LEFT;
+ int g = getattrs(stdscr);
+ int h = getcurx(stdscr) + getmaxx(stdscr);
+ initscr();
+ ]])],
+ [ax_cv_plaincurses_obsolete=yes],
+ [ax_cv_plaincurses_obsolete=no])
+ ])
+ AS_IF([test "x$ax_cv_plaincurses_obsolete" = xyes], [
+ ax_cv_curses_obsolete=yes
+ AC_DEFINE([HAVE_CURSES_OBSOLETE], [1], [Define to 1 if library supports certain obsolete features])
+ ])
+ ])
+
+ AS_IF([test "x$ax_cv_header_curses_h" = xno], [
+ AC_MSG_WARN([could not find a working curses.h])
+ ])
+ ])
+ ])
+
+ AS_IF([test "x$ax_cv_curses" != xyes], [ax_cv_curses=no])
+ AS_IF([test "x$ax_cv_curses_enhanced" != xyes], [ax_cv_curses_enhanced=no])
+ AS_IF([test "x$ax_cv_curses_color" != xyes], [ax_cv_curses_color=no])
+ AS_IF([test "x$ax_cv_curses_obsolete" != xyes], [ax_cv_curses_obsolete=no])
+
+ LIBS=$ax_saved_LIBS
+])dnl
diff --git a/src/charset.c b/src/charset.c
index 7e2e2d1aeffa5acbacc2f67dd3ad1d7be91dee0e..34381adfcdc3f195a5d7ac6fa139d2c95b70af89 100644 (file)
--- a/src/charset.c
+++ b/src/charset.c
}
#endif
-#ifdef ENABLE_WIDE
+#ifdef HAVE_CURSES_ENHANCED
static inline unsigned
unicode_char_width(gunichar ch)
{
return 1;
}
-#endif /* ENABLE_WIDE */
+#endif /* HAVE_CURSES_ENHANCED */
unsigned
utf8_width(const char *str)
{
assert(str != NULL);
-#if defined(ENABLE_MULTIBYTE) && !defined(ENABLE_WIDE)
+#if defined(ENABLE_MULTIBYTE) && !defined(HAVE_CURSES_ENHANCED)
return g_utf8_strlen(str, -1);
#else
-#ifdef ENABLE_WIDE
+#ifdef HAVE_CURSES_ENHANCED
if (g_utf8_validate(str, -1, NULL)) {
size_t len = g_utf8_strlen(str, -1);
unsigned width = 0;
{
assert(p != NULL);
-#ifdef ENABLE_WIDE
+#ifdef HAVE_CURSES_ENHANCED
if (!g_utf8_validate(p, -1, NULL))
return ascii_cut_width(p, max_width);
return wide_cut_width(p, max_width);
-#elif defined(ENABLE_MULTIBYTE) && !defined(ENABLE_WIDE)
+#elif defined(ENABLE_MULTIBYTE) && !defined(HAVE_CURSES_ENHANCED)
return narrow_cut_width(p, max_width);
#else
return ascii_cut_width(p, max_width);
diff --git a/src/colors.h b/src/colors.h
index f10cb5133e9a6235a0fce1455482b07abbb5fb7f..cfe345bbce1b1ce765719be533bc9e380ef2342e 100644 (file)
--- a/src/colors.h
+++ b/src/colors.h
#define COLORS_H
#include "config.h"
-
-#ifdef HAVE_NCURSESW_NCURSES_H
-#include <ncursesw/ncurses.h>
-#else
-#include <ncurses.h>
-#endif
+#include "ncmpc_curses.h"
enum color {
COLOR_TITLE = 1,
diff --git a/src/hscroll.h b/src/hscroll.h
index 3e8fd79322b4c3e623ea82074a7c1411ae925a2c..0b44dadc2001fdc0f460bb40d031c7d5cc581310 100644 (file)
--- a/src/hscroll.h
+++ b/src/hscroll.h
#define HSCROLL_H
#include "config.h"
+#include "ncmpc_curses.h"
#include <glib.h>
-#ifdef HAVE_NCURSESW_NCURSES_H
-#include <ncursesw/ncurses.h>
-#else
-#include <ncurses.h>
-#endif
-
/**
* This class is used to auto-scroll text which does not fit on the
* screen. Call hscroll_init() to initialize the object,
diff --git a/src/list_window.h b/src/list_window.h
index 8f67c858523602f59f99b4c886853913fb3849a1..bac5d5e77d6aadbeddb3315e8107b260942d7750 100644 (file)
--- a/src/list_window.h
+++ b/src/list_window.h
#include "config.h"
#include "command.h"
#include "colors.h"
+#include "ncmpc_curses.h"
#include <glib.h>
#include <stdbool.h>
-#ifdef HAVE_NCURSESW_NCURSES_H
-#include <ncursesw/ncurses.h>
-#else
-#include <ncurses.h>
-#endif
-
typedef const char *
(*list_window_callback_fn_t)(unsigned i, void *data);
diff --git a/src/ncfix.h b/src/ncfix.h
index e63efa6582ea6b0b63d226230a002931ce725425..fd86452417cee625560e0aaa95312f1191952082 100644 (file)
--- a/src/ncfix.h
+++ b/src/ncfix.h
#ifndef NCFIX_H
#define NCFIX_H
-#ifdef HAVE_NCURSESW_NCURSES_H
-#include <ncursesw/ncurses.h>
-#else
-#include <ncurses.h>
-#endif
+#include "ncmpc_curses.h"
/**
* Workaround for "comparison will always evaluate as 'true' for the
diff --git a/src/ncmpc_curses.h b/src/ncmpc_curses.h
--- /dev/null
+++ b/src/ncmpc_curses.h
@@ -0,0 +1,32 @@
+/* ncmpc (Ncurses MPD Client)
+ * (c) 2004-2010 The Music Player Daemon Project
+ * Project homepage: http://musicpd.org
+
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+*/
+
+#if defined(HAVE_NCURSESW_CURSES_H)
+# include <ncursesw/curses.h>
+#elif defined(HAVE_NCURSESW_H)
+# include <ncursesw.h>
+#elif defined(HAVE_NCURSES_CURSES_H)
+# include <ncurses/curses.h>
+#elif defined(HAVE_NCURSES_H)
+# include <ncurses.h>
+#elif defined(HAVE_CURSES_H)
+# include <curses.h>
+#else
+# error "SysV or X/Open-compatible Curses header file required"
+#endif
diff --git a/src/ncu.c b/src/ncu.c
index 65b1c78d042b079106733c1a11ca8ec5c238ff51..40e22eae0d1363ffb1b73304d3bc71b1dca9bb6b 100644 (file)
--- a/src/ncu.c
+++ b/src/ncu.c
#include "ncu.h"
#include "config.h"
+#include "ncmpc_curses.h"
#ifdef ENABLE_COLORS
#include "colors.h"
#include "options.h"
#endif
-#ifdef HAVE_NCURSESW_NCURSES_H
-#include <ncursesw/ncurses.h>
-#else
-#include <ncurses.h>
-#endif
-
static SCREEN *ncu_screen;
void
diff --git a/src/options.c b/src/options.c
index e2051c576fe578d527866dea9802fcaea18e0df8..63f8aab4cffb0dae85cfa2f01be3cf211afb08ec 100644 (file)
--- a/src/options.c
+++ b/src/options.c
#ifdef ENABLE_MULTIBYTE
" multibyte"
#endif
-#ifdef ENABLE_WIDE
+#ifdef HAVE_CURSES_ENHANCED
" wide"
#endif
#ifdef ENABLE_LOCALE
diff --git a/src/screen.h b/src/screen.h
index e3b00626fc7d762477bf53d6655ed4c5a412fa7d..d0ae704a0ec845a57307a597055eb72adbb723a6 100644 (file)
--- a/src/screen.h
+++ b/src/screen.h
#include "title_bar.h"
#include "progress_bar.h"
#include "status_bar.h"
+#include "ncmpc_curses.h"
#include <mpd/client.h>
#include <glib.h>
-#ifdef HAVE_NCURSESW_NCURSES_H
-#include <ncursesw/ncurses.h>
-#else
-#include <ncurses.h>
-#endif
-
struct mpdclient;
struct screen_functions;
diff --git a/src/screen_browser.h b/src/screen_browser.h
index 6ba092194833ef9bf6756921dcefeaac4defef06..f6cfd5a57d21c0c604d888bbd299bc9cc65048fe 100644 (file)
--- a/src/screen_browser.h
+++ b/src/screen_browser.h
#include "command.h"
#include "config.h"
+#include "ncmpc_curses.h"
#include <stdbool.h>
-#ifdef HAVE_NCURSESW_NCURSES_H
-#include <ncursesw/ncurses.h>
-#else
-#include <ncurses.h>
-#endif
-
struct mpdclient;
struct mpdclient_playlist;
struct filelist;
diff --git a/src/screen_interface.h b/src/screen_interface.h
index a853185c0fab11fd6ed3564388bfe4d6859a2e70..bcf442a1fefdd668863404a3cc02a68b1b133337 100644 (file)
--- a/src/screen_interface.h
+++ b/src/screen_interface.h
#include "config.h"
#include "command.h"
+#include "ncmpc_curses.h"
#include <stdbool.h>
#include <stddef.h>
-#ifdef HAVE_NCURSESW_NCURSES_H
-#include <ncursesw/ncurses.h>
-#else
-#include <ncurses.h>
-#endif
-
struct mpdclient;
struct screen_functions {
diff --git a/src/screen_list.h b/src/screen_list.h
index df61f0894a0f3a68c9e4a8a41baed1a912e747f4..aa10e32782bc38124e603d237ed5cf4350ccd1a8 100644 (file)
--- a/src/screen_list.h
+++ b/src/screen_list.h
#define SCREEN_LIST_H
#include "config.h"
-
-#ifdef HAVE_NCURSESW_NCURSES_H
-#include <ncursesw/ncurses.h>
-#else
-#include <ncurses.h>
-#endif
+#include "ncmpc_curses.h"
struct screen_functions;
diff --git a/src/song_paint.h b/src/song_paint.h
index 10efde4ae9ef03e9df91567ab2869d13eb0c8e75..7a676608aa24b0c9e7cf4382f5092685aded6380 100644 (file)
--- a/src/song_paint.h
+++ b/src/song_paint.h
#define NCMPC_SONG_PAINT_H
#include "config.h"
+#include "ncmpc_curses.h"
#include <stdbool.h>
-#ifdef HAVE_NCURSESW_NCURSES_H
-#include <ncursesw/ncurses.h>
-#else
-#include <ncurses.h>
-#endif
-
struct mpd_song;
struct hscroll;
diff --git a/src/window.h b/src/window.h
index 5a33012df3b4e673a75b6728171983026d128e9c..63e5eb90b4a8a3643164e2e936fe8d8cceefb782 100644 (file)
--- a/src/window.h
+++ b/src/window.h
#define NCMPC_WINDOW_H
#include "config.h"
-
-#ifdef HAVE_NCURSESW_NCURSES_H
-#include <ncursesw/ncurses.h>
-#else
-#include <ncurses.h>
-#endif
+#include "ncmpc_curses.h"
struct window {
WINDOW *w;
diff --git a/src/wreadln.c b/src/wreadln.c
index 44d00028292494d9a5e8f0e35de516d45629cf10..be4f2667cc391732731e2ef06cf94536ddb98c4f 100644 (file)
--- a/src/wreadln.c
+++ b/src/wreadln.c
#include <string.h>
#include <glib.h>
-#if (defined(ENABLE_WIDE) || defined(ENABLE_MULTIBYTE)) && !defined(WIN32)
+#if (defined(HAVE_CURSES_ENHANCED) || defined(ENABLE_MULTIBYTE)) && !defined(WIN32)
#include <sys/poll.h>
#endif
static unsigned
byte_to_screen(const gchar *data, size_t x)
{
-#if defined(ENABLE_WIDE) || defined(ENABLE_MULTIBYTE)
+#if defined(HAVE_CURSES_ENHANCED) || defined(ENABLE_MULTIBYTE)
gchar *dup;
char *p;
unsigned width;
static size_t
screen_to_bytes(const gchar *data, unsigned width)
{
-#if defined(ENABLE_WIDE) || defined(ENABLE_MULTIBYTE)
+#if defined(HAVE_CURSES_ENHANCED) || defined(ENABLE_MULTIBYTE)
size_t length = strlen(data);
gchar *dup = g_strdup(data);
char *p;
static inline size_t
right_align_bytes(const gchar *data, size_t right, unsigned width)
{
-#if defined(ENABLE_WIDE) || defined(ENABLE_MULTIBYTE)
+#if defined(HAVE_CURSES_ENHANCED) || defined(ENABLE_MULTIBYTE)
gchar *dup;
size_t start = 0;
static inline size_t
next_char_size(const gchar *data)
{
-#if defined(ENABLE_WIDE) || defined(ENABLE_MULTIBYTE)
+#if defined(HAVE_CURSES_ENHANCED) || defined(ENABLE_MULTIBYTE)
char *p = locale_to_utf8(data), *q;
gunichar c;
size_t size;
static inline size_t
prev_char_size(const gchar *data, size_t x)
{
-#if defined(ENABLE_WIDE) || defined(ENABLE_MULTIBYTE)
+#if defined(HAVE_CURSES_ENHANCED) || defined(ENABLE_MULTIBYTE)
char *p = locale_to_utf8(data), *q;
gunichar c;
size_t size;
doupdate();
}
-#if defined(ENABLE_WIDE) || defined(ENABLE_MULTIBYTE)
+#if defined(HAVE_CURSES_ENHANCED) || defined(ENABLE_MULTIBYTE)
static bool
multibyte_is_complete(const char *p, size_t length)
{
wreadln_insert_byte(struct wreadln *wr, gint key)
{
size_t rest = strlen(wr->line + wr->cursor) + 1;
-#if (defined(ENABLE_WIDE) || defined(ENABLE_MULTIBYTE)) && !defined (WIN32)
+#if (defined(HAVE_CURSES_ENHANCED) || defined(ENABLE_MULTIBYTE)) && !defined (WIN32)
char buffer[32] = { key };
size_t length = 1;
struct pollfd pfd = {
diff --git a/src/wreadln.h b/src/wreadln.h
index f03a32dc4f360f8c4d019431a276a1bc49bcc4b5..0a4572d4e0377978f538d7d046705036e005e89d 100644 (file)
--- a/src/wreadln.h
+++ b/src/wreadln.h
#define WREADLN_H
#include "config.h"
+#include "ncmpc_curses.h"
#include <glib.h>
-#ifdef HAVE_NCURSESW_NCURSES_H
-#include <ncursesw/ncurses.h>
-#else
-#include <ncurses.h>
-#endif
-
#ifndef NCMPC_MINI
/* completion callback data */