check_function_exists(nice HAVE_NICE)
check_library_exists(dl dladdr "dlfcn.h" HAVE_DLADDR)
check_library_exists(execinfo backtrace_symbols "" HAVE_LIBEXECINFO)
-check_library_exists(readline readline "" HAVE_LIBREADLINE)
-check_library_exists(ncurses attroff "" HAVE_LIBNCURSES)
check_include_file_cxx(cxxabi.h HAVE_CXXABI_H)
if(HAVE_LIBEXECINFO)
* GNU flex (flex) >= 2.5.35
* recommended: libexecinfo on FreeBSD (automatically used when Icinga 2 is
installed via port or package)
-* recommended: GNU readline (readline-devel on RHEL, libreadline-dev on Debian)
-* recommended: ncurses (ncurses-devel on RHEL, libncurses-dev on Debian)
* optional: MySQL (mysql-devel on RHEL, libmysqlclient-dev on Debian); set CMake
variable `ICINGA2_WITH_MYSQL` to disable this module
* optional: PostgreSQL (postgresql-devel on RHEL, libpq-dev on Debian); set CMake
#cmakedefine HAVE_LIBEXECINFO
#cmakedefine HAVE_CXXABI_H
#cmakedefine HAVE_NICE
-#cmakedefine HAVE_LIBREADLINE
-#cmakedefine HAVE_LIBNCURSES
#cmakedefine ICINGA2_UNITY_BUILD
BuildRequires: flex >= 2.5.35
BuildRequires: bison
BuildRequires: make
-BuildRequires: readline-devel
-BuildRequires: ncurses-devel
%if "%{_vendor}" == "redhat" && (0%{?el5} || 0%{?rhel} == 5 || "%{?dist}" == ".el5")
# el5 requires packages.icinga.org
target_link_libraries(cli ${Boost_LIBRARIES} base config remote)
-if(HAVE_LIBREADLINE)
- target_link_libraries(cli readline)
-endif()
-
-if(HAVE_LIBNCURSES)
- target_link_libraries(cli ncurses)
-endif()
-
set_target_properties (
cli PROPERTIES
INSTALL_RPATH ${CMAKE_INSTALL_FULL_LIBDIR}/icinga2
#include "base/networkstream.hpp"
#include <iostream>
-#if defined(HAVE_LIBREADLINE) && defined(HAVE_LIBNCURSES)
-extern "C" {
-#include <readline/readline.h>
-#include <readline/history.h>
-}
-#endif /* HAVE_LIBREADLINE && HAVE_LIBNCURSES */
using namespace icinga;
namespace po = boost::program_options;
String fileName = "<" + Convert::ToString(next_line) + ">";
next_line++;
-#if defined(HAVE_LIBREADLINE) && defined(HAVE_LIBNCURSES)
- ConsoleType type = Console::GetType(std::cout);
-
- std::stringstream prompt_sbuf;
-
- prompt_sbuf << RL_PROMPT_START_IGNORE << ConsoleColorTag(Console_ForegroundCyan, type)
- << RL_PROMPT_END_IGNORE << fileName
- << RL_PROMPT_START_IGNORE << ConsoleColorTag(Console_ForegroundRed, type)
- << RL_PROMPT_END_IGNORE << " => "
- << RL_PROMPT_START_IGNORE << ConsoleColorTag(Console_Normal, type);
-#else /* HAVE_LIBREADLINE && HAVE_LIBNCURSES */
std::cout << ConsoleColorTag(Console_ForegroundCyan)
<< fileName
<< ConsoleColorTag(Console_ForegroundRed)
<< " => "
<< ConsoleColorTag(Console_Normal);
-#endif /* HAVE_LIBREADLINE && HAVE_LIBNCURSES */
-
-#if defined(HAVE_LIBREADLINE) && defined(HAVE_LIBNCURSES)
- String prompt = prompt_sbuf.str();
-
- char *rline = readline(prompt.CStr());
-
- if (!rline)
- break;
-
- if (*rline)
- add_history(rline);
- String line = rline;
- free(rline);
-#else /* HAVE_LIBREADLINE */
std::string line;
std::getline(std::cin, line);
-#endif /* HAVE_LIBREADLINE */
if (addr.IsEmpty()) {
Expression *expr;