From 1e1a8cb30a45d379ced4c7a07b3ad8207d33fbba Mon Sep 17 00:00:00 2001 From: pravin-battu Date: Tue, 13 Oct 2020 12:36:31 -0300 Subject: [PATCH] changes to convert from readline to editline --- CMakeLists.txt | 73 +- CMakeModules/FindReadline.cmake | 47 - src/rpc/cli.cpp | 139 +- vendor/editline/.gitignore | 29 + vendor/editline/.travis.yml | 34 + vendor/editline/ChangeLog.md | 241 ++ vendor/editline/INSTALL.md | 46 + vendor/editline/LICENSE | 18 + vendor/editline/Make.os9 | 19 + vendor/editline/Makefile.am | 52 + vendor/editline/README.md | 271 +++ vendor/editline/autogen.sh | 3 + vendor/editline/configure.ac | 99 + vendor/editline/debian/.gitignore | 10 + vendor/editline/debian/README.Debian | 9 + vendor/editline/debian/changelog | 122 + vendor/editline/debian/compat | 1 + vendor/editline/debian/control | 31 + vendor/editline/debian/copyright | 27 + vendor/editline/debian/dirs | 2 + vendor/editline/debian/docs | 1 + .../editline/debian/libeditline-dev.install | 4 + vendor/editline/debian/libeditline0.install | 1 + vendor/editline/debian/rules | 8 + vendor/editline/debian/source/format | 1 + vendor/editline/docs/HACKING.md | 106 + vendor/editline/docs/README | 68 + vendor/editline/docs/TODO.md | 41 + vendor/editline/examples/.gitignore | 5 + vendor/editline/examples/Makefile.am | 5 + vendor/editline/examples/cli.c | 168 ++ vendor/editline/examples/excallback.c | 195 ++ vendor/editline/examples/fileman.c | 431 ++++ vendor/editline/examples/testit.c | 78 + vendor/editline/include/Makefile.am | 2 + vendor/editline/include/editline.h | 132 ++ vendor/editline/libeditline.pc.in | 12 + vendor/editline/m4/.gitignore | 1 + vendor/editline/man/Makefile.am | 3 + vendor/editline/man/editline.3 | 274 +++ vendor/editline/src/.gitignore | 2 + vendor/editline/src/Makefile.am | 6 + vendor/editline/src/complete.c | 442 ++++ vendor/editline/src/editline.c | 1969 +++++++++++++++++ vendor/editline/src/editline.h | 101 + vendor/editline/src/os9.h | 26 + .../src/project_editline-build/examples/cli | Bin 0 -> 124568 bytes .../examples/excallback | Bin 0 -> 124864 bytes .../project_editline-build/examples/fileman | Bin 0 -> 138288 bytes .../project_editline-build/examples/testit | Bin 0 -> 121168 bytes .../src/.libs/libeditline.so.1 | 1 + .../src/.libs/libeditline.so.1.0.0 | Bin 0 -> 115216 bytes .../project_editline-autogen | 0 .../project_editline-build | 0 .../project_editline-configure | 0 .../project_editline-done | 0 .../project_editline-download | 0 .../project_editline-install | 0 .../project_editline-mkdir | 0 .../project_editline-patch | 0 .../project_editline-update | 0 vendor/editline/src/sysos9.c | 64 + vendor/editline/src/sysunix.c | 251 +++ vendor/editline/src/unix.h | 36 + .../editline/tmp/project_editline-cfgcmd.txt | 1 + .../tmp/project_editline-cfgcmd.txt.in | 1 + 66 files changed, 5586 insertions(+), 123 deletions(-) delete mode 100755 CMakeModules/FindReadline.cmake create mode 100644 vendor/editline/.gitignore create mode 100644 vendor/editline/.travis.yml create mode 100644 vendor/editline/ChangeLog.md create mode 100644 vendor/editline/INSTALL.md create mode 100644 vendor/editline/LICENSE create mode 100644 vendor/editline/Make.os9 create mode 100644 vendor/editline/Makefile.am create mode 100644 vendor/editline/README.md create mode 100755 vendor/editline/autogen.sh create mode 100644 vendor/editline/configure.ac create mode 100644 vendor/editline/debian/.gitignore create mode 100644 vendor/editline/debian/README.Debian create mode 100644 vendor/editline/debian/changelog create mode 100644 vendor/editline/debian/compat create mode 100644 vendor/editline/debian/control create mode 100644 vendor/editline/debian/copyright create mode 100644 vendor/editline/debian/dirs create mode 100644 vendor/editline/debian/docs create mode 100644 vendor/editline/debian/libeditline-dev.install create mode 100644 vendor/editline/debian/libeditline0.install create mode 100755 vendor/editline/debian/rules create mode 100644 vendor/editline/debian/source/format create mode 100644 vendor/editline/docs/HACKING.md create mode 100755 vendor/editline/docs/README create mode 100644 vendor/editline/docs/TODO.md create mode 100644 vendor/editline/examples/.gitignore create mode 100644 vendor/editline/examples/Makefile.am create mode 100644 vendor/editline/examples/cli.c create mode 100644 vendor/editline/examples/excallback.c create mode 100644 vendor/editline/examples/fileman.c create mode 100644 vendor/editline/examples/testit.c create mode 100644 vendor/editline/include/Makefile.am create mode 100644 vendor/editline/include/editline.h create mode 100644 vendor/editline/libeditline.pc.in create mode 100644 vendor/editline/m4/.gitignore create mode 100644 vendor/editline/man/Makefile.am create mode 100644 vendor/editline/man/editline.3 create mode 100644 vendor/editline/src/.gitignore create mode 100644 vendor/editline/src/Makefile.am create mode 100644 vendor/editline/src/complete.c create mode 100644 vendor/editline/src/editline.c create mode 100644 vendor/editline/src/editline.h create mode 100644 vendor/editline/src/os9.h create mode 100755 vendor/editline/src/project_editline-build/examples/cli create mode 100755 vendor/editline/src/project_editline-build/examples/excallback create mode 100755 vendor/editline/src/project_editline-build/examples/fileman create mode 100755 vendor/editline/src/project_editline-build/examples/testit create mode 120000 vendor/editline/src/project_editline-build/src/.libs/libeditline.so.1 create mode 100755 vendor/editline/src/project_editline-build/src/.libs/libeditline.so.1.0.0 create mode 100644 vendor/editline/src/project_editline-stamp/project_editline-autogen create mode 100644 vendor/editline/src/project_editline-stamp/project_editline-build create mode 100644 vendor/editline/src/project_editline-stamp/project_editline-configure create mode 100644 vendor/editline/src/project_editline-stamp/project_editline-done create mode 100644 vendor/editline/src/project_editline-stamp/project_editline-download create mode 100644 vendor/editline/src/project_editline-stamp/project_editline-install create mode 100644 vendor/editline/src/project_editline-stamp/project_editline-mkdir create mode 100644 vendor/editline/src/project_editline-stamp/project_editline-patch create mode 100644 vendor/editline/src/project_editline-stamp/project_editline-update create mode 100644 vendor/editline/src/sysos9.c create mode 100644 vendor/editline/src/sysunix.c create mode 100644 vendor/editline/src/unix.h create mode 100644 vendor/editline/tmp/project_editline-cfgcmd.txt create mode 100644 vendor/editline/tmp/project_editline-cfgcmd.txt.in diff --git a/CMakeLists.txt b/CMakeLists.txt index bd52180..351b860 100755 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -108,6 +108,54 @@ else ( MSVC ) endif ( MSVC ) # End configure secp256k1-zkp +# Configure editline +if ( MSVC ) + # autoconf won't work here, hard code the defines + set( EDITLINE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/vendor/editline" ) + + file( GLOB EDITLINE_SOURCES "${EDITLINE_DIR}/src/editline.c" ) + add_library( editline ${EDITLINE_SOURCES} ) + + target_include_directories( editline PRIVATE "${EDITLINE_DIR}" PUBLIC "${EDITLINE_DIR}/include" ) + + set_target_properties( editline PROPERTIES COMPILE_DEFINITIONS LINKER_LANGUAGE C ) +else ( MSVC ) + include(ExternalProject) + if ( MINGW ) + ExternalProject_Add( project_editline + PREFIX ${CMAKE_CURRENT_BINARY_DIR}/vendor/editline + SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/vendor/editline + CONFIGURE_COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/vendor/editline/configure --prefix=${CMAKE_CURRENT_BINARY_DIR}/vendor/editline --host=x86_64-w64-mingw32 + BUILD_COMMAND make + INSTALL_COMMAND true + BUILD_BYPRODUCTS ${CMAKE_CURRENT_BINARY_DIR}/vendor/editline/src/project_editline-build/.libs/libeditline.a + ) + else ( MINGW ) + ExternalProject_Add( project_editline + PREFIX ${CMAKE_CURRENT_BINARY_DIR}/vendor/editline + SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/vendor/editline + CONFIGURE_COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/vendor/editline/configure --prefix=${CMAKE_CURRENT_BINARY_DIR}/vendor/editline + BUILD_COMMAND make + INSTALL_COMMAND true + BUILD_BYPRODUCTS ${CMAKE_CURRENT_BINARY_DIR}/vendor/editline/src/project_editline-build/.libs/libeditline.a + ) + endif ( MINGW ) + ExternalProject_Add_Step(project_editline autogen + WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/vendor/editline + COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/vendor/editline/autogen.sh + DEPENDERS configure + ) + + ExternalProject_Get_Property(project_editline binary_dir) + + add_library(editline STATIC IMPORTED) + set_property(TARGET editline PROPERTY IMPORTED_LOCATION ${binary_dir}/src/.libs/libeditline${CMAKE_STATIC_LIBRARY_SUFFIX}) + set_property(TARGET editline PROPERTY INTERFACE_INCLUDE_DIRECTORIES ${CMAKE_CURRENT_SOURCE_DIR}/vendor/editline/include) + add_dependencies(editline project_editline) + install( FILES ${binary_dir}/src/.libs/libeditline${CMAKE_STATIC_LIBRARY_SUFFIX} DESTINATION lib/cryptonomex ) +endif ( MSVC ) +# End configure editline + IF( WIN32 ) MESSAGE(STATUS "Configuring fc to build on Win32") @@ -258,27 +306,17 @@ add_subdirectory( vendor/websocketpp EXCLUDE_FROM_ALL ) setup_library( fc SOURCES ${sources} LIBRARY_TYPE STATIC ) install( DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/include/" DESTINATION include ) -# begin readline stuff -find_package(Curses) -find_package(Readline) - -file(GLOB HEADERS "include/bts/cli/*.hpp") - -if (READLINE_FOUND) - target_compile_definitions (fc PRIVATE HAVE_READLINE) - set(readline_libraries ${Readline_LIBRARY}) - if (CURSES_FOUND) - list(APPEND readline_libraries ${CURSES_LIBRARY}) - endif() - set(readline_includes ${Readline_INCLUDE_DIR}) -endif() +# begin editline stuff if(WIN32) target_compile_definitions( fc PRIVATE _CRT_NONSTDC_NO_DEPRECATE ) +else(WIN32) + target_compile_definitions( fc PRIVATE HAVE_EDITLINE ) + set( editline_libraries editline ) endif(WIN32) -# end readline stuff +# end editline stuff if( NOT CPP_STANDARD ) - set( CPP_STANDARD, "-std=c++11" ) + set( CPP_STANDARD "-std=c++11" ) endif() IF(WIN32) @@ -360,7 +398,6 @@ target_include_directories(fc ${OPENSSL_INCLUDE_DIR} "vendor/diff-match-patch-cpp-stl" ${CMAKE_CURRENT_SOURCE_DIR}/vendor/websocketpp - "${readline_includes}" PRIVATE ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/vendor/secp256k1-zkp @@ -370,7 +407,7 @@ target_include_directories(fc IF(NOT WIN32) set(LINK_USR_LOCAL_LIB -L/usr/local/lib) ENDIF() -target_link_libraries( fc PUBLIC ${LINK_USR_LOCAL_LIB} ${Boost_LIBRARIES} ${OPENSSL_LIBRARIES} ${ZLIB_LIBRARIES} ${PLATFORM_SPECIFIC_LIBS} ${RPCRT4} ${CMAKE_DL_LIBS} ${rt_library} ${readline_libraries} ${ECC_LIB} ) +target_link_libraries( fc PUBLIC ${LINK_USR_LOCAL_LIB} ${Boost_LIBRARIES} ${OPENSSL_LIBRARIES} ${ZLIB_LIBRARIES} ${PLATFORM_SPECIFIC_LIBS} ${RPCRT4} ${CMAKE_DL_LIBS} ${rt_library} ${editline_libraries} ${ECC_LIB} ) if(MSVC) set_source_files_properties( src/network/http/websocket.cpp PROPERTIES COMPILE_FLAGS "/bigobj" ) diff --git a/CMakeModules/FindReadline.cmake b/CMakeModules/FindReadline.cmake deleted file mode 100755 index 745cfe5..0000000 --- a/CMakeModules/FindReadline.cmake +++ /dev/null @@ -1,47 +0,0 @@ -# - Try to find readline include dirs and libraries -# -# Usage of this module as follows: -# -# find_package(Readline) -# -# Variables used by this module, they can change the default behaviour and need -# to be set before calling find_package: -# -# Readline_ROOT_DIR Set this variable to the root installation of -# readline if the module has problems finding the -# proper installation path. -# -# Variables defined by this module: -# -# READLINE_FOUND System has readline, include and lib dirs found -# Readline_INCLUDE_DIR The readline include directories. -# Readline_LIBRARY The readline library. - -find_path(Readline_ROOT_DIR - NAMES include/readline/readline.h -) - -find_path(Readline_INCLUDE_DIR - NAMES readline/readline.h - HINTS ${Readline_ROOT_DIR}/include -) - -find_library(Readline_LIBRARY - NAMES readline - HINTS ${Readline_ROOT_DIR}/lib -) - -if(Readline_INCLUDE_DIR AND Readline_LIBRARY AND Ncurses_LIBRARY) - set(READLINE_FOUND TRUE) -else(Readline_INCLUDE_DIR AND Readline_LIBRARY AND Ncurses_LIBRARY) - FIND_LIBRARY(Readline_LIBRARY NAMES readline) - include(FindPackageHandleStandardArgs) - FIND_PACKAGE_HANDLE_STANDARD_ARGS(Readline DEFAULT_MSG Readline_INCLUDE_DIR Readline_LIBRARY ) - MARK_AS_ADVANCED(Readline_INCLUDE_DIR Readline_LIBRARY) -endif(Readline_INCLUDE_DIR AND Readline_LIBRARY AND Ncurses_LIBRARY) - -mark_as_advanced( - Readline_ROOT_DIR - Readline_INCLUDE_DIR - Readline_LIBRARY -) diff --git a/src/rpc/cli.cpp b/src/rpc/cli.cpp index 4957fc3..89cdc8a 100755 --- a/src/rpc/cli.cpp +++ b/src/rpc/cli.cpp @@ -7,22 +7,8 @@ #include #endif -#ifdef HAVE_READLINE -# include -# include -// I don't know exactly what version of readline we need. I know the 4.2 version that ships on some macs is -// missing some functions we require. We're developing against 6.3, but probably anything in the 6.x -// series is fine -# if RL_VERSION_MAJOR < 6 -# ifdef _MSC_VER -# pragma message("You have an old version of readline installed that might not support some of the features we need") -# pragma message("Readline support will not be compiled in") -# else -# warning "You have an old version of readline installed that might not support some of the features we need" -# warning "Readline support will not be compiled in" -# endif -# undef HAVE_READLINE -# endif +#ifdef HAVE_EDITLINE +# include "editline.h" # ifdef WIN32 # include # endif @@ -131,61 +117,90 @@ void cli::run() } -char * dupstr (const char* s) { - char *r; - - r = (char*) malloc ((strlen (s) + 1)); - strcpy (r, s); - return (r); -} - -char* my_generator(const char* text, int state) +/**** + * @brief loop through list of commands, attempting to find a match + * @param token what the user typed + * @param match sets to 1 if only 1 match was found + * @returns the remaining letters of the name of the command or NULL if 1 match not found + */ +static char *my_rl_complete(char *token, int *match) { - static int list_index, len; - const char *name; - - if (!state) { - list_index = 0; - len = strlen (text); - } + bool have_one = false; + std::string method_name; auto& cmd = cli_commands(); + int partlen = strlen (token); /* Part of token */ - while( list_index < cmd.size() ) + for (const std::string& it : cmd) { - name = cmd[list_index].c_str(); - list_index++; - - if (strncmp (name, text, len) == 0) - return (dupstr(name)); + if (it.compare(0, partlen, token) == 0) + { + if (have_one) { + // we can only have 1, but we found a second + return NULL; + } + else + { + method_name = it; + have_one = true; + } + } } - /* If no names matched, then return NULL. */ - return ((char *)NULL); + if (have_one) + { + *match = 1; + method_name += " "; + return strdup (method_name.c_str() + partlen); + } + + return NULL; } - -static char** cli_completion( const char * text , int start, int end) +/*** + * @brief return an array of matching commands + * @param token the incoming text + * @param array the resultant array of possible matches + * @returns the number of matches + */ +static int cli_completion(char *token, char ***array) { - char **matches; - matches = (char **)NULL; + auto& cmd = cli_commands(); + int num_commands = cmd.size(); -#ifdef HAVE_READLINE - if (start == 0) - matches = rl_completion_matches ((char*)text, &my_generator); - else - rl_bind_key('\t',rl_abort); -#endif + char **copy = (char **) malloc (num_commands * sizeof(char *)); + if (copy == NULL) + { + // possible out of memory + return 0; + } + int total_matches = 0; - return (matches); + int partlen = strlen(token); + + for (const std::string& it : cmd) + { + if ( it.compare(0, partlen, token) == 0) + { + copy[total_matches] = strdup ( it.c_str() ); + ++total_matches; + } + } + *array = copy; + + return total_matches; } - +/*** + * @brief Read input from the user + * @param prompt the prompt to display + * @param line what the user typed + */ void cli::getline( const fc::string& prompt, fc::string& line) { // getting file descriptor for C++ streams is near impossible // so we just assume it's the same as the C stream... -#ifdef HAVE_READLINE +#ifdef HAVE_EDITLINE #ifndef WIN32 if( isatty( fileno( stdin ) ) ) #else @@ -197,8 +212,9 @@ void cli::getline( const fc::string& prompt, fc::string& line) if( _isatty( _fileno( stdin ) ) ) #endif { - rl_attempted_completion_function = cli_completion; - + rl_set_complete_func(my_rl_complete); + rl_set_list_possib_func(cli_completion); +jjkkljk; static fc::thread getline_thread("getline"); getline_thread.async( [&](){ char* line_read = nullptr; @@ -206,10 +222,17 @@ void cli::getline( const fc::string& prompt, fc::string& line) line_read = readline(prompt.c_str()); if( line_read == nullptr ) FC_THROW_EXCEPTION( fc::eof_exception, "" ); - rl_bind_key( '\t', rl_complete ); - if( *line_read ) - add_history(line_read); line = line_read; + try + { + if (*line_read) + add_history(line_read); + } + catch(...) + { + free(line_read); + throw; + } free(line_read); }).wait(); } diff --git a/vendor/editline/.gitignore b/vendor/editline/.gitignore new file mode 100644 index 0000000..0c5e288 --- /dev/null +++ b/vendor/editline/.gitignore @@ -0,0 +1,29 @@ +*~ +*/.libs/ +*.lo +*.o +*.pc +.deps +.testit_history +GPATH +GRTAGS +GTAGS +Makefile +Makefile.in +aclocal.m4 +archive +autom4te.cache +compile +config.guess +config.h +config.h.in +config.log +config.status +config.sub +configure +depcomp +install-sh +libtool +ltmain.sh +missing +stamp-h1 diff --git a/vendor/editline/.travis.yml b/vendor/editline/.travis.yml new file mode 100644 index 0000000..0e112fc --- /dev/null +++ b/vendor/editline/.travis.yml @@ -0,0 +1,34 @@ +# Travis CI integration +# Defaults to GNU GCC and autotools: ./configure && make && make test +language: c + +# We don't need to install packages, use dockerized build, quicker +sudo: false + +# Test build with both GCC and Clang (LLVM) +compiler: + - gcc + - clang + +env: + global: + # The next declaration is the encrypted COVERITY_SCAN_TOKEN, created + # via the "travis encrypt" command using the project repo's public key + - secure: "iFll6pD0lzVYVRUlbPBGOTB0xqoEsC0BeUdftfRQdnEssruWOEKtf3VH6gSNRu8QMPeTCNhl4fsWUJhnowZgoobi/XcsXxFv/oJQZ1sa7cQUXizeEYUmsDZxUiw/sNsWlUz6dBKPepQStYyOK/tJLQ1GfLi1ESTPt6anokMVDbk=" + +addons: + coverity_scan: + project: + name: "troglobit/editline" + description: "A small line editing library" + notification_email: troglobit@gmail.com + build_command_prepend: "./autogen.sh && ./configure --enable-sigstop --enable-terminal-bell" + build_command: "make -j5" + branch_pattern: dev + +# We don't store generated files (configure and Makefile) in GIT, +# so we must customize the default build script to run ./autogen.sh +script: + - ./autogen.sh + - ./configure --enable-sigstop --enable-terminal-bell + - make -j5 diff --git a/vendor/editline/ChangeLog.md b/vendor/editline/ChangeLog.md new file mode 100644 index 0000000..59abbe6 --- /dev/null +++ b/vendor/editline/ChangeLog.md @@ -0,0 +1,241 @@ +Change Log +========== + +All notable changes to the project are documented in this file. + + +[1.16.1][UNRELEASED] +-------------------- + +### Changes +- Major updates to the `editline.3` man page + +### Fixes +- Fix #20: `configure --disable-eof` does not bite +- Fix #23: Make Ctrl-L clear the screan instead of starting a new line +- Fix #24: Fix behavior when TTY is narrower than column width, by Will Dietz + + +[1.16.0][] - 2018-09-16 +----------------------- + +Event loop callback support. + +### Changes +- `rl_unintialize()`, new function to free all memory, by Claus Fischer +- `rl_insert_text()`, new GNU Readline compat function +- `rl_refresh_line()`, new GNU Readline compat function +- `rl_callback_*()`, alternate interface to plain `readline()` for event + loops. Modeled after the GNU Readline API +- `rl_completion_entry_function`, and `rl_attempted_completion_function` + are two new GNU Readline compat user hooks for the completion framework +- `rl_completion_matches()` and `rl_filename_completion_function()` + are two new GNU Readline compat functions +- Add new example: `fileman.c` from GNU Readline to demonstrate the + level of compatibility of the revamped completion framework +- Add support for Ctrl-Right and Ctrl-Left, forward/backward word +- Add .deb package to official release target + +### Fixes +- Fixed header guards, avoid using leading `__` +- Spell check fixes +- Remove duplicate code in history check +- Use `NULL` instead of `0`, and `-1` instead of `NULL`, where applicable +- Misc. minor Coverity Scan fixes +- Misc. minor fixes to `testit.c` example code +- Add `-Wextra` to std `CFLAGS` +- Check `fclose()` return value in in `write_history()` and `read_history()` +- Initialize global variables and reset to `NULL` on `free()` +- Fix off-by-one in forward kill word, avoid deleting too much +- Skip (or kill) leading whitespace when skipping (or killing) forwards + + +[1.15.3][] - 2017-09-07 +----------------------- + +Bug fix release. + +### Changes +- Refactor all enable/disable configure options, same problem as in #7 + +### Fixes +- Fix #7: `--enable-termcap` configure option does not work. The script + enabled termcap by default rather than the other way around. + + Also, check for terminfo as well, when `--enable-termcap` is selected. + + +[1.15.2][] - 2016-06-06 +----------------------- + +Bug fixes and minor feature creep in `pkg-config` support. + +### Changes +- Prevent mangling of symbols when linking with C++. Patch courtesy of + Jakub Pawlowski +- Add `libeditline.pc` for `pkg-config` + +### Fixes +- Do not assume a termcap library exists, check for `tgetent()` in + curses, ncurses, tinfo and termcap libraries +- Call `tty_flush()` when user calls `rl_forced_update_display()` + to prevent screen becoming garbled. Patch by Jakub Pawlowski + + +[1.15.1][] - 2015-11-16 +----------------------- + +Bug fixes only. + +### Changes +- Update README with origin of this version of editline + +### Fixes +- Fix build system, don't force automake v1.11, require at least v1.11 +- Fix build problem with examples using `--enable-termcap` + + +[1.15.0][] - 2015-09-10 +----------------------- + +### Changes +- Add support for `--disable-eof` and `--disable-sigint` to disable + default Ctrl-D and Ctrl-C behavior +- Add support for `el_no_hist` to disable access to and auto-save of history +- GNU readline compat functions for prompt handling and redisplay +- Refactor: replace variables named 'new' with non-reserved word +- Add support for [Travis-CI][], continuous integration with GitHub +- Add support for [Coverity Scan][], the best static code analyzer, + integrated with [Travis-CI][] -- scan runs for each push to master +- Rename NEWS.md --> ChangeLog.md, with symlinks for make install +- Attempt to align with http://keepachangelog.com/ for this file +- Cleanup and improve Markdown syntax in [README.md][] +- Add API and example to [README.md][], inspired by [libuEv][] +- Removed generated files from version control. Use `./autogen.sh` + to generate the `configure` script when working from GIT. This + does not affect distributed tarballs + +### Fixes +- Fix issue #2, regression in Ctrl-D (EOF) behavior. Regression + introduced in [1.14.1][]. Fixed by @TobyGoodwin +- Fix memory leak in completion handler. Found by [Coverity Scan][]. +- Fix suspicious use of `sizeof(char **)`, same as `sizeof(char *)` but + non-portable. Found by [Coverity Scan][] +- Fix out-of-bounds access in user key binding routines + Found by [Coverity Scan][]. +- Fix invisible example code in man page + + +[1.14.2][] - 2014-09-14 +----------------------- + +Bug fixes only. + +### Fixes + - Fix `el_no_echo` bug causing secrets to leak when disabling no-echo + - Handle `EINTR` in syscalls better + + +[1.14.1][] - 2014-09-14 +----------------------- + +Minor fixes and additions. + +### Changes +- Don't print status message on `stderr` in key binding funcions +- Export `el_del_char()` +- Check for and return pending signals when detected +- Allow custom key bindings ... + +### Fixes +- Bug fixes ... + + +[1.14.0][] - 2010-08-10 +----------------------- + +Major cleanups and further merges with Debian editline package. + +### Changes +- Merge in changes to `debian/` from `editline_1.12-6.debian.tar.gz` +- Migrate to use libtool +- Make `UNIQUE_HISTORY` configurable +- Make scrollback history (`HIST_SIZE`) configurable +- Configure options for toggling terminal bell and `SIGSTOP` (Ctrl-Z) +- Configure option for using termcap to read/control terminal size +- Rename Signal to `el_intr_pending`, from Festival speech-tools +- Merge support for capitalizing words (`M-c`) from Festival + speech-tools by Alan W Black +- Fallback backspace handling, in case `tgetstr("le")` fails + +### Fixes +- Cleanups and fixes thanks to the Sparse static code analysis tool +- Merge `el_no_echo` patch from Festival speech-tools +- Merge fixes from Heimdal project +- Completely refactor `rl_complete()` and `rl_list_possib()` with + fixes from the Heimdal project. Use `rl_set_complete_func()` and + `rl_set_list_possib_func()`. Default completion callbacks are now + available as a configure option `--enable-default-complete` +- Memory leak fixes +- Actually fix 8-bit handling by reverting old Debian patch +- Merge patch to improve compatibility with GNU readline, thanks to + Steve Tell from way back in 1997 and 1998 + + +[1.13.0][] - 2010-03-09 +----------------------- + +Adaptations to Debian editline package. + +### Changes +- Major version number bump, adapt to Jim Studt's v1.12 +- Import `debian/` directory and adapt it to configure et al. +- Change library name to libeditline to distinguish it from BSD libedit + + +[0.3.0][] - 2009-02-08 +---------------------- + +### Changes +- Support for ANSI arrow keys using configure --enable-arrow-keys + + +[0.2.3][] - 2008-12-02 +---------------------- + +### Changes +- Patches from Debian package merged +- Support for custom command completion + + +[0.1.0][] - 2008-06-07 +---------------------- + +### Changes +- First version, forked from Minix current 2008-06-06 + + +[UNRELEASED]: https://github.com/troglobit/finit/compare/1.16.0...HEAD +[1.16.1]: https://github.com/troglobit/finit/compare/1.16.0...1.16.1 +[1.16.0]: https://github.com/troglobit/finit/compare/1.15.3...1.16.0 +[1.15.3]: https://github.com/troglobit/finit/compare/1.15.2...1.15.3 +[1.15.2]: https://github.com/troglobit/finit/compare/1.15.1...1.15.2 +[1.15.1]: https://github.com/troglobit/finit/compare/1.15.0...1.15.1 +[1.15.0]: https://github.com/troglobit/finit/compare/1.14.2...1.15.0 +[1.14.2]: https://github.com/troglobit/finit/compare/1.14.1...1.14.2 +[1.14.1]: https://github.com/troglobit/finit/compare/1.14.0...1.14.1 +[1.14.0]: https://github.com/troglobit/finit/compare/1.13.0...1.14.0 +[1.13.0]: https://github.com/troglobit/finit/compare/0.3.0...1.13.0 +[0.3.0]: https://github.com/troglobit/finit/compare/0.2.3...0.3.0 +[0.2.3]: https://github.com/troglobit/finit/compare/0.1.0...0.2.3 +[0.1.0]: https://github.com/troglobit/finit/compare/0.0.0...0.1.0 +[libuEv]: http://github.com/troglobit/libuev +[Travis-CI]: https://travis-ci.org/troglobit/uftpd +[Coverity Scan]: https://scan.coverity.com/projects/2947 +[README.md]: https://github.com/troglobit/editline/blob/master/README.md + + diff --git a/vendor/editline/INSTALL.md b/vendor/editline/INSTALL.md new file mode 100644 index 0000000..c54ed53 --- /dev/null +++ b/vendor/editline/INSTALL.md @@ -0,0 +1,46 @@ +HowTo Build Minix Editline +========================== + +Minix editline use the GNU configure tools, which includes autoconf, +automake and libtool. This enables high levels of portability and ease +of use. In most cases all you need to do is unpack the tarball, enter +the directory and type: + + ./configure + +There are are, however, more options available. For instance, sometimes +it is useful to build editline as a static library, type: + + ./configure --disable-shared + +By default editline employs a default handler for the TAB key, pressing +it once completes to the nearest matching filename in the current +working directory, or it can display a listing of possible completions. +For some uses this default is not desirable at all, type: + + ./configure --disable-default-complete + +An even more common desire is to change the default install location. +By default all configure scripts setup /usr/local as the install +"prefix", to change this type: + + ./configure --prefix=/home/troglobit/tmp + +Advanced users are encouraged to read up on --libdir, --mandir, etc. in +the GNU Configure and Build System. + +For more available options, type: + + ./configure --help + +To build and install, simply type: + + make + +followed by + + sudo make install + +Good Luck! + //Joachim + diff --git a/vendor/editline/LICENSE b/vendor/editline/LICENSE new file mode 100644 index 0000000..1c0d909 --- /dev/null +++ b/vendor/editline/LICENSE @@ -0,0 +1,18 @@ + Copyright 1992,1993 Simmule Turner and Rich Salz + All rights reserved. + + This software is not subject to any license of the American Telephone + and Telegraph Company or of the Regents of the University of California. + + Permission is granted to anyone to use this software for any purpose on + any computer system, and to alter it and redistribute it freely, subject + to the following restrictions: + 1. The authors are not responsible for the consequences of use of this + software, no matter how awful, even if they arise from flaws in it. + 2. The origin of this software must not be misrepresented, either by + explicit claim or by omission. Since few users ever read sources, + credits must appear in the documentation. + 3. Altered versions must be plainly marked as such, and must not be + misrepresented as being the original software. Since few users + ever read sources, credits must appear in the documentation. + 4. This notice may not be removed or altered. diff --git a/vendor/editline/Make.os9 b/vendor/editline/Make.os9 new file mode 100644 index 0000000..c632847 --- /dev/null +++ b/vendor/editline/Make.os9 @@ -0,0 +1,19 @@ +## $Revision: 1.2 $ +## +## OS-9 makefile for editline library. +## + +.SUFFIXES: + +RFILES = editline.r complete.r sysos9.r + +%.r: %.c + cc68 -r -Dstrchr=index -Dstrrchr=rindex -DNEED_STRDUP -DSYS_OS9 $*.c + +testit: testit.r editline.lib + cc68 -f=testit testit.r -l=editline.lib + +$(RFILES): $(RFILES:%.r=%.c) + +editline.lib: $(RFILES) + cat $(RFILES) >$@ diff --git a/vendor/editline/Makefile.am b/vendor/editline/Makefile.am new file mode 100644 index 0000000..0342154 --- /dev/null +++ b/vendor/editline/Makefile.am @@ -0,0 +1,52 @@ +pkgconfigdir = $(libdir)/pkgconfig +pkgconfig_DATA = libeditline.pc +doc_DATA = README.md LICENSE +EXTRA_DIST = README.md LICENSE ChangeLog.md INSTALL.md +SUBDIRS = src include man examples + +## Generate .deb package +package build-deb: + @dpkg-buildpackage -uc -us + +## Generate MD5 checksum file +MD5 = md5sum +md5-dist: + @for file in $(DIST_ARCHIVES); do \ + $(MD5) $$file > ../$$file.md5; \ + mv $$file ../; \ + done + +## Check if tagged in git +release-hook: + if [ ! `git tag | grep $(PACKAGE_VERSION)` ]; then \ + echo; \ + printf "\e[1m\e[41mCannot find release tag $(PACKAGE_VERSION)\e[0m\n"; \ + printf "\e[1m\e[5mDo release anyway?\e[0m "; read yorn; \ + if [ "$$yorn" != "y" -a "$$yorn" != "Y" ]; then \ + printf "OK, aborting release.\n"; \ + exit 1; \ + fi; \ + echo; \ + else \ + echo; \ + printf "\e[1m\e[42mFound GIT release tag $(PACKAGE_VERSION)\e[0m\n"; \ + printf "\e[1m\e[44m>>Remember to push tags!\e[0m\n"; \ + echo; \ + fi + +# lintian --profile debian -i -I --show-overrides ../$PKG.changes +package: + dpkg-buildpackage -uc -us -B + +## Target to run when building a release +release: distcheck release-hook md5-dist package + @echo + @echo "Resulting release files:" + @echo "=========================================================================" + @for file in $(DIST_ARCHIVES); do \ + printf "%-40s Distribution tarball\n" $$file; \ + printf "%-40s " $$file.md5; cat ../$$file.md5 | cut -f1 -d' '; \ + done + @for file in `cd ..; ls *$(PACKAGE)*_$(subst _,.,$(VERSION))*`; do \ + printf "%-40s Debian/Ubuntu package file\n" $$file; \ + done diff --git a/vendor/editline/README.md b/vendor/editline/README.md new file mode 100644 index 0000000..2e27552 --- /dev/null +++ b/vendor/editline/README.md @@ -0,0 +1,271 @@ +Editline +======== +[![License Badge][]][License] [![Travis Status]][Travis] [![Coverity Status]][Coverity Scan] + + +Table of Contents +----------------- + +* [Introduction](#introduction) +* [API](#api) +* [Example](#example) +* [Build & Install](#build--install) +* [Origin & References](#origin--references) + + +Introduction +------------ + +This is a small [line editing][] library. It can be linked into almost +any program to provide command line editing and history functions. It +is call compatible with the [FSF readline][] library, but at a fraction +of the size, and as a result fewer features. It is also distributed +under a much more liberal [License][]. + +The small size (<30k), lack of dependencies (ncurses not needed!), and +the free license should make this library interesting to many embedded +developers. + +Editline has several optional build-time features that can be enabled by +supplying different options to the GNU configure script. See the output +from configure --help for details. Some useful hints on how +to use the library is available in the `examples/` directory. + +Editline is maintained collaboratively at [GitHub][]. + + +Example +------- + +Below follows a brief example to illustrate how one can use Editline to +create a simple CLI, use Ctrl-D to exit the program. For a slightly +more advanced example, see . The +Editline sources also include an `examples/` sub-directory. + +1. Build and install the library, preferably using a [release tarball][] + The configure script defaults to a `/usr/local` prefix. + + tar xf editline-1.15.3.tar.xz + cd editline-1.15.3/ + ./configure --prefix=/usr + make all + sudo make install + +2. Place the below source code in a separate project directory, + e.g. `~/src/example.c` + +```C + #include + #include + + int main(void) + { + char *p; + + while ((p = readline("CLI> ")) != NULL) { + puts(p); + free(p); + } + + return 0; + } +``` + +3. Compile the example: + + cd ~/src/ + make LDLIBS=-leditline example + +Here I use `make` and rely on its implicit (built-in) rules to handle +all the compiler magic, but you may want to create your own Makefile for +the project. In particular if you don't change the default prefix +(above), because then you need to specify the search path for the +include file(s) and the library manually. + +A simple `~/src/Makefile` could look like this: + + CFLAGS = -I/usr/local/include + LDFLAGS = -L/usr/local/lib + LDLIBS = -leditline + EXEC = example + OBJS = example.o + + all: $(EXEC) + + $(EXEC): $(OBJS) + + clean: + $(RM) $(OBJS) $(EXEC) + + distclean: clean + $(RM) *.o *~ *.bak + +Then simply type `make` from your `~/src/` directory. You can also use +`pkg-config` for your `~/src/Makefile`, replace the following lines: + + CFLAGS = $(shell pkg-config --cflags libeditline) + LDFLAGS = $(shell pkg-config --libs-only-L libeditline) + LDLIBS = $(shell pkg-config --libs-only-l libeditline) + +Then simply type make, like above. + +However, most `.rpm` based distributions `pkg-config` doesn't search in +`/usr/local` anymore, so you need to call make like this: + + PKG_CONFIG_LIBDIR=/usr/local/lib/pkgconfig make + +Debian/Ubuntu based systems do not have this problem. + + +API +--- + +Here is the libeditline interfaces. It has a small compatibility layer +to [FSF readline][], which may not be entirely up-to-date. + +```C + /* Editline specific global variables. */ + int el_no_echo; /* Do not echo input characters */ + int el_no_hist; /* Disable auto-save of and access to history, + * e.g. for password prompts or wizards */ + int el_hist_size; /* Size of history scrollback buffer, default: 15 */ + + /* Editline specific functions. */ + char * el_find_word (void); + void el_print_columns (int ac, char **av); + el_status_t el_ring_bell (void); + el_status_t el_del_char (void); + + /* Callback function for key binding */ + typedef el_status_t el_keymap_func_t(void); + + /* Bind key to a callback, use CTL('f') to change Ctrl-F, for example */ + el_status_t el_bind_key (int key, el_keymap_func_t function); + el_status_t el_bind_key_in_metamap (int key, el_keymap_func_t function); + + /* For compatibility with FSF readline. */ + int rl_point; + int rl_mark; + int rl_end; + int rl_inhibit_complete; + char *rl_line_buffer; + const char *rl_readline_name; + + void (*rl_deprep_term_function)(void); + void rl_deprep_terminal (void); + void rl_reset_terminal (const char *terminal_name); + + void rl_initialize (void); + void rl_uninitialize (void); /* Free all internal memory */ + + void rl_save_prompt (void); + void rl_restore_prompt (void); + void rl_set_prompt (const char *prompt); + + void rl_clear_message (void); + void rl_forced_update_display (void); + + /* Main function to use, saves history by default */ + char *readline (const char *prompt); + + /* Use to save a read line to history, when el_no_hist is set */ + void add_history (const char *line); + + /* Load and save editline history from/to a file. */ + int read_history (const char *filename); + int write_history (const char *filename); + + /* Magic completion API, see examples/cli.c for more info */ + rl_complete_func_t *rl_set_complete_func (rl_complete_func_t *func); + rl_list_possib_func_t *rl_set_list_possib_func (rl_list_possib_func_t *func); + + /* Alternate interface to plain readline(), for event loops */ + void rl_callback_handler_install (const char *prompt, rl_vcpfunc_t *lhandler); + void rl_callback_read_char (void); + void rl_callback_handler_remove (void); +``` + + +Build & Install +--------------- + +Editline was originally designed for older UNIX systems and Plan 9. The +current maintainer works exclusively on GNU/Linux systems, so it may use +GCC and GNU Make specific extensions here and there. This is not on +purpose and patches or pull requests to correct this are most welcome! + +1. Configure editline with default features: ./configure +2. Build the library and examples: make all +3. Install using make install + +The `$DESTDIR` environment variable is honored at install. For more +options, see ./configure --help + +Remember to run `ldconfig` after install to update the linker cache. If +you've installed to a non-standard location (`--prefix`) you may also +have to update your `/etc/ld.so.conf`, or use `pkg-confg` to build your +application (above). + +**NOTE:** RedHat/Fedora/CentOS and other `.rpm`-based distributions do + not consider `/usr/local` as standard path anymore. So make sure to + `./configure --prefix=/usr`, otherwise the build system use the GNU + default, which is `/usr/local`. The Debian based distributions, like + Ubuntu, do not have this problem. + + +Origin & References +-------------------- + +This [line editing][] library was created by [Rich Salz][] and Simmule +Turner and in 1992. It is distributed with a “[C News][]-like” license, +similar to the [BSD license][]. Rich's current version is however under +the Apache license. For details on the licensing terms of this version +of the software, see [License][]. + +This version of the editline library was forked from the [Minix 2][] +source tree and is *not* related to the similarily named NetBSD version +that [Jess Thrysøe][jess] disitributes to the world outside *BSD. The +libraries have much in common, but the latter is heavily refactored and +also relies on libtermcap (usually supplied by ncurses), whereas this +library only uses termios from the standard C library. + +Patches and bug fixes from the following forks, based on the original +[comp.sources.unix][] posting, have been merged: + +* Debian [libeditline][] +* [Heimdal][] +* [Festival][] speech-tools +* [Steve Tell][]'s editline patches + +The version numbering scheme today follows that of the Debian version, +details available in the [ChangeLog.md][]. The current [maintainer][] +was unaware of the Debian version for quite some time, so a different +name and versioning scheme was used. In June 2009 this was changed to +line up alongside Debian, with the intent is to eventually merge the +efforts. + +Outstanding issues are listed in the [TODO.md][] file. + +[GitHub]: https://github.com/troglobit/editline +[line editing]: https://github.com/troglobit/editline/blob/master/docs/README +[release tarball]: https://github.com/troglobit/editline/releases +[maintainer]: http://troglobit.com +[C News]: https://en.wikipedia.org/wiki/C_News +[TODO.md]: https://github.com/troglobit/editline/blob/master/docs/TODO.md +[ChangeLog.md]: https://github.com/troglobit/editline/blob/master/ChangeLog.md +[FSF readline]: http://www.gnu.org/software/readline/ +[Rich Salz]: https://github.com/richsalz/editline/ +[comp.sources.unix]: http://ftp.cs.toronto.edu/pub/white/pub/rc/editline.shar +[Minix 2]: http://www.cise.ufl.edu/~cop4600/cgi-bin/lxr/http/source.cgi/lib/editline/ +[jess]: http://thrysoee.dk/editline/ +[BSD license]: http://en.wikipedia.org/wiki/BSD_licenses +[libeditline]: http://packages.qa.debian.org/e/editline.html +[Heimdal]: http://www.h5l.org +[Festival]: http://festvox.org/festival/ +[Steve Tell]: http://www.cs.unc.edu/~tell/dist.html +[License]: https://github.com/troglobit/editline/blob/master/LICENSE +[License Badge]: https://img.shields.io/badge/License-C%20News-orange.svg +[Travis]: https://travis-ci.org/troglobit/editline +[Travis Status]: https://travis-ci.org/troglobit/editline.png?branch=master +[Coverity Scan]: https://scan.coverity.com/projects/2982 +[Coverity Status]: https://scan.coverity.com/projects/2982/badge.svg diff --git a/vendor/editline/autogen.sh b/vendor/editline/autogen.sh new file mode 100755 index 0000000..dbbcad3 --- /dev/null +++ b/vendor/editline/autogen.sh @@ -0,0 +1,3 @@ +#!/bin/sh + +autoreconf -W portability -visfm diff --git a/vendor/editline/configure.ac b/vendor/editline/configure.ac new file mode 100644 index 0000000..0e03d24 --- /dev/null +++ b/vendor/editline/configure.ac @@ -0,0 +1,99 @@ +AC_INIT(editline, 1.16.1-dev, https://github.com/troglobit/editline/issues) +AM_INIT_AUTOMAKE([1.11 foreign no-dist-gzip dist-xz]) +AM_SILENT_RULES([yes]) + +AC_CONFIG_MACRO_DIR([m4]) +AC_CONFIG_SRCDIR([src/editline.c]) +AC_CONFIG_HEADER([config.h]) +AC_CONFIG_FILES([Makefile libeditline.pc src/Makefile include/Makefile man/Makefile examples/Makefile]) + +# Checks for programs. +AC_PROG_CC +AC_PROG_INSTALL + +# Checks for libraries. +LT_INIT + +# Checks for header files. +AC_HEADER_DIRENT +AC_HEADER_STAT +AC_HEADER_STDC +# Check for malloc.h instead of AC_FUNC_MALLOC/REALLOC AIX and others +# mess up the traditional malloc check. +AC_CHECK_HEADERS([malloc.h signal.h stdlib.h string.h termcap.h termio.h termios.h sgtty.h unistd.h]) + +# In termios.h or in sys/ioctl.g? +AC_HEADER_TIOCGWINSZ + +# Overrides and types, should be a check. +AC_DEFINE([SYS_UNIX], [1], [Default to UNIX backend, should be detected.]) +AC_TYPE_SIZE_T + +# Checks for library functions. +AC_FUNC_CLOSEDIR_VOID +AC_PROG_GCC_TRADITIONAL +AC_FUNC_STAT +AC_CHECK_FUNCS([strchr strdup strrchr tcgetattr perror]) + +# +# Available features +# +AC_ARG_ENABLE(unique-history, + [AS_HELP_STRING([--disable-unique-history], + [Disable uniqify of scrollback. Default: duplicate entries are ignored. Use this to save dupes.])]) + +AC_ARG_ENABLE(arrow-keys, + [AS_HELP_STRING([--disable-arrow-keys], [Disable ANSI arrow keys.])]) + +AC_ARG_ENABLE(eof, + [AS_HELP_STRING([--disable-eof], [Disable default EOF (Ctrl-D) behavior.])]) + +AC_ARG_ENABLE(sigint, + [AS_HELP_STRING([--disable-sigint], [Disable default SIGINT (Ctrl-C) behavior.])]) + +AC_ARG_ENABLE(sigstop, + [AS_HELP_STRING([--enable-sigstop], [Enable SIGSTOP (Ctrl-Z) behavior.])]) + +AC_ARG_ENABLE(terminal-bell, + [AS_HELP_STRING([--enable-terminal-bell], [Enable terminal bell on completion.])]) + +AC_ARG_ENABLE(termcap, + AS_HELP_STRING([--enable-termcap], [Use termcap library to query terminal size.])) + +# +# Check what features have been enabled +# +AS_IF([test "x$enable_unique_history" != "xno"], + AC_DEFINE(CONFIG_UNIQUE_HISTORY, 1, [Define to skip duplicate lines in the scrollback history.])) + +AS_IF([test "x$enable_terminal_bell" != "xno"], + AC_DEFINE(CONFIG_ANSI_ARROWS, 1, [Define to include ANSI arrow keys support.])) + +AS_IF([test "x$enable_eof" != "xno"], + AC_DEFINE(CONFIG_EOF, 1, [Define to enable EOF (Ctrl-D) key.])) + +AS_IF([test "x$enable_sigint" != "xno"], + AC_DEFINE(CONFIG_SIGINT, 1, [Define to enable SIGINT (Ctrl-C) key.])) + +AS_IF([test "x$enable_sigstop" = "xyes"], + AC_DEFINE(CONFIG_SIGSTOP, 1, [Define to enable SIGSTOP (Ctrl-Z) key.])) + +AS_IF([test "x$enable_terminal_bell" = "xyes"], + AC_DEFINE(CONFIG_TERMINAL_BELL, 1, [Define to enable terminal bell on completion.])) + +# Check for a termcap compatible library if enabled +AS_IF([test "x$enable_termcap" = "xyes"], + AC_DEFINE(CONFIG_USE_TERMCAP, 1, [Define to use the termcap library for terminal size.]) + AC_CHECK_LIB(terminfo, tgetent, , [ + AC_CHECK_LIB(termcap, tgetent, , [ + AC_CHECK_LIB(tinfo, tgetent, , [ + AC_CHECK_LIB(curses, tgetent, , [ + AC_CHECK_LIB(ncurses, tgetent, , [ + AC_MSG_ERROR([Cannot find a termcap capable library, try installing Ncurses.])]) + ]) + ]) + ]) + ])) + +# Generate all files +AC_OUTPUT diff --git a/vendor/editline/debian/.gitignore b/vendor/editline/debian/.gitignore new file mode 100644 index 0000000..8afbb05 --- /dev/null +++ b/vendor/editline/debian/.gitignore @@ -0,0 +1,10 @@ +*.log +*.debhelper +*.substvars +autoreconf.* +debhelper-build-stamp +files +tmp/* +libeditline-dev/* +libeditline0/* +libeditline1/* diff --git a/vendor/editline/debian/README.Debian b/vendor/editline/debian/README.Debian new file mode 100644 index 0000000..7380abd --- /dev/null +++ b/vendor/editline/debian/README.Debian @@ -0,0 +1,9 @@ +editline for Debian +---------------------- + +This is packaged in typical Debian form with a shared library version and +a static library version. It will be a rare package that wishes to +use the shared library form, the static one is only adds about 12.5kb +to your program. + + -- Jim Studt , Fri, 5 May 2000 13:25:51 -0500 diff --git a/vendor/editline/debian/changelog b/vendor/editline/debian/changelog new file mode 100644 index 0000000..5234f9d --- /dev/null +++ b/vendor/editline/debian/changelog @@ -0,0 +1,122 @@ +editline (1.16.1) unstable; urgency=medium + + * Minor bug fix and documentation update release. + + -- Joachim Nilsson Sat, 27 Apr 2019 15:01:07 +0200 + +editline (1.16.0) unstable; urgency=medium + + * New upstream release, v1.60.0 + + Event loop support + + New GNU Readline compat functions and callbacks + + Minor compat fixes for movement and deletion + * Bump .so/ABI version => libeditline1 + * New maintainer, upstream author + + -- Joachim Nilsson Sun, 16 Sep 2018 09:45:53 +0200 + +editline (1.15.3-1) unstable; urgency=medium + + * New upstream bug fix release, v1.15.3 + + -- Joachim Nilsson Thu, 07 Sep 2017 01:24:19 +0200 + +editline (1.15.2-1) unstable; urgency=medium + + * New upstream bug fix release, v1.15.2 + + -- Joachim Nilsson Wed, 06 Jun 2016 20:04:35 +0200 + +editline (1.15.1-1) unstable; urgency=medium + + * New upstream bug fix release, v1.15.1 + + -- Joachim Nilsson Wed, 16 Nov 2015 21:17:17 +0200 + +editline (1.15.0-1) unstable; urgency=medium + + * New upstream release, v1.15.0 + + -- Joachim Nilsson Wed, 10 Sep 2015 13:26:03 +0200 + +editline (1.14.2-1) unstable; urgency=low + + * Minor bugfix release: + + Fix `el_no_echo` bug causing secrets to leak when disabling no-echo + + Handle `EINTR` in syscalls better + + -- Joachim Nilsson Sun, 14 Sep 2014 04:27:25 +0200 + +editline (1.14.1-1) unstable; urgency=low + + * New release. + + Minor fixes to key binding. + + Check signals and custom keys before acting on them in readline(). + + Update maintainer email address. + + -- Joachim Nilsson Mon, 8 Jul 2013 17:04:00 +0100 + +editline (1.14.0-1) unstable; urgency=low + + * Update to new configure based build. + + -- Joachim Nilsson Wed, 11 Aug 2010 13:28:00 +0100 + +editline (1.12-6) unstable; urgency=low + + * Switch package format to 3.0 (quilt). + * 200_fix-truncation-at-64-char.diff: fix invalid 64-char truncation in + batch mode, courtesy of Mark O'Donohue. Thanks to Damyan Ivanov for + forwarding the patch from Ubuntu (Closes: #508640). + + -- Sam Hocevar Sun, 03 Jan 2010 15:45:34 +0100 + +editline (1.12-5) unstable; urgency=low + + * New maintainer (Closes: #229962). + * debian/changelog: + + Removed emacs helper variables. + * debian/control: + + Set policy to 3.6.1.0. + + Set debhelper build dependency to (>= 4.0). + + Use the default dh_shlibs information, since the API is rock stable + (Closes: #131139). + + Removed the libc6-dev dependency in the -dev package. + + Rephrased the short and long descriptions. + * debian/copyright: + + Replaced "Author(s)" with "Author". + * debian/rules: + + Removed obsolete call to dh_suidregister. + + Use debian/compat instead of DH_COMPAT. + * include_editline.h: + + Added a minimalist /usr/include/editline.h (Closes: #129544). + * Makefile: + + Call libtool with the proper --mode flags. + + -- Sam Hocevar (Debian packages) Sat, 31 Jan 2004 22:32:35 +0100 + +editline (1.12-4) unstable; urgency=low + + * Add a Build-Depends for debhelper and libtool. Thought those + were baseline. closes: #117780 + + -- Jim Studt Thu, 15 Nov 2001 19:00:00 -0600 + +editline (1.12-3) unstable; urgency=low + + * Make man pages not be in the shared library package. + + -- Jim Studt Sat, 13 Jan 2001 00:03:53 -0600 + +editline (1.12-2) unstable; urgency=low + + * Patch to not declare read() and write(), it fails on alphas. + + -- Jim Studt Tue, 12 Sep 2000 16:39:34 -0500 + +editline (1.12-1) unstable; urgency=low + + * Initial Release. + + -- Jim Studt Fri, 5 May 2000 13:25:51 -0500 + diff --git a/vendor/editline/debian/compat b/vendor/editline/debian/compat new file mode 100644 index 0000000..ec63514 --- /dev/null +++ b/vendor/editline/debian/compat @@ -0,0 +1 @@ +9 diff --git a/vendor/editline/debian/control b/vendor/editline/debian/control new file mode 100644 index 0000000..9687937 --- /dev/null +++ b/vendor/editline/debian/control @@ -0,0 +1,31 @@ +Source: editline +Section: devel +Priority: optional +Build-Depends: debhelper (>= 5.0), libtool +Maintainer: Joachim Nilsson +Standards-Version: 3.8.3 + +Package: libeditline-dev +Architecture: any +Section: libdevel +Depends: libeditline1 (= ${binary:Version}), ${misc:Depends} +Description: development files for libeditline + This is a line-editing library. It can be linked into almost any program + to provide command-line editing and recall. It is call-compatible with a + subset of the FSF readline library, but it is a fraction of the size (and + offers fewer features). + . + This package contains the developer files: static libraries, headers, + manpages. + +Package: libeditline1 +Architecture: any +Section: libs +Depends: ${misc:Depends} +Description: line editing library similar to readline + This is a line-editing library. It can be linked into almost any program + to provide command-line editing and recall. It is call-compatible with a + subset of the FSF readline library, but it is a fraction of the size (and + offers fewer features). + . + This package contains the runtime library only. diff --git a/vendor/editline/debian/copyright b/vendor/editline/debian/copyright new file mode 100644 index 0000000..10afa37 --- /dev/null +++ b/vendor/editline/debian/copyright @@ -0,0 +1,27 @@ +This package was debianized by Jim Studt on +Fri, 5 May 2000 13:25:51 -0500. + +It was received from Rich Salz rsalz@shore.net + +Upstream Author: Rich Salz rsalz@shore.net + +Copyright: + + Copyright 1992,1993 Simmule Turner and Rich Salz. All rights reserved. + + This software is not subject to any license of the American Telephone + and Telegraph Company or of the Regents of the University of California. + + Permission is granted to anyone to use this software for any purpose on + any computer system, and to alter it and redistribute it freely, subject + to the following restrictions: + 1. The authors are not responsible for the consequences of use of this + software, no matter how awful, even if they arise from flaws in it. + 2. The origin of this software must not be misrepresented, either by + explicit claim or by omission. Since few users ever read sources, + credits must appear in the documentation. + 3. Altered versions must be plainly marked as such, and must not be + misrepresented as being the original software. Since few users + ever read sources, credits must appear in the documentation. + 4. This notice may not be removed or altered. + diff --git a/vendor/editline/debian/dirs b/vendor/editline/debian/dirs new file mode 100644 index 0000000..4418816 --- /dev/null +++ b/vendor/editline/debian/dirs @@ -0,0 +1,2 @@ +usr/lib +usr/include diff --git a/vendor/editline/debian/docs b/vendor/editline/debian/docs new file mode 100644 index 0000000..b43bf86 --- /dev/null +++ b/vendor/editline/debian/docs @@ -0,0 +1 @@ +README.md diff --git a/vendor/editline/debian/libeditline-dev.install b/vendor/editline/debian/libeditline-dev.install new file mode 100644 index 0000000..9667918 --- /dev/null +++ b/vendor/editline/debian/libeditline-dev.install @@ -0,0 +1,4 @@ +usr/include/*.h +usr/lib/*/libeditline*.*a +usr/lib/*/pkgconfig/* +usr/share/man/man3/* diff --git a/vendor/editline/debian/libeditline0.install b/vendor/editline/debian/libeditline0.install new file mode 100644 index 0000000..b31f51e --- /dev/null +++ b/vendor/editline/debian/libeditline0.install @@ -0,0 +1 @@ +usr/lib/*/libeditline*.so* diff --git a/vendor/editline/debian/rules b/vendor/editline/debian/rules new file mode 100755 index 0000000..19ddb34 --- /dev/null +++ b/vendor/editline/debian/rules @@ -0,0 +1,8 @@ +#!/usr/bin/make -f + +# Uncomment this to turn on verbose mode. +#export DH_VERBOSE=1 + +%: + dh $@ --with autoreconf + diff --git a/vendor/editline/debian/source/format b/vendor/editline/debian/source/format new file mode 100644 index 0000000..89ae9db --- /dev/null +++ b/vendor/editline/debian/source/format @@ -0,0 +1 @@ +3.0 (native) diff --git a/vendor/editline/docs/HACKING.md b/vendor/editline/docs/HACKING.md new file mode 100644 index 0000000..0ced854 --- /dev/null +++ b/vendor/editline/docs/HACKING.md @@ -0,0 +1,106 @@ +Maintenance and Release Checklist +================================= + +Maintenance +----------- + +* Encourage contributors to write tests, in particular for new features +* Run tests regularly, use Travis-CI to do this automatically +* Leverage GitHub issues for milestone planning +* Reference issues from GitHub pull requests to alert issue subscribers +* Bump library ABI version just before release! + + +Release Checklist +----------------- + +* Update ChangeLog, follow http://keepachangelog.com/ loosely + - Inform users in a plain language of changes and bug fixes + - Do *not* copy-paste GIT commit logs! + - Order entries according to importance, most relevant first +* Run unit tests: `make check` +* Make at least one `-rcN` release and test it in an actual real project +* **REMEMBER:** bump ABI version according to below rules +* Tag +* Push last commit(s) *and* tags to GitHub +* Make release + + make distclean + ./autogen.sh + ./configure + make release + +* Create new release in GitHub releases page +* Copy and paste ChangeLog entry, check any stale links! +* Upload release tarball and MD5 files + + +Library Versioning +------------------ + +Editline relies on GNU Libtool for building the library. For a user of +the library it is important to maintain a clear ABI versioning scheme. +This is not the same as the Editline version, but rather the library +"compatibility level". + +The Editline ABI version is specified in `src/Makefile.am` and looks +like this: + + libeditline_la_LDFLAGS = -version-info 0:0:0 + \ \ `-- age + \ `--- revision + `---- current + +It must be updated according to the [GNU Libtool recommendations][1]: + +1. Start with version information of `0:0:0` for each libtool library. +2. Update the version information only immediately before a public + release of your software. More frequent updates are unnecessary, and + only guarantee that the current interface number gets larger faster. +3. If the library *source code has changed at all* since the last update, + then increment revision (`c:r:a` becomes `c:r+1:a`). +4. If any *interfaces have been added, removed, or changed* since the + last update, increment current, and set revision to 0. +5. If any *interfaces have been added* since the last public release, + then increment age. +6. If any *interfaces have been removed or changed* since the last + public release, then set age to 0. + +The libtool ABI versioning logic is very confusing but works if you just +disable your brain and follow the rules, one by one. + +**Example #1:** a new function has been added, none of the existing ones +have changed. The initial version is 1:0:0, we follow the rules above to +the letter: increase revision, increase current and set revision to zero, +and finally increase age. This, rather confusingly, gives us 2:0:1 which +libtool then translates to `libeditline.so.1.1.0`. + +**Example #2:** some existing functions are changed, they now return an +`int` instead of `void`. The initial version is 0:0:0, and we follow the +rules again: increment revision, increment current and set revision to +zero, set age to zero. This gives us 1:0:0, which is then translated to + `libeditline.so.1.0.0`. + +### Note + +Usually, non-developers have no interest in running development versions +(releases are frequent enough), and developers are expected to know how +to juggle versions. In such an ideal world, it is good enough to bump +the library version just prior to a release, point 2. + +However, if releases are few and far between, distributors may start to +use snapshots. When a distributor uses a snapshot, the distributor has +to handle the library version manually. Things can get ugly when the +distributor has released an intermediate version with a bumped library +version, and when the official release is bumped to that version, the +distributor will then have to bump the library version for the official +release, and it can be confusing if someone reports bugs on versions +that you didn't even know existed. + +The problem with bumping the version with every change is that if your +interface is not finished, the version number might run away, and it +looks pretty bad if a library is at version 262. It kind of tells the +user that the library interface is volatile, which is not good for +business. + +[1]: https://www.gnu.org/software/libtool/manual/html_node/Updating-version-info.html diff --git a/vendor/editline/docs/README b/vendor/editline/docs/README new file mode 100755 index 0000000..c2d987f --- /dev/null +++ b/vendor/editline/docs/README @@ -0,0 +1,68 @@ +Original Minix README +===================== + +Below is the original Minix editline README file. It has been +split into a modified README and LICENSE file. + + -- Joachim Nilsson, June 7th 2008 + +----------------------------------------------------------------- +$Revision: 5 $ + +This is a line-editing library. It can be linked into almost any +program to provide command-line editing and recall. + +It is call-compatible with the FSF readline library, but it is a +fraction of the size (and offers fewer features). It does not use +standard I/O. It is distributed under a "C News-like" copyright. + +Configuration is done in the Makefile. Type "make testit" to get +a small slow shell for testing. + +An earlier version was distributed with Byron's rc. Principal +changes over that version include: + Faster. + Is eight-bit clean (thanks to brendan()cs!widener!edu) + Written in K&R C, but ANSI compliant (gcc all warnings) + Propagates EOF properly; rc trip test now passes + Doesn't need or use or provide memmove. + More robust + Calling sequence changed to be compatible with readline. + Test program, new manpage, better configuration + More system-independant; includes Unix and OS-9 support. + +This contains some changes since the posting to comp.sources.misc: + Bugfix for completion on absolute pathnames. + Better handling of M-n versus showing raw 8bit chars. + Better signal handling. + Now supports termios/termio/sgttyb ioctl's. + Add M-m command to toggle how 8bit data is displayed. + +There is one known bug: + History-searching redraws the line wrong if the text + retrieved is shorter then the prompt. + +Enjoy, + Rich $alz + + + Copyright 1992,1993 Simmule Turner and Rich Salz. All rights reserved. + + This software is not subject to any license of the American Telephone + and Telegraph Company or of the Regents of the University of California. + + Permission is granted to anyone to use this software for any purpose on + any computer system, and to alter it and redistribute it freely, subject + to the following restrictions: + 1. The authors are not responsible for the consequences of use of this + software, no matter how awful, even if they arise from flaws in it. + 2. The origin of this software must not be misrepresented, either by + explicit claim or by omission. Since few users ever read sources, + credits must appear in the documentation. + 3. Altered versions must be plainly marked as such, and must not be + misrepresented as being the original software. Since few users + ever read sources, credits must appear in the documentation. + 4. This notice may not be removed or altered. + +-- +$PchId: README,v 1.3 1996/02/22 21:18:51 philip Exp $ diff --git a/vendor/editline/docs/TODO.md b/vendor/editline/docs/TODO.md new file mode 100644 index 0000000..df60dc1 --- /dev/null +++ b/vendor/editline/docs/TODO.md @@ -0,0 +1,41 @@ +TODO +==== + +Issues in need of work. Mostly compatibility with GNU readline, +BSD [libedit][], and usability improvements. + +Remember, the general idea is to keep this library small with no +external dependencies, except for a generic C library. + + +Check what's needed to run the fileman example +---------------------------------------------- + +The BSD libedit library has imported the GNU readline "fileman" example +into its tree to demonstrate the abilities of that library. This would +also be quite useful for this library! + +The first task is to investigate the depependencies and form TODO list +items detailing what is missing and, if possible, proposals how to +implement including any optional configure flags. + + +Other minor TODO's +------------------ + +- Instead of supporting multiline input, try the Emacs approach, line + scrolling. +- Add support for `rl_bind_key()`, currently only en editline specific + `el_bind_key()` exists. +- Make `char *rl_prompt;` globally visible. +- Add support for `rl_set_prompt()` +- Add support for `--enable-utf8` to configure script +- Use `strcmp(nl_langinfo(CODESET), "UTF-8")` to look for utf8 capable + terminal +- Implement simple UTF-8 parser according to + http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8 + + +[gnu]: http://www.delorie.com/gnu/docs/readline/rlman_41.html#IDX288 +[libuEv]: https://github.com/troglobit/libuev/ +[libedit]: http://www.thrysoee.dk/editline/ diff --git a/vendor/editline/examples/.gitignore b/vendor/editline/examples/.gitignore new file mode 100644 index 0000000..bcb1d97 --- /dev/null +++ b/vendor/editline/examples/.gitignore @@ -0,0 +1,5 @@ +*.o +cli +testit +excallback +fileman diff --git a/vendor/editline/examples/Makefile.am b/vendor/editline/examples/Makefile.am new file mode 100644 index 0000000..3e940b8 --- /dev/null +++ b/vendor/editline/examples/Makefile.am @@ -0,0 +1,5 @@ +noinst_PROGRAMS = testit cli excallback fileman +LDADD = $(top_builddir)/src/libeditline.la +AM_CPPFLAGS = -DEDITLINE_LIBRARY +AM_CFLAGS = -I$(top_srcdir)/src -I$(top_srcdir)/include +AM_LDFLAGS = -static diff --git a/vendor/editline/examples/cli.c b/vendor/editline/examples/cli.c new file mode 100644 index 0000000..368d04a --- /dev/null +++ b/vendor/editline/examples/cli.c @@ -0,0 +1,168 @@ +/* Custom CLI command completion. + * + * Copyright (c) 1992, 1993 Simmule Turner and Rich Salz. All rights reserved. + * + * This software is not subject to any license of the American Telephone + * and Telegraph Company or of the Regents of the University of California. + * + * Permission is granted to anyone to use this software for any purpose on + * any computer system, and to alter it and redistribute it freely, subject + * to the following restrictions: + * 1. The authors are not responsible for the consequences of use of this + * software, no matter how awful, even if they arise from flaws in it. + * 2. The origin of this software must not be misrepresented, either by + * explicit claim or by omission. Since few users ever read sources, + * credits must appear in the documentation. + * 3. Altered versions must be plainly marked as such, and must not be + * misrepresented as being the original software. Since few users + * ever read sources, credits must appear in the documentation. + * 4. This notice may not be removed or altered. + */ + +#include "editline.h" +#include + +#define HISTORY "/tmp/.cli-history" + +static char *list[] = { + "foo ", "bar ", "bsd ", "cli ", "ls ", "cd ", "malloc ", "tee ", NULL +}; + +/* Attempt to complete the pathname, returning an allocated copy. + * Fill in *unique if we completed it, or set it to 0 if ambiguous. */ +static char *my_rl_complete(char *token, int *match) +{ + int i; + int index = -1; + int matchlen = 0; + int count = 0; + + for (i = 0; list[i]; i++) { + int partlen = strlen (token); /* Part of token */ + + if (!strncmp (list[i], token, partlen)) { + index = i; + matchlen = partlen; + count ++; + } + } + + if (count == 1) { + *match = 1; + return strdup (list[index] + matchlen); + } + + return NULL; +} + +/* Return all possible completions. */ +static int my_rl_list_possib(char *token, char ***av) +{ + int i, num, total = 0; + char **copy; + + for (num = 0; list[num]; num++) + ; + + copy = (char **) malloc (num * sizeof(char *)); + for (i = 0; i < num; i++) { + if (!strncmp (list[i], token, strlen (token))) { + copy[total] = strdup (list[i]); + total ++; + } + } + *av = copy; + + return total; +} + +el_status_t list_possible(void) +{ + char **av; + char *word; + int ac; + + word = el_find_word(); + ac = rl_list_possib(word, &av); + if (word) + free(word); + if (ac) { + el_print_columns(ac, av); + while (--ac >= 0) + free(av[ac]); + free(av); + + return CSmove; + } + + return el_ring_bell(); +} + +el_status_t do_suspend(void) +{ + puts("Abort!"); + return CSstay; +} + +static void breakit(int signo) +{ + puts("Got SIGINT"); +} + +int main(void) +{ + char *line; + char *prompt = "cli> "; + char *passwd = "Enter password: "; + + signal(SIGINT, breakit); + + /* Setup callbacks */ + rl_set_complete_func(&my_rl_complete); + rl_set_list_possib_func(&my_rl_list_possib); + + el_bind_key('?', list_possible); + el_bind_key(CTL('Z'), do_suspend); + read_history(HISTORY); + + while ((line = readline(prompt))) { + int next = 0; + + /* Use el_no_echo when reading passwords and similar */ + if (!strncmp(line, "unlock", 6)) { + el_no_echo = 1; + while ((line = readline(passwd))) { + if (strncmp(line, "secret", 6)) { + printf("\nWrong password, please try again, it's secret.\n"); + free(line); + continue; + } + + el_no_echo = 0; + + printf("\nAchievement unlocked!\n"); + free(line); + next = 1; + break; + } + } + + if (next) + continue; + + if (*line != '\0') + printf("\t\t\t|%s|\n", line); + free(line); + } + + write_history(HISTORY); + + return 0; +} + +/** + * Local Variables: + * c-file-style: "k&r" + * c-basic-offset: 4 + * End: + */ diff --git a/vendor/editline/examples/excallback.c b/vendor/editline/examples/excallback.c new file mode 100644 index 0000000..015132a --- /dev/null +++ b/vendor/editline/examples/excallback.c @@ -0,0 +1,195 @@ +/* +From: Jeff Solomon +Date: Fri, 9 Apr 1999 10:13:27 -0700 (PDT) +To: chet@po.cwru.edu +Subject: new readline example +Message-ID: <14094.12094.527305.199695@mrclean.Stanford.EDU> + +Chet, + +I've been using readline 4.0. Specifically, I've been using the perl +version Term::ReadLine::Gnu. It works great. + +Anyway, I've been playing around the alternate interface and I wanted +to contribute a little C program, callback.c, to you that you could +use as an example of the alternate interface in the /examples +directory of the readline distribution. + +My example shows how, using the alternate interface, you can +interactively change the prompt (which is very nice imo). Also, I +point out that you must roll your own terminal setting when using the +alternate interface because readline depreps (using your parlance) the +terminal while in the user callback. I try to demostrate what I mean +with an example. I've included the program below. + +To compile, I just put the program in the examples directory and made +the appropriate changes to the EXECUTABLES and OBJECTS line and added +an additional target 'callback'. + +I compiled on my Sun Solaris2.6 box using Sun's cc. + +Let me know what you think. + +Jeff +*/ + +#if defined (HAVE_CONFIG_H) +#include +#endif + +#include +#include + +#ifdef HAVE_STDLIB_H +#include +#endif + +#ifdef HAVE_UNISTD_H +#include +#endif + +#include /* xxx - should make this more general */ + +#ifdef EDITLINE_LIBRARY +# include "editline.h" +#else +# include +#endif + +/* This little examples demonstrates the alternate interface to using readline. + * In the alternate interface, the user maintains control over program flow and + * only calls readline when STDIN is readable. Using the alternate interface, + * you can do anything else while still using readline (like talking to a + * network or another program) without blocking. + * + * Specifically, this program highlights two importants features of the + * alternate interface. The first is the ability to interactively change the + * prompt, which can't be done using the regular interface since rl_prompt is + * read-only. + * + * The second feature really highlights a subtle point when using the alternate + * interface. That is, readline will not alter the terminal when inside your + * callback handler. So let's so, your callback executes a user command that + * takes a non-trivial amount of time to complete (seconds). While your + * executing the command, the user continues to type keystrokes and expects them + * to be re-echoed on the new prompt when it returns. Unfortunately, the default + * terminal configuration doesn't do this. After the prompt returns, the user + * must hit one additional keystroke and then will see all of his previous + * keystrokes. To illustrate this, compile and run this program. Type "sleep" at + * the prompt and then type "bar" before the prompt returns (you have 3 + * seconds). Notice how "bar" is re-echoed on the prompt after the prompt + * returns? This is what you expect to happen. Now comment out the 4 lines below + * the line that says COMMENT LINE BELOW. Recompile and rerun the program and do + * the same thing. When the prompt returns, you should not see "bar". Now type + * "f", see how "barf" magically appears? This behavior is un-expected and not + * desired. + */ + +void process_line(char *line); +int change_prompt(void); +char *get_prompt(void); + +int prompt = 1; +char prompt_buf[40], line_buf[256]; +tcflag_t old_lflag; +cc_t old_vtime; +struct termios term; + +int +main() +{ + fd_set fds; + + /* Adjust the terminal slightly before the handler is installed. Disable + * canonical mode processing and set the input character time flag to be + * non-blocking. + */ + if( tcgetattr(STDIN_FILENO, &term) < 0 ) { + perror("tcgetattr"); + exit(1); + } + old_lflag = term.c_lflag; + old_vtime = term.c_cc[VTIME]; + term.c_lflag &= ~ICANON; + term.c_cc[VTIME] = 1; + /* COMMENT LINE BELOW - see above */ + if( tcsetattr(STDIN_FILENO, TCSANOW, &term) < 0 ) { + perror("tcsetattr"); + exit(1); + } + +// rl_add_defun("change-prompt", change_prompt, CTRL('t')); + rl_callback_handler_install(get_prompt(), process_line); + + while(1) { + FD_ZERO(&fds); + FD_SET(fileno(stdin), &fds); + + if( select(FD_SETSIZE, &fds, NULL, NULL, NULL) < 0) { + perror("select"); + exit(1); + } + + if( FD_ISSET(fileno(stdin), &fds) ) { + rl_callback_read_char(); + } + } + + return 0; +} + +void +process_line(char *line) +{ + if( line == NULL ) { + fprintf(stderr, "\n"); + + /* reset the old terminal setting before exiting */ + term.c_lflag = old_lflag; + term.c_cc[VTIME] = old_vtime; + if( tcsetattr(STDIN_FILENO, TCSANOW, &term) < 0 ) { + perror("tcsetattr"); + exit(1); + } + exit(0); + } + + if( strcmp(line, "sleep") == 0 ) { + sleep(3); + } else { + fprintf(stderr, "|%s|\n", line); + } + + free (line); +} + +int +change_prompt(void) +{ + /* toggle the prompt variable */ + prompt = !prompt; + + /* save away the current contents of the line */ + strncpy(line_buf, rl_line_buffer, sizeof(line_buf)); + line_buf[sizeof(line_buf) - 1] = 0; + + /* install a new handler which will change the prompt and erase the current line */ + rl_callback_handler_install(get_prompt(), process_line); + + /* insert the old text on the new line */ + rl_insert_text(line_buf); + + /* redraw the current line - this is an undocumented function. It invokes the + * redraw-current-line command. + */ + return rl_refresh_line(0, 0); +} + +char * +get_prompt(void) +{ + /* The prompts can even be different lengths! */ + sprintf(prompt_buf, "%s", + prompt ? "Hit ctrl-t to toggle prompt> " : "Pretty cool huh?> "); + return prompt_buf; +} diff --git a/vendor/editline/examples/fileman.c b/vendor/editline/examples/fileman.c new file mode 100644 index 0000000..088fec8 --- /dev/null +++ b/vendor/editline/examples/fileman.c @@ -0,0 +1,431 @@ +/* fileman.c -- A tiny application which demonstrates how to use the + GNU Readline library. This application interactively allows users + to manipulate files and their modes. + + NOTE: this was taken from the GNU Readline documentation and ported + to libedit. A command to output the history list was added. + +*/ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "editline.h" + +void too_dangerous(char *caller); +void initialize_readline(); +int execute_line(char *line); +int valid_argument(char *caller, char *arg); + +/* The names of functions that actually do the manipulation. */ +int com_list(char *); +int com_view(char *); +int com_history(char *); +int com_rename(char *); +int com_stat(char *); +int com_pwd(char *); +int com_delete(char *); +int com_help(char *); +int com_cd(char *); +int com_quit(char *); + +struct cmd { + char *name; /* User printable name of the function. */ + int (*func)(char *); /* Function to call to do the job. */ + char *doc; /* Documentation for this function. */ +}; + +struct cmd commands[] = { + { "cd", com_cd, "Change to directory DIR"}, + { "delete", com_delete, "Delete FILE"}, + { "help", com_help, "Display this text"}, + { "?", com_help, "Synonym for `help'"}, + { "list", com_list, "List files in DIR"}, + { "ls", com_list, "Synonym for `list'"}, + { "pwd", com_pwd, "Print the current working directory"}, + { "quit", com_quit, "Quit using Fileman"}, + { "rename", com_rename, "Rename FILE to NEWNAME"}, + { "stat", com_stat, "Print out statistics on FILE"}, + { "view", com_view, "View the contents of FILE"}, + { "history", com_history, "List editline history"}, + { NULL, NULL, NULL }, +}; + +/* Forward declarations. */ +char *stripwhite(); +struct cmd *find_command(); + +/* When non-zero, this means the user is done using this program. */ +int done; + +int main(int argc, char **argv) +{ + char *line, *s; + + setlocale(LC_CTYPE, ""); + + initialize_readline(); /* Bind our completer. */ + + /* Loop reading and executing lines until the user quits. */ + for (; done == 0;) { + line = readline("FileMan: "); + + if (!line) + break; + + /* Remove leading and trailing whitespace from the line. + Then, if there is anything left, add it to the history list + and execute it. */ + s = stripwhite(line); +#if 0 + if (*s) { + + char *expansion; + int result; + + result = history_expand(s, &expansion); + if (result < 0 || result == 2) { + fprintf(stderr, "%s\n", expansion); + } else { + add_history(expansion); + execute_line(expansion); + } + free(expansion); + } +#else + execute_line(s); +#endif + free(line); + } + + return 0; +} + +/* Execute a command line. */ +int execute_line(char *line) +{ + int i; + struct cmd *command; + char *word; + + /* Isolate the command word. */ + i = 0; + while (line[i] && isspace(line[i])) + i++; + word = line + i; + + while (line[i] && !isspace(line[i])) + i++; + + if (line[i]) + line[i++] = '\0'; + + command = find_command(word); + + if (!command) { + fprintf(stderr, "%s: No such command for FileMan.\n", word); + return -1; + } + + /* Get argument to command, if any. */ + while (isspace(line[i])) + i++; + + word = line + i; + + /* Call the function. */ + return command->func(word); +} + +/* Look up NAME as the name of a command, and return a pointer to that + command. Return a NULL pointer if NAME isn't a command name. */ +struct cmd *find_command(char *name) +{ + int i; + + for (i = 0; commands[i].name; i++) + if (strcmp(name, commands[i].name) == 0) + return &commands[i]; + + return NULL; +} + +/* + * Strip whitespace from the start and end of STRING. Return a pointer + * into STRING. + */ +char *stripwhite(char *string) +{ + char *s, *t; + + for (s = string; isspace(*s); s++) ; + + if (*s == 0) + return s; + + t = s + strlen(s) - 1; + while (t > s && isspace(*t)) + t--; + *++t = '\0'; + + return s; +} + +/* **************************************************************** */ +/* */ +/* Interface to Readline Completion */ +/* */ +/* **************************************************************** */ + +char *command_generator(const char *, int); +char **fileman_completion(const char *, int, int); + +/* + * Tell the GNU Readline library how to complete. We want to try to + * complete on command names if this is the first word in the line, or + * on filenames if not. + */ +void initialize_readline(void) +{ + /* Allow conditional parsing of the ~/.inputrc file. */ + rl_readline_name = "FileMan"; + + /* Tell the completer that we want a crack first. */ + rl_attempted_completion_function = fileman_completion; +} + +/* + * Attempt to complete on the contents of TEXT. START and END + * bound the region of rl_line_buffer that contains the word to + * complete. TEXT is the word to complete. We can use the entire + * contents of rl_line_buffer in case we want to do some simple + * parsing. Returnthe array of matches, or NULL if there aren't any. + */ +char **fileman_completion(const char *text, int start, int end) +{ + char **matches = NULL; + + /* If this word is at the start of the line, then it is a command + to complete. Otherwise it is the name of a file in the current + directory. */ + if (start == 0) + matches = rl_completion_matches(text, command_generator); + + return matches; +} + +/* Generator function for command completion. STATE lets us + know whether to start from scratch; without any state + (i.e. STATE == 0), then we start at the top of the list. */ +char *command_generator(const char *text, int state) +{ + static int list_index, len; + char *name; + + /* If this is a new word to complete, initialize now. This + includes saving the length of TEXT for efficiency, and + initializing the index variable to 0. */ + if (!state) { + list_index = 0; + len = strlen(text); + } + + /* Return the next name which partially matches from the + command list. */ + while ((name = commands[list_index].name)) { + list_index++; + + if (strncmp(name, text, len) == 0) + return strdup(name); + } + + /* If no names matched, then return NULL. */ + return NULL; +} + +/* **************************************************************** */ +/* */ +/* FileMan Commands */ +/* */ +/* **************************************************************** */ + +/* String to pass to system (). This is for the LIST, VIEW and RENAME + commands. */ +static char syscom[1024]; + +/* List the file(s) named in arg. */ +int com_list(char *arg) +{ + if (!arg) + arg = ""; + + sprintf(syscom, "ls -FClg %s", arg); + + return system(syscom); +} + +int com_view(char *arg) +{ + if (!valid_argument("view", arg)) + return 1; + + sprintf(syscom, "more %s", arg); + + return system(syscom); +} + +int com_history(char *arg) +{ + const char *he; + + /* rewind history */ + while (el_prev_hist()) ; + + for (he = el_next_hist(); he != NULL; he = el_next_hist()) + printf("%s\n", he); + + return 0; +} + +int com_rename(char *arg) +{ + too_dangerous("rename"); + return 1; +} + +int com_stat(char *arg) +{ + struct stat finfo; + + if (!valid_argument("stat", arg)) + return 1; + + if (stat(arg, &finfo) == -1) { + perror(arg); + return 1; + } + + printf("Statistics for `%s':\n", arg); + + printf("%s has %ld link%s, and is %lld byte%s in length.\n", arg, + (long)finfo.st_nlink, + (finfo.st_nlink == 1) ? "" : "s", + (long long)finfo.st_size, (finfo.st_size == 1) ? "" : "s"); + printf("Inode Last Change at: %s", ctime(&finfo.st_ctime)); + printf(" Last access at: %s", ctime(&finfo.st_atime)); + printf(" Last modified at: %s", ctime(&finfo.st_mtime)); + + return 0; +} + +int com_delete(char *arg) +{ + too_dangerous("delete"); + return 1; +} + +/* Print out help for ARG, or for all of the commands if ARG is + not present. */ +int com_help(char *arg) +{ + int i; + int printed = 0; + + for (i = 0; commands[i].name; i++) { + if (!*arg || (strcmp(arg, commands[i].name) == 0)) { + printf("%s\t\t%s.\n", commands[i].name, + commands[i].doc); + printed++; + } + } + + if (!printed) { + printf("No commands match `%s'. Possibilties are:\n", arg); + + for (i = 0; commands[i].name; i++) { + /* Print in six columns. */ + if (printed == 6) { + printed = 0; + printf("\n"); + } + + printf("%s\t", commands[i].name); + printed++; + } + + if (printed) + printf("\n"); + } + + return 0; +} + +/* Change to the directory ARG. */ +int com_cd(char *arg) +{ + if (chdir(arg) == -1) { + perror(arg); + return 1; + } + + com_pwd(""); + return 0; +} + +/* Print out the current working directory. */ +int com_pwd(char *ignore) +{ + char dir[1024], *s; + + s = getcwd(dir, sizeof(dir) - 1); + if (!s) { + printf("Error getting pwd: %s\n", dir); + return 1; + } + + printf("Current directory is %s\n", dir); + return 0; +} + +/* The user wishes to quit using this program. Just set DONE + non-zero. */ +int com_quit(char *arg) +{ + done = 1; + return 0; +} + +/* Function which tells you that you can't do this. */ +void too_dangerous(char *caller) +{ + fprintf(stderr, "%s: Too dangerous for me to distribute.\n", caller); + fprintf(stderr, "Write it yourself.\n"); +} + +/* Return non-zero if ARG is a valid argument for CALLER, + else print an error message and return zero. */ +int valid_argument(char *caller, char *arg) +{ + if (!arg || !*arg) { + fprintf(stderr, "%s: Argument required.\n", caller); + return 0; + } + + return 1; +} + +/** + * Local Variables: + * c-file-style: "k&r" + * c-basic-offset: 4 + * End: + */ diff --git a/vendor/editline/examples/testit.c b/vendor/editline/examples/testit.c new file mode 100644 index 0000000..204dc76 --- /dev/null +++ b/vendor/editline/examples/testit.c @@ -0,0 +1,78 @@ +/* A "micro-shell" to test editline library. + * If given any arguments, commands aren't executed. + * + * Copyright (c) 1992, 1993 Simmule Turner and Rich Salz. All rights reserved. + * + * This software is not subject to any license of the American Telephone + * and Telegraph Company or of the Regents of the University of California. + * + * Permission is granted to anyone to use this software for any purpose on + * any computer system, and to alter it and redistribute it freely, subject + * to the following restrictions: + * 1. The authors are not responsible for the consequences of use of this + * software, no matter how awful, even if they arise from flaws in it. + * 2. The origin of this software must not be misrepresented, either by + * explicit claim or by omission. Since few users ever read sources, + * credits must appear in the documentation. + * 3. Altered versions must be plainly marked as such, and must not be + * misrepresented as being the original software. Since few users + * ever read sources, credits must appear in the documentation. + * 4. This notice may not be removed or altered. + */ +#include +#include +#ifdef HAVE_STDLIB_H +#include +#endif +#ifdef HAVE_STRING_H +#include +#endif +#ifdef HAVE_UNISTD_H +#include +#endif +#include "editline.h" + +#ifndef HAVE_PERROR +extern int errno; +void perror(char *s) +{ + fprintf(stderr, "%s: error %d\n", s, errno); +} +#endif /* !HAVE_PERROR */ + +int main(int argc, char *argv[] __attribute__ ((unused))) +{ + int doit; + char *prompt, *p; + + read_history(".testit_history"); + + doit = argc == 1; + if ((prompt = getenv("TESTPROMPT")) == NULL) + prompt = "testit> "; + + while ((p = readline(prompt)) != NULL) { + printf("\t\t\t|%s|\n", p); + if (doit) { + if (strncmp(p, "cd ", 3) == 0) { + if (chdir(&p[3]) < 0) + perror(&p[3]); + } else if (system(p) != 0) { + perror(p); + } + } + free(p); + } + + write_history(".testit_history"); + rl_uninitialize(); + + return 0; +} + +/** + * Local Variables: + * c-file-style: "k&r" + * c-basic-offset: 4 + * End: + */ diff --git a/vendor/editline/include/Makefile.am b/vendor/editline/include/Makefile.am new file mode 100644 index 0000000..17bdc7e --- /dev/null +++ b/vendor/editline/include/Makefile.am @@ -0,0 +1,2 @@ +library_includedir = $(includedir) +library_include_HEADERS = editline.h diff --git a/vendor/editline/include/editline.h b/vendor/editline/include/editline.h new file mode 100644 index 0000000..7ae8810 --- /dev/null +++ b/vendor/editline/include/editline.h @@ -0,0 +1,132 @@ +/* + * Copyright (c) 1992, 1993 Simmule Turner and Rich Salz + * All rights reserved. + * + * This software is not subject to any license of the American Telephone + * and Telegraph Company or of the Regents of the University of California. + * + * Permission is granted to anyone to use this software for any purpose on + * any computer system, and to alter it and redistribute it freely, subject + * to the following restrictions: + * 1. The authors are not responsible for the consequences of use of this + * software, no matter how awful, even if they arise from flaws in it. + * 2. The origin of this software must not be misrepresented, either by + * explicit claim or by omission. Since few users ever read sources, + * credits must appear in the documentation. + * 3. Altered versions must be plainly marked as such, and must not be + * misrepresented as being the original software. Since few users + * ever read sources, credits must appear in the documentation. + * 4. This notice may not be removed or altered. + */ +#ifndef EDITLINE_H_ +#define EDITLINE_H_ + +/* Handy macros when binding keys. */ +#define CTL(x) ((x) & 0x1F) +#define ISCTL(x) ((x) && (x) < ' ') +#define UNCTL(x) ((x) + 64) +#define META(x) ((x) | 0x80) +#define ISMETA(x) ((x) & 0x80) +#define UNMETA(x) ((x) & 0x7F) + +#ifdef __cplusplus +extern "C" { +#endif + +/* Command status codes. */ +typedef enum { + CSdone = 0, /* OK */ + CSeof, /* Error, or EOF */ + CSmove, + CSdispatch, + CSstay, + CSsignal +} el_status_t; + +/* Editline specific types, despite rl_ prefix. From Heimdal project. */ +typedef int rl_list_possib_func_t(char*, char***); +typedef el_status_t el_keymap_func_t(void); +typedef int rl_hook_func_t(void); +typedef int rl_getc_func_t(void); +typedef void rl_voidfunc_t(void); +typedef void rl_vintfunc_t(int); +typedef void rl_vcpfunc_t(char *); + +/* FSF Readline compat tupes */ +typedef char *rl_complete_func_t (char *, int*); +typedef char *rl_compentry_func_t (const char *, int); +typedef char **rl_completion_func_t (const char *, int, int); + +/* Display 8-bit chars "as-is" or as `M-x'? Toggle with M-m. (Default:0 - "as-is") */ +extern int rl_meta_chars; + +/* Editline specific functions. */ +extern char * el_find_word(void); +extern void el_print_columns(int ac, char **av); +extern el_status_t el_ring_bell(void); +extern el_status_t el_del_char(void); + +extern el_status_t el_bind_key(int key, el_keymap_func_t function); +extern el_status_t el_bind_key_in_metamap(int key, el_keymap_func_t function); + +extern const char *el_next_hist(void); +extern const char *el_prev_hist(void); + +extern char *rl_complete(char *token, int *match); +extern int rl_list_possib(char *token, char ***av); +extern char **rl_completion_matches(const char *token, rl_compentry_func_t *generator); +extern char *rl_filename_completion_function(const char *text, int state); + +/* For compatibility with FSF readline. */ +extern int rl_point; +extern int rl_mark; +extern int rl_end; +extern int rl_inhibit_complete; +extern char *rl_line_buffer; +extern const char *rl_readline_name; +extern FILE *rl_instream; /* The stdio stream from which input is read. Defaults to stdin if NULL - Not supported yet! */ +extern FILE *rl_outstream; /* The stdio stream to which output is flushed. Defaults to stdout if NULL - Not supported yet! */ +extern int el_no_echo; /* E.g under emacs, don't echo except prompt */ +extern int el_no_hist; /* Disable auto-save of and access to history -- e.g. for password prompts or wizards */ +extern int el_hist_size; /* size of history scrollback buffer, default: 15 */ + +extern void rl_initialize (void); +extern void rl_reset_terminal (const char *terminal_name); +extern void rl_uninitialize (void); + +extern void rl_save_prompt (void); +extern void rl_restore_prompt (void); +extern void rl_set_prompt (const char *prompt); + +extern void rl_clear_message (void); +extern void rl_forced_update_display(void); + +extern void rl_prep_terminal (int meta_flag); +extern void rl_deprep_terminal (void); + +extern int rl_getc(void); +extern int rl_insert_text (const char *text); +extern int rl_refresh_line (int ignore1, int ignore2); + +extern char *readline (const char *prompt); + +extern void add_history (const char *line); +extern int read_history (const char *filename); +extern int write_history (const char *filename); + +extern rl_getc_func_t *rl_set_getc_func(rl_getc_func_t *func); + +extern rl_completion_func_t *rl_attempted_completion_function; +extern rl_complete_func_t *rl_set_complete_func (rl_complete_func_t *func); +extern rl_list_possib_func_t *rl_set_list_possib_func (rl_list_possib_func_t *func); + +/* Alternate interface to plain readline(), for event loops */ +extern void rl_callback_handler_install (const char *prompt, rl_vcpfunc_t *lhandler); +extern void rl_callback_read_char (void); +extern void rl_callback_handler_remove (void); + +#ifdef __cplusplus +} +#endif + +#endif /* EDITLINE_H_ */ diff --git a/vendor/editline/libeditline.pc.in b/vendor/editline/libeditline.pc.in new file mode 100644 index 0000000..eb5e735 --- /dev/null +++ b/vendor/editline/libeditline.pc.in @@ -0,0 +1,12 @@ +prefix=@prefix@ +exec_prefix=@exec_prefix@ +libdir=@libdir@ +includedir=@includedir@ + +Name: @PACKAGE@ +Description: A small line editing library without termcap/curses +Version: @VERSION@ +Requires: +Libs: -L${libdir} -leditline +Cflags: -I${includedir} + diff --git a/vendor/editline/m4/.gitignore b/vendor/editline/m4/.gitignore new file mode 100644 index 0000000..0f4126c --- /dev/null +++ b/vendor/editline/m4/.gitignore @@ -0,0 +1 @@ +*.m4 diff --git a/vendor/editline/man/Makefile.am b/vendor/editline/man/Makefile.am new file mode 100644 index 0000000..de973bf --- /dev/null +++ b/vendor/editline/man/Makefile.am @@ -0,0 +1,3 @@ +AUTOMAKE_OPTIONS = foreign + +dist_man_MANS = editline.3 diff --git a/vendor/editline/man/editline.3 b/vendor/editline/man/editline.3 new file mode 100644 index 0000000..daf8a1c --- /dev/null +++ b/vendor/editline/man/editline.3 @@ -0,0 +1,274 @@ +.Dd April 27, 2019 +.Dt EDITLINE 3 +.Os +.Sh NAME +.Nm editline +.Nd command-line editing library with history +.Sh LIBRARY +.Lb libeditline +.Sh SYNOPSIS +.In editline.h +.Fn "char *readline" "const char *prompt" +.Fn "void add_history" "const char *line" +.Fn "int read_history" "const char *filename" +.Fn "int write_history" "const char *filename" +.Sh DESCRIPTION +.Nm +is a library that provides n line-editing interface with history. It +is intended to be functionally equivalent with the +.Nm readline +library provided by the Free Software Foundation, but much smaller. The +bulk of this manual page describes the basic user interface. More APIs, +both native and for +.Nm readline +compatibility , +are also available. See the +.Cm editline.h +header file for details. +.Pp +The +.Fn readline +function displays the given +.Fa prompt +on stdout, waits for user input on stdin and then returns a line of text +with the trailing newline removed. The data is returned in a buffer +allocated with +.Xr malloc 3 , +so the space should be released with +.Xr free 3 +when the calling program is done with it. +.Pp +Each line returned is automatically saved in the internal history list, +unless it happens to be equal to the previous line. This is +configurable if you are building editline from source, i.e. if you would +rather like to call +.Fn add_history +manually. +.Pp +The +.Fn read_history +and +.Fn write_history +functions can be used to load and store the history of your application. +.Em Note: +these APIs do not do any tilde or environment variable expansion of the +given filename. +.Ss User Interface +A program that uses this library provides a simple emacs-like editing +interface to its users. A line may be edited before it is sent to the +calling program by typing either control characters or escape sequences. +A control character, shown as a caret followed by a letter, is typed by +holding down the control key while the letter is typed. For example, +.Cm ^A +is a control-A. An escape sequence is entered by typing the escape key +followed by one or more characters. The escape key is abbreviated as +.Cm ESC . +Note that unlike control keys, case matters in escape sequences; +.Cm ESC F +is not the same as +.Cm ESC f . +.Pp +An editing command may be typed anywhere on the line, not just at the +beginning. In addition, a return may also be typed anywhere on the +line, not just at the end. +.Pp +Most editing commands may be given a repeat count, +.Ar n , +where +.Ar n +is a number. To enter a repeat count, type the escape key, the number, +and then the command to execute. For example, +.Cm ESC 4 ^f +moves forward four characters. If a command may be given a repeat count +then the text +.Cm [n] +is given at the end of its description. +.Pp +The following control characters are accepted: +.Pp +.Bl -tag -width "ESC DEL " -compact +.It ^A +Move to the beginning of the line +.It ^B +Move left (backwards) [n] +.It ^D +Delete character [n] +.It ^E +Move to end of line +.It ^F +Move right (forwards) [n] +.It ^G +Ring the bell +.It ^H +Delete character before cursor (backspace key) [n] +.It ^I +Complete filename (tab key); see below +.It ^J +Done with line (return key) +.It ^K +Kill to end of line (or column [n]) +.It ^L +Redisplay line +.It ^M +Done with line (alternate return key) +.It ^N +Get next line from history [n] +.It ^P +Get previous line from history [n] +.It ^R +Search backward (forward if [n]) through history for text; prefixing the +string with a caret (^) forces it to match only at the beginning of a +history line +.It ^T +Transpose characters +.It ^V +Insert next character, even if it is an edit command +.It ^W +Wipe to the mark +.It ^X^X +Exchange current location and mark +.It ^Y +Yank back last killed text +.It ^[ +Start an escape sequence (escape key) +.It ^]c +Move forward to next character +.Cm c +.It ^? +Delete character before cursor (delete key) [n] +.El +.Pp +The following escape sequences are provided: +.Pp +.Bl -tag -width "ESC DEL " -compact +.It ESC ^H +Delete previous word (backspace key) [n] +.It ESC DEL +Delete previous word (delete key) [n] +.It ESC SP +Set the mark (space key); see ^X^X and ^Y above +.It ESC\ . +Get the last (or [n]'th) word from previous line +.It ESC\ ? +Show possible completions; see below +.It ESC < +Move to start of history +.It ESC > +Move to end of history +.It ESC b +Move backward a word [n] +.It ESC d +Delete word under cursor [n] +.It ESC f +Move forward a word [n] +.It ESC l +Make word lowercase [n] +.It ESC m +Toggle if 8bit chars display normally or with an +.Ar M- +prefix +.It ESC u +Make word uppercase [n] +.It ESC y +Yank back last killed text +.It ESC v +Show library version +.It ESC w +Make area up to mark yankable +.It ESC nn +Set repeat count to the number nn +.It ESC C +Read from environment variable +.Ar $C , +where +.Ar C +is an uppercase letter +.El +.Pp +The +.Nm +library has a small macro facility. If you type the escape key followed +by an uppercase letter, +.Ar C , +then the contents of the environment variable +.Ar $C +are read in as if you had typed them at the keyboard. For example, if +the variable +.Ar $L +contains the following: +.Pp +.Dl ^A^Kecho '^V^[[H^V^[[2J'^M +.Pp +Then typing +.Cm ESC L +will move to the beginning of the line, kill the entire line, enter the +echo command needed to clear the terminal (if your terminal is like a +VT-100), and send the line back to the shell. +.Pp +The +.Nm +library also does filename completion. Suppose the root directory has +the following files in it: +.Pp +.Dl bin vmunix +.Dl core vmunix.old +.Pp +If you type +.Cm rm /v +and then the tab key, +.Nm +will then finish off as much of the name as possible by adding +.Ar munix . +Because the name is not unique, it will then beep. If you type the +escape key and a question mark, it will display the two choices. If you +then type a period and a tab, the library will finish off the filename +for you: +.Pp +.Bd -ragged -offset indent +rm /v[TAB] +.Em munix +\&.[TAB] +.Em old +.Ed +.Pp +The tab key is shown by [TAB] and the automatically-entered text +is shown in italics, or underline. +.Sh USAGE +To include +.Nm +in your program, call it as you do any other function and link your +program with +.Ar -leditline . +.Ss Example +The following brief example lets you enter a line and edit it, then displays it. +.Pp +.Bd -literal -offset indent +#include +#include +#include + +int main(void) +{ + char *p; + + while ((p = readline("CLI> "))) { + puts(p); + free(p); + } + + return 0; +} +.El +.Sh AUTHORS +The original editline library was posted to comp.sources.unix newsgroup +by created by Simmule R. Turner and Rich Salz in 1992. It now exists in +several forks: Debian, Minix, Heimdal, Festival speech tools, Mozilla, +Google Gadgets for Linux, and many other places. The original manual +page was made by David W. Sanderson. +.Pp +This version was originally based on the Minix 2 sources, but has since +evolved to include patches from all relevant forks. It is currently +maintained by Joachim Nilsson at GitHub, +.Aq http://github.com/troglobit/editline +.Sh BUGS +Does not handle multiple lines or unicode characters well. diff --git a/vendor/editline/src/.gitignore b/vendor/editline/src/.gitignore new file mode 100644 index 0000000..3057f3a --- /dev/null +++ b/vendor/editline/src/.gitignore @@ -0,0 +1,2 @@ +libeditline.a +libeditline.la diff --git a/vendor/editline/src/Makefile.am b/vendor/editline/src/Makefile.am new file mode 100644 index 0000000..702893a --- /dev/null +++ b/vendor/editline/src/Makefile.am @@ -0,0 +1,6 @@ +lib_LTLIBRARIES = libeditline.la +libeditline_la_SOURCES = editline.c editline.h complete.c sysunix.c unix.h +libeditline_la_CFLAGS = -std=gnu99 +libeditline_la_CFLAGS += -W -Wall -Wextra -Wundef -Wunused -Wstrict-prototypes +libeditline_la_CFLAGS += -Werror-implicit-function-declaration -Wshadow -Wcast-qual +libeditline_la_LDFLAGS = $(AM_LDFLAGS) -version-info 1:0:0 diff --git a/vendor/editline/src/complete.c b/vendor/editline/src/complete.c new file mode 100644 index 0000000..d6b8a4b --- /dev/null +++ b/vendor/editline/src/complete.c @@ -0,0 +1,442 @@ +/* History and file completion functions for editline library. + * + * Copyright (c) 1992, 1993 Simmule Turner and Rich Salz + * All rights reserved. + * + * This software is not subject to any license of the American Telephone + * and Telegraph Company or of the Regents of the University of California. + * + * Permission is granted to anyone to use this software for any purpose on + * any computer system, and to alter it and redistribute it freely, subject + * to the following restrictions: + * 1. The authors are not responsible for the consequences of use of this + * software, no matter how awful, even if they arise from flaws in it. + * 2. The origin of this software must not be misrepresented, either by + * explicit claim or by omission. Since few users ever read sources, + * credits must appear in the documentation. + * 3. Altered versions must be plainly marked as such, and must not be + * misrepresented as being the original software. Since few users + * ever read sources, credits must appear in the documentation. + * 4. This notice may not be removed or altered. + */ + +#include +#include "editline.h" + +#define MAX_TOTAL_MATCHES (256 << sizeof(char *)) + +int rl_attempted_completion_over = 0; +rl_completion_func_t *rl_attempted_completion_function = NULL; +rl_compentry_func_t *rl_completion_entry_function = NULL; + +/* Wrap strcmp() for qsort() -- weird construct to pass -Wcast-qual */ +static int compare(const void *p1, const void *p2) +{ + char *const *v1 = (char *const *)p1; + char *const *v2 = (char *const *)p2; + + return strcmp(*v1, *v2); +} + +/* Fill in *avp with an array of names that match file, up to its length. + * Ignore . and .. . */ +static int FindMatches(char *dir, char *file, char ***avp) +{ + char **av; + char **word; + char *p; + DIR *dp; + DIRENTRY *ep; + size_t ac; + size_t len; + size_t choices; + size_t total; + + if ((dp = opendir(dir)) == NULL) + return 0; + + av = NULL; + ac = 0; + len = strlen(file); + choices = 0; + total = 0; + while ((ep = readdir(dp)) != NULL) { + p = ep->d_name; + if (p[0] == '.' && (p[1] == '\0' || (p[1] == '.' && p[2] == '\0'))) + continue; + if (len && strncmp(p, file, len) != 0) + continue; + + choices++; + if ((total += strlen(p)) > MAX_TOTAL_MATCHES) { + /* This is a bit too much. */ + while (ac > 0) free(av[--ac]); + continue; + } + + if ((ac % MEM_INC) == 0) { + word = malloc(sizeof(char *) * (ac + MEM_INC)); + if (!word) { + total = 0; + break; + } + + if (ac) { + memcpy(word, av, ac * sizeof(char *)); + free(av); + } + *avp = av = word; + } + + if ((av[ac] = strdup(p)) == NULL) { + if (ac == 0) + free(av); + total = 0; + break; + } + ac++; + } + + /* Clean up and return. */ + closedir(dp); + if (total > MAX_TOTAL_MATCHES) { + char many[sizeof(total) * 3]; + + p = many + sizeof(many); + *--p = '\0'; + while (choices > 0) { + *--p = '0' + choices % 10; + choices /= 10; + } + + while (p > many + sizeof(many) - 8) + *--p = ' '; + + if ((p = strdup(p)) != NULL) + av[ac++] = p; + + if ((p = strdup("choices")) != NULL) + av[ac++] = p; + } else { + if (ac) + qsort(av, ac, sizeof(char *), compare); + } + + return ac; +} + +/* Split a pathname into allocated directory and trailing filename parts. */ +static int SplitPath(const char *path, char **dirpart, char **filepart) +{ + static char DOT[] = "."; + char *dpart; + char *fpart; + + if ((fpart = strrchr(path, '/')) == NULL) { + if ((dpart = strdup(DOT)) == NULL) + return -1; + + if ((fpart = strdup(path)) == NULL) { + free(dpart); + return -1; + } + } else { + if ((dpart = strdup(path)) == NULL) + return -1; + + dpart[fpart - path + 1] = '\0'; + if ((fpart = strdup(fpart + 1)) == NULL) { + free(dpart); + return -1; + } + } + *dirpart = dpart; + *filepart = fpart; + + return 0; +} + +static rl_complete_func_t *el_complete_func = NULL; + +/* For compatibility with the Heimdal project. */ +rl_complete_func_t *rl_set_complete_func(rl_complete_func_t *func) +{ + rl_complete_func_t *old = el_complete_func; + el_complete_func = func; + + return old; +} + +/* Attempt to complete the pathname, returning an allocated copy. + * Fill in *match if we completed it, or set it to 0 if ambiguous. */ +char *el_filename_complete(char *pathname, int *match) +{ + char **av; + char *dir; + char *file; + char *path; + char *p; + size_t ac; + size_t end; + size_t i; + size_t j; + size_t len; + + if (SplitPath((const char *)pathname, &dir, &file) < 0) + return NULL; + + if ((ac = FindMatches(dir, file, &av)) == 0) { + free(dir); + free(file); + + return NULL; + } + + p = NULL; + len = strlen(file); + if (ac == 1) { + /* Exactly one match -- finish it off. */ + *match = 1; + j = strlen(av[0]) - len + 2; + p = malloc(sizeof(char) * (j + 1)); + if (p) { + memcpy(p, av[0] + len, j); + len = strlen(dir) + strlen(av[0]) + 2; + path = malloc(sizeof(char) * len); + if (path) { + snprintf(path, len, "%s/%s", dir, av[0]); + rl_add_slash(path, p); + free(path); + } + } + } else { + *match = 0; + if (len) { + /* Find largest matching substring. */ + for (i = len, end = strlen(av[0]); i < end; i++) { + for (j = 1; j < ac; j++) { + if (av[0][i] != av[j][i]) + goto breakout; + } + } + breakout: + if (i > len) { + j = i - len + 1; + p = malloc(sizeof(char) * j); + if (p) { + memcpy(p, av[0] + len, j); + p[j - 1] = '\0'; + } + } + } + } + + /* Clean up and return. */ + free(dir); + free(file); + for (i = 0; i < ac; i++) + free(av[i]); + free(av); + + return p; +} + +char *rl_filename_completion_function(const char *text, int state) +{ + char *dir; + char *file; + static char **av; + static size_t i, ac; + + if (!state) { + if (SplitPath(text, &dir, &file) < 0) + return NULL; + + ac = FindMatches(dir, file, &av); + free(dir); + free(file); + if (!ac) + return NULL; + + i = 0; + } + + if (i < ac) + return av[i++]; + + do { + free(av[--i]); + } while (i > 0); + + return NULL; +} + +/* Similar to el_find_word(), but used by GNU Readline API */ +static char *rl_find_token(size_t *len) +{ + char *ptr; + int pos; + + for (pos = rl_point; pos < rl_end; pos++) { + if (isspace(rl_line_buffer[pos])) { + if (pos > 0) + pos--; + break; + } + } + + ptr = &rl_line_buffer[pos]; + while (pos >= 0 && !isspace(rl_line_buffer[pos])) { + if (pos == 0) + break; + + pos--; + } + + if (ptr != &rl_line_buffer[pos]) { + *len = (size_t)(ptr - &rl_line_buffer[pos]); + return &rl_line_buffer[pos]; + } + + return NULL; +} + +/* + * "uses an application-supplied generator function to generate the list + * of possible matches, and then returns the array of these matches. The + * caller should place the address of its generator function in + * rl_completion_entry_function" + */ +char **rl_completion_matches(const char *token, rl_compentry_func_t *generator) +{ + int state = 0, num = 0; + char **array, *entry; + + if (!generator) { + generator = rl_completion_entry_function; + if (!generator) + generator = rl_filename_completion_function; + } + + if (!generator) + return NULL; + + array = malloc(512 * sizeof(char *)); + if (!array) + return NULL; + + while (num < 511 && (entry = generator(token, state))) { + state = 1; + array[num++] = entry; + } + array[num] = NULL; + + if (!num) { + free(array); + return NULL; + } + + return array; +} + +static char *complete(char *token, int *match) +{ + size_t len = 0; + char *word, **words = NULL; + int start, end; + + word = rl_find_token(&len); + if (!word) + goto fallback; + + start = word - rl_line_buffer; + end = start + len; + + word = strndup(word, len); + if (!word) + goto fallback; + + rl_attempted_completion_over = 0; + words = rl_attempted_completion_function(word, start, end); + + if (!rl_attempted_completion_over && !words) + words = rl_completion_matches(word, NULL); + + if (words) { + int i = 0; + + free(word); + word = NULL; + if (words[0]) + word = strdup(words[0] + len); + + while (words[i]) + free(words[i++]); + free(words); + + if (word) + return word; + } + +fallback: + return el_filename_complete(token, match); +} + +/* + * First check for editline specific custom completion function, then + * for any GNU Readline compat, then fallback to filename completion. + */ +char *rl_complete(char *token, int *match) +{ + if (el_complete_func) + return el_complete_func(token, match); + + if (rl_attempted_completion_function) + return complete(token, match); + + return el_filename_complete(token, match); +} + +static rl_list_possib_func_t *el_list_possib_func = NULL; + +/* For compatibility with the Heimdal project. */ +rl_list_possib_func_t *rl_set_list_possib_func(rl_list_possib_func_t *func) +{ + rl_list_possib_func_t *old = el_list_possib_func; + el_list_possib_func = func; + return old; +} + +/* Default possible completions. */ +int el_filename_list_possib(char *pathname, char ***av) +{ + char *dir; + char *file; + int ac; + + if (SplitPath(pathname, &dir, &file) < 0) + return 0; + + ac = FindMatches(dir, file, av); + free(dir); + free(file); + + return ac; +} + +/* Return all possible completions. */ +int rl_list_possib(char *token, char ***av) +{ + if (el_list_possib_func) + return el_list_possib_func(token, av); + + return el_filename_list_possib(token, av); +} + + +/** + * Local Variables: + * c-file-style: "k&r" + * c-basic-offset: 4 + * End: + */ diff --git a/vendor/editline/src/editline.c b/vendor/editline/src/editline.c new file mode 100644 index 0000000..86e05a0 --- /dev/null +++ b/vendor/editline/src/editline.c @@ -0,0 +1,1969 @@ +/* + * Copyright (c) 1992, 1993 Simmule Turner and Rich Salz + * All rights reserved. + * + * This software is not subject to any license of the American Telephone + * and Telegraph Company or of the Regents of the University of California. + * + * Permission is granted to anyone to use this software for any purpose on + * any computer system, and to alter it and redistribute it freely, subject + * to the following restrictions: + * 1. The authors are not responsible for the consequences of use of this + * software, no matter how awful, even if they arise from flaws in it. + * 2. The origin of this software must not be misrepresented, either by + * explicit claim or by omission. Since few users ever read sources, + * credits must appear in the documentation. + * 3. Altered versions must be plainly marked as such, and must not be + * misrepresented as being the original software. Since few users + * ever read sources, credits must appear in the documentation. + * 4. This notice may not be removed or altered. + */ + +#include +#include +#include +#include + +#include "editline.h" + +/* +** Manifest constants. +*/ +#define SCREEN_COLS 80 +#define SCREEN_ROWS 24 +#define EL_STDIN 0 +#define EL_STDOUT 1 +#define NO_ARG (-1) +#define DEL 127 +#define SEPS "\"#$&'()*:;<=>?[\\]^`{|}~\n\t " + +/* +** The type of case-changing to perform. +*/ +typedef enum { + TOupper, TOlower, TOcapitalize +} el_case_t; + +/* +** Key to command mapping. +*/ +typedef struct { + int Key; + el_status_t (*Function)(void); +} el_keymap_t; + +/* +** Command history structure. +*/ +typedef struct { + int Size; + int Pos; + char **Lines; +} el_hist_t; + +/* User definable callbacks. */ +rl_getc_func_t *rl_getc_function = rl_getc; +rl_hook_func_t *rl_event_hook; +rl_vintfunc_t *rl_prep_term_function = rl_prep_terminal; +rl_voidfunc_t *rl_deprep_term_function = rl_deprep_terminal; + +/* +** Globals. +*/ +int rl_eof; +int rl_erase; +int rl_intr; +int rl_kill; +int rl_quit; +#ifdef CONFIG_SIGSTOP +int rl_susp; +#endif + +int el_hist_size = 15; +static el_hist_t H = { + .Size = 0, + .Pos = 0, + .Lines = NULL, +}; + +static char NILSTR[] = ""; +static const char *el_input = NILSTR; +static char *Yanked; +static char *Screen; +static char NEWLINE[]= CRLF; +static char CLEAR[]= "\ec"; +static const char *el_term = "dumb"; +static int Repeat; +static int old_point; +static int el_push_back; +static int el_pushed; +static int el_intr_pending; +static int el_infd = EL_STDIN; +static int el_outfd = EL_STDOUT; +static el_keymap_t Map[]; +static el_keymap_t MetaMap[]; +static size_t Length = 0; +static size_t ScreenCount; +static size_t ScreenSize; +static char *backspace = "\b"; +static char *old_search = NULL; +static int tty_cols = SCREEN_COLS; +static int tty_rows = SCREEN_ROWS; +static int Searching = 0; +static const char *(*search_move)(void); +static const char *old_prompt = NULL; +static rl_vcpfunc_t *line_handler = NULL; + +int el_no_echo = 0; /* e.g., under Emacs */ +int el_no_hist = 0; +int rl_point; +int rl_mark; +int rl_end; +int rl_meta_chars = 0; /* Display 8-bit chars as the actual char(0) or as `M-x'(1)? */ +int rl_inhibit_complete = 0; +char *rl_line_buffer = NULL; +const char *rl_prompt = NULL; +const char *rl_readline_name = NULL; /* Set by calling program, for conditional parsing of ~/.inputrc - Not supported yet! */ +FILE *rl_instream = NULL; /* The stdio stream from which input is read. Defaults to stdin if NULL */ +FILE *rl_outstream = NULL; /* The stdio stream to which output is flushed. Defaults to stdout if NULL */ + +/* Declarations. */ +static char *editinput(int complete); +#ifdef CONFIG_USE_TERMCAP +extern char *tgetstr(const char *, char **); +extern int tgetent(char *, const char *); +extern int tgetnum(const char *); +#endif + + +/* +** Misc. local helper functions. +*/ +static int is_alpha_num(unsigned char c) +{ + if (isalnum(c)) + return 1; + if (ISMETA(c)) + return 1; + if (ISCTL(c)) + return 1; + + return 0; +} + +/* +** TTY input/output functions. +*/ + +static void tty_flush(void) +{ + ssize_t res; + + if (!ScreenCount) + return; + + if (!el_no_echo) { + res = write(el_outfd, Screen, ScreenCount); + if (res > 0) + ScreenCount = 0; + } +} + +static void tty_put(const char c) +{ + if (el_no_echo) + return; + + Screen[ScreenCount] = c; + if (++ScreenCount >= ScreenSize) { + ScreenSize += SCREEN_INC; + Screen = realloc(Screen, sizeof(char) * ScreenSize); + } +} + +static void tty_puts(const char *p) +{ + while (*p) + tty_put(*p++); +} + +static void tty_show(unsigned char c) +{ + if (c == DEL) { + tty_put('^'); + tty_put('?'); + } else if (ISCTL(c)) { + tty_put('^'); + tty_put(UNCTL(c)); + } else if (rl_meta_chars && ISMETA(c)) { + tty_put('M'); + tty_put('-'); + tty_put(UNMETA(c)); + } else { + tty_put(c); + } +} + +static void tty_string(char *p) +{ + while (*p) + tty_show(*p++); +} + +static void tty_push(int c) +{ + el_pushed = 1; + el_push_back = c; +} + +int rl_getc(void) +{ + int r; + char c; + + do { + r = read(el_infd, &c, 1); + } while (r == -1 && errno == EINTR); + + return r == 1 ? c : EOF; +} + +static int tty_get(void) +{ + tty_flush(); + + if (el_pushed) { + el_pushed = 0; + return el_push_back; + } + + if (*el_input) + return *el_input++; + + return rl_getc_function(); +} + +#define tty_back() tty_puts(backspace) + +static void tty_backn(int n) +{ + while (--n >= 0) + tty_back(); +} + +static void tty_info(void) +{ + rl_reset_terminal(NULL); +} + + +/* +** Glue routines to rl_ttyset() +*/ +void rl_prep_terminal(int meta_flag) +{ + rl_meta_chars = !meta_flag; + rl_ttyset(0); +} + +void rl_deprep_terminal(void) +{ + rl_ttyset(1); +} + +/* +** Print an array of words in columns. +*/ +void el_print_columns(int ac, char **av) +{ + char *p; + int i; + int j; + int k; + int len; + int skip; + int longest; + int cols; + int colwidth; + + /* Find longest name, determine column count from that. */ + for (longest = 0, i = 0; i < ac; i++) { + if ((j = strlen((char *)av[i])) > longest) + longest = j; + } + colwidth = longest + 3; + if (colwidth > tty_cols) colwidth = tty_cols; + cols = tty_cols / colwidth; + + tty_puts(NEWLINE); + for (skip = ac / cols + 1, i = 0; i < skip; i++) { + for (j = i; j < ac; j += skip) { + for (p = av[j], len = strlen((char *)p), k = len; --k >= 0; p++) + tty_put(*p); + + if (j + skip < ac) { + while (++len < colwidth) + tty_put(' '); + } + } + + tty_puts(NEWLINE); + } +} + +static void reposition(void) +{ + int i; + + tty_put('\r'); + tty_puts(rl_prompt); + for (i = 0; i < rl_point; i++) + tty_show(rl_line_buffer[i]); +} + +static void left(el_status_t Change) +{ + if (rl_point) { + tty_back(); + if (ISMETA(rl_line_buffer[rl_point - 1])) { + if (rl_meta_chars) { + tty_back(); + tty_back(); + } + } else if (ISCTL(rl_line_buffer[rl_point - 1])) { + tty_back(); + } + } + + if (Change == CSmove) + rl_point--; +} + +static void right(el_status_t Change) +{ + tty_show(rl_line_buffer[rl_point]); + + if (Change == CSmove) + rl_point++; +} + +el_status_t el_ring_bell(void) +{ + tty_put('\07'); + tty_flush(); + + return CSstay; +} + +static el_status_t do_macro(int c) +{ + char name[4]; + + name[0] = '_'; + name[1] = c; + name[2] = '_'; + name[3] = '\0'; + + if ((el_input = (char *)getenv((char *)name)) == NULL) { + el_input = NILSTR; + return el_ring_bell(); + } + + return CSstay; +} + +/* Skip forward to start of next word. If @move is set we also move the cursor. */ +static el_status_t do_forward(el_status_t move) +{ + int i; + char *p; + + i = 0; + do { + p = &rl_line_buffer[rl_point]; + + /* Skip leading whitespace, like FSF Readline */ + for ( ; rl_point < rl_end && (p[0] == ' ' || !is_alpha_num(p[0])); rl_point++, p++) { + if (move == CSmove) + right(CSstay); + } + + /* Skip to end of word, if inside a word. */ + for (; rl_point < rl_end && is_alpha_num(p[0]); rl_point++, p++) { + if (move == CSmove) + right(CSstay); + } + + /* Skip to next word, or skip leading white space if outside a word. */ + for ( ; rl_point < rl_end && (p[0] == ' ' || !is_alpha_num(p[0])); rl_point++, p++) { + if (move == CSmove) + right(CSstay); + } + + if (rl_point == rl_end) + break; + } while (++i < Repeat); + + return CSstay; +} + +static el_status_t do_case(el_case_t type) +{ + int i; + int end; + int count; + char *p; + + do_forward(CSstay); + if (old_point != rl_point) { + if ((count = rl_point - old_point) < 0) + count = -count; + + rl_point = old_point; + if ((end = rl_point + count) > rl_end) + end = rl_end; + + for (i = rl_point, p = &rl_line_buffer[i]; rl_point < end; p++) { + if ((type == TOupper) || (type == TOcapitalize && rl_point == i)) { + if (islower(*p)) + *p = toupper(*p); + } else if (isupper(*p)) { + *p = tolower(*p); + } + right(CSmove); + } + } + + return CSstay; +} + +static el_status_t case_down_word(void) +{ + return do_case(TOlower); +} + +static el_status_t case_up_word(void) +{ + return do_case(TOupper); +} + +static el_status_t case_cap_word(void) +{ + return do_case(TOcapitalize); +} + +static void ceol(void) +{ + int extras = 0; + int i; + char *p; + + while (rl_point < 0) { + tty_put(' '); + rl_point++; + extras++; + } + + for (i = rl_point, p = &rl_line_buffer[i]; i <= rl_end; i++, p++) { + tty_put(' '); + if (ISMETA(*p)) { + if (rl_meta_chars) { + tty_put(' '); + tty_put(' '); + extras += 2; + } + } else if (ISCTL(*p)) { + tty_put(' '); + extras++; + } + } + + for (i += extras; i > rl_point; i--) + tty_back(); +} + +static void clear_line(void) +{ + rl_point = -(int)strlen(rl_prompt); + tty_put('\r'); + ceol(); + rl_point = 0; + rl_end = 0; + rl_line_buffer[0] = '\0'; +} + +static el_status_t insert_string(const char *p) +{ + size_t len; + int i; + char *line; + char *q; + + len = strlen(p); + if (rl_end + len >= Length) { + line = malloc(sizeof(char) * (Length + len + MEM_INC)); + if (!line) + return CSstay; + + if (Length) { + memcpy(line, rl_line_buffer, Length); + free(rl_line_buffer); + } + + rl_line_buffer = line; + Length += len + MEM_INC; + } + + for (q = &rl_line_buffer[rl_point], i = rl_end - rl_point; --i >= 0; ) + q[len + i] = q[i]; + + memcpy(&rl_line_buffer[rl_point], p, len); + rl_end += len; + rl_line_buffer[rl_end] = '\0'; + tty_string(&rl_line_buffer[rl_point]); + rl_point += len; + + return rl_point == rl_end ? CSstay : CSmove; +} + +int rl_insert_text(const char *text) +{ + int mark = rl_point; + + insert_string(text); + ceol(); + + return rl_point - mark; +} + +static el_status_t redisplay(int cls) +{ + if (cls && rl_point == 0 && rl_end == 0) + tty_puts(CLEAR); + else + tty_puts("\r\e[K"); + + tty_puts(rl_prompt); + tty_string(rl_line_buffer); + + return CSmove; +} + +static el_status_t refresh(void) +{ + return redisplay(1); +} + +int rl_refresh_line(int ignore1 __attribute__((unused)), int ignore2 __attribute__((unused))) +{ + redisplay(0); + return 0; +} + +static el_status_t toggle_meta_mode(void) +{ + rl_meta_chars = ! rl_meta_chars; + return redisplay(0); +} + + +const char *el_next_hist(void) +{ + return H.Pos >= H.Size - 1 ? NULL : H.Lines[++H.Pos]; +} + +const char *el_prev_hist(void) +{ + return H.Pos == 0 ? NULL : H.Lines[--H.Pos]; +} + +static el_status_t do_insert_hist(const char *p) +{ + if (p == NULL) + return el_ring_bell(); + + clear_line(); + + rl_point = 0; + reposition(); + rl_end = 0; + + return insert_string(p); +} + +static el_status_t do_hist(const char *(*move)(void)) +{ + const char *p; + int i = 0; + + do { + if ((p = move()) == NULL) + return el_ring_bell(); + } while (++i < Repeat); + + return do_insert_hist(p); +} + +static el_status_t h_next(void) +{ + if (el_no_hist) + return CSstay; + + return do_hist(el_next_hist); +} + +static el_status_t h_prev(void) +{ + if (el_no_hist) + return CSstay; + + return do_hist(el_prev_hist); +} + +static el_status_t h_first(void) +{ + return do_insert_hist(H.Lines[H.Pos = 0]); +} + +static el_status_t h_last(void) +{ + return do_insert_hist(H.Lines[H.Pos = H.Size - 1]); +} + +/* +** Return zero if pat appears as a substring in text. +*/ +static int substrcmp(const char *text, const char *pat, size_t len) +{ + char c; + + if ((c = *pat) == '\0') + return *text == '\0'; + + for ( ; *text; text++) { + if (*text == c && strncmp(text, pat, len) == 0) + return 0; + } + + return 1; +} + +static const char *search_hist(const char *search, const char *(*move)(void)) +{ + int len; + int pos; + int (*match)(const char *s1, const char *s2, size_t n); + const char *pat; + + /* Save or get remembered search pattern. */ + if (search && *search) { + if (old_search) + free(old_search); + old_search = strdup(search); + } else { + if (old_search == NULL || *old_search == '\0') + return NULL; + search = old_search; + } + + /* Set up pattern-finder. */ + if (*search == '^') { + match = strncmp; + pat = search + 1; + } else { + match = substrcmp; + pat = search; + } + len = strlen(pat); + + pos = H.Pos; /* Save H.Pos */ + while (move()) { + if (match(H.Lines[H.Pos], pat, len) == 0) + return H.Lines[H.Pos]; + } + H.Pos = pos; /* Restore H.Pos */ + + return NULL; +} + +static el_status_t h_search_end(const char *p) +{ + rl_prompt = old_prompt; + Searching = 0; + + if (el_intr_pending > 0) { + el_intr_pending = 0; + clear_line(); + return redisplay(0); + } + + p = search_hist(p, search_move); + if (p == NULL) { + el_ring_bell(); + clear_line(); + return redisplay(0); + } + + return do_insert_hist(p); +} + +static el_status_t h_search(void) +{ + if (Searching) + return el_ring_bell(); + Searching = 1; + + clear_line(); + old_prompt = rl_prompt; + rl_prompt = "Search: "; + tty_puts(rl_prompt); + + search_move = Repeat == NO_ARG ? el_prev_hist : el_next_hist; + if (line_handler) { + editinput(0); + return CSstay; + } + + return h_search_end(editinput(1)); +} + +static el_status_t fd_char(void) +{ + int i = 0; + + do { + if (rl_point >= rl_end) + break; + right(CSmove); + } while (++i < Repeat); + return CSstay; +} + +static void save_yank(int begin, int i) +{ + if (Yanked) { + free(Yanked); + Yanked = NULL; + } + + if (i < 1) + return; + + Yanked = malloc(sizeof(char) * (i + 1)); + if (Yanked) { + memcpy(Yanked, &rl_line_buffer[begin], i); + Yanked[i] = '\0'; + } +} + +static el_status_t delete_string(int count) +{ + int i; + char *p; + + if (count <= 0 || rl_end == rl_point) + return el_ring_bell(); + + if (count == 1 && rl_point == rl_end - 1) { + /* Optimize common case of delete at end of line. */ + rl_end--; + p = &rl_line_buffer[rl_point]; + i = 1; + tty_put(' '); + if (ISCTL(*p)) { + i = 2; + tty_put(' '); + } else if (rl_meta_chars && ISMETA(*p)) { + i = 3; + tty_put(' '); + tty_put(' '); + } + tty_backn(i); + *p = '\0'; + return CSmove; + } + + if (rl_point + count > rl_end && (count = rl_end - rl_point) <= 0) + return CSstay; + + if (count > 1) + save_yank(rl_point, count); + + for (p = &rl_line_buffer[rl_point], i = rl_end - (rl_point + count) + 1; --i >= 0; p++) + p[0] = p[count]; + ceol(); + rl_end -= count; + tty_string(&rl_line_buffer[rl_point]); + + return CSmove; +} + +static el_status_t bk_char(void) +{ + int i = 0; + + do { + if (rl_point == 0) + break; + left(CSmove); + } while (++i < Repeat); + + return CSstay; +} + +static el_status_t bk_del_char(void) +{ + int i = 0; + + do { + if (rl_point == 0) + break; + left(CSmove); + } while (++i < Repeat); + + return delete_string(i); +} + +static el_status_t kill_line(void) +{ + int i; + + if (Repeat != NO_ARG) { + if (Repeat < rl_point) { + i = rl_point; + rl_point = Repeat; + reposition(); + delete_string(i - rl_point); + } else if (Repeat > rl_point) { + right(CSmove); + delete_string(Repeat - rl_point - 1); + } + + return CSmove; + } + + save_yank(rl_point, rl_end - rl_point); + rl_line_buffer[rl_point] = '\0'; + ceol(); + rl_end = rl_point; + + return CSstay; +} + +static el_status_t insert_char(int c) +{ + el_status_t s; + char buff[2]; + char *p; + char *q; + int i; + + if (Repeat == NO_ARG || Repeat < 2) { + buff[0] = c; + buff[1] = '\0'; + + return insert_string(buff); + } + + p = malloc(sizeof(char) * (Repeat + 1)); + if (!p) + return CSstay; + + for (i = Repeat, q = p; --i >= 0; ) + *q++ = c; + *q = '\0'; + Repeat = 0; + s = insert_string(p); + free(p); + + return s; +} + +static el_status_t beg_line(void) +{ + if (rl_point) { + rl_point = 0; + return CSmove; + } + + return CSstay; +} + +static el_status_t end_line(void) +{ + if (rl_point != rl_end) { + rl_point = rl_end; + return CSmove; + } + + return CSstay; +} + +static el_status_t del_char(void) +{ + return delete_string(Repeat == NO_ARG ? CSeof : Repeat); +} + +el_status_t el_del_char(void) +{ + return del_char(); +} + +static el_status_t fd_word(void) +{ + return do_forward(CSmove); +} + +static el_status_t bk_word(void) +{ + int i; + char *p; + + i = 0; + do { + for (p = &rl_line_buffer[rl_point]; p > rl_line_buffer && !is_alpha_num(p[-1]); p--) + left(CSmove); + + for (; p > rl_line_buffer && !isblank(p[-1]) && is_alpha_num(p[-1]); p--) + left(CSmove); + + if (rl_point == 0) + break; + } while (++i < Repeat); + + return CSstay; +} + +static el_status_t meta(void) +{ + int c; + el_keymap_t *kp; + + if ((c = tty_get()) == EOF) + return CSeof; + +#ifdef CONFIG_ANSI_ARROWS + /* Also include VT-100 arrows. */ + if (c == '[' || c == 'O') { + switch (tty_get()) { + case EOF: return CSeof; + case '1': + { + char seq[4] = { 0 }; + + for (c = 0; c < 3; c++) + seq[c] = tty_get(); + + if (!strncmp(seq, ";5C", 3)) + return fd_word(); /* Ctrl+Right */ + if (!strncmp(seq, ";5D", 3)) + return bk_word(); /* Ctrl+Left */ + + break; + } + case '2': tty_get(); return CSstay; /* Insert */ + case '3': tty_get(); return del_char(); /* Delete */ + case '5': tty_get(); return CSstay; /* PgUp */ + case '6': tty_get(); return CSstay; /* PgDn */ + case 'A': return h_prev(); /* Up */ + case 'B': return h_next(); /* Down */ + case 'C': return fd_char(); /* Left */ + case 'D': return bk_char(); /* Right */ + case 'F': return end_line(); /* End */ + case 'H': return beg_line(); /* Home */ + default: /* Fall through */ + break; + } + + return el_ring_bell(); + } +#endif /* CONFIG_ANSI_ARROWS */ + + if (isdigit(c)) { + for (Repeat = c - '0'; (c = tty_get()) != EOF && isdigit(c); ) + Repeat = Repeat * 10 + c - '0'; + tty_push(c); + + return CSstay; + } + + if (isupper(c)) + return do_macro(c); + + for (kp = MetaMap; kp->Function; kp++) { + if (kp->Key == c) + return kp->Function(); + } + + return el_ring_bell(); +} + +static el_status_t emacs(int c) +{ + el_status_t s; + el_keymap_t *kp; + + /* Save point before interpreting input character 'c'. */ + old_point = rl_point; + + if (rl_meta_chars && ISMETA(c)) { + tty_push(UNMETA(c)); + return meta(); + } + + for (kp = Map; kp->Function; kp++) { + if (kp->Key == c) + break; + } + + if (kp->Function) { + s = kp->Function(); + if (s == CSdispatch) /* If Function is inhibited. */ + s = insert_char(c); + } else { + s = insert_char(c); + } + + if (!el_pushed) { + /* No pushback means no repeat count; hacky, but true. */ + Repeat = NO_ARG; + } + + return s; +} + +static el_status_t tty_special(int c) +{ +#ifdef CONFIG_SIGINT + if (c == rl_intr) { + el_intr_pending = SIGINT; + return CSsignal; + } +#endif + if (c == rl_quit) { + el_intr_pending = SIGQUIT; + return CSeof; + } +#ifdef CONFIG_SIGSTOP + if (c == rl_susp) { + el_intr_pending = SIGTSTP; + return CSsignal; + } +#endif + + if (rl_meta_chars && ISMETA(c)) + return CSdispatch; + + if (c == rl_erase || c == DEL) + return bk_del_char(); + + if (c == rl_kill) { + if (rl_point != 0) { + rl_point = 0; + reposition(); + } + Repeat = NO_ARG; + + return kill_line(); + } + +#ifdef CONFIG_EOF + if (c == rl_eof && rl_point == 0 && rl_end == 0) + return CSeof; +#endif + + return CSdispatch; +} + +static char *editinput(int complete) +{ + int c; + + do { + c = tty_get(); + if (c == EOF) + break; + + switch (tty_special(c)) { + case CSdone: + return rl_line_buffer; + + case CSeof: + return NULL; + + case CSsignal: + return (char *)""; + + case CSmove: + reposition(); + break; + + case CSdispatch: + switch (emacs(c)) { + case CSdone: + return rl_line_buffer; + + case CSeof: + return NULL; + + case CSsignal: + return (char *)""; + + case CSmove: + reposition(); + break; + + case CSdispatch: + case CSstay: + break; + } + break; + + case CSstay: + break; + } + } while (complete); + + return NULL; +} + +static void hist_alloc(void) +{ + if (!H.Lines) + H.Lines = calloc(el_hist_size, sizeof(char *)); +} + +static void hist_add(const char *p) +{ + int i; + char *s; + +#ifdef CONFIG_UNIQUE_HISTORY + if (H.Size && strcmp(p, H.Lines[H.Size - 1]) == 0) + return; +#endif + + s = strdup(p); + if (s == NULL) + return; + + if (H.Size < el_hist_size) { + H.Lines[H.Size++] = s; + } else { + free(H.Lines[0]); + for (i = 0; i < el_hist_size - 1; i++) + H.Lines[i] = H.Lines[i + 1]; + H.Lines[i] = s; + } + H.Pos = H.Size - 1; +} + +static char *read_redirected(void) +{ + int size = MEM_INC; + char *p; + char *line; + char *end; + + p = line = malloc(sizeof(char) * size); + if (!p) + return NULL; + + end = p + size; + while (1) { + if (p == end) { + int oldpos = end - line; + + size += MEM_INC; + p = line = realloc(line, sizeof(char) * size); + if (!p) + return NULL; + end = p + size; + + p += oldpos; /* Continue where we left off... */ + } + + if (read(el_infd, p, 1) <= 0) { + /* Ignore "incomplete" lines at EOF, just like we do for a tty. */ + free(line); + return NULL; + } + + if (*p == '\n') + break; + p++; + } + *p = '\0'; + + return line; +} + +/* For compatibility with FSF readline. */ +void rl_reset_terminal(const char *terminal_name) +{ +#ifdef CONFIG_USE_TERMCAP + char buf[1024]; + char *bp; +#endif +#ifdef TIOCGWINSZ + struct winsize W; +#endif + + if (terminal_name) { + el_term = terminal_name; + } else if ((el_term = getenv("TERM")) == NULL) { + el_term = "dumb"; + } + + /* Initialize to faulty values to trigger fallback if nothing else works. */ + tty_cols = tty_rows = -1; + +#ifdef CONFIG_USE_TERMCAP + bp = buf; + if (-1 != tgetent(buf, el_term)) { + if ((backspace = tgetstr("le", &bp)) != NULL) + backspace = strdup(backspace); + tty_cols = tgetnum("co"); + tty_rows = tgetnum("li"); + } + /* Make sure to check width & rows and fallback to TIOCGWINSZ if available. */ +#endif + + if (tty_cols <= 0 || tty_rows <= 0) { +#ifdef TIOCGWINSZ + if (ioctl(el_outfd, TIOCGWINSZ, &W) >= 0 && W.ws_col > 0 && W.ws_row > 0) { + tty_cols = (int)W.ws_col; + tty_rows = (int)W.ws_row; + return; + } +#endif + tty_cols = SCREEN_COLS; + tty_rows = SCREEN_ROWS; + } +} + +void rl_initialize(void) +{ + if (!rl_prompt) + rl_prompt = "? "; + + hist_alloc(); + + /* Setup I/O descriptors */ + if (!rl_instream) el_infd = EL_STDIN; + else el_infd = fileno(rl_instream); + if (el_infd < 0) el_infd = EL_STDIN; + if (!rl_outstream) el_outfd = EL_STDOUT; + else el_outfd = fileno(rl_outstream); + if (el_outfd < 0) el_outfd = EL_STDOUT; +} + +void rl_uninitialize(void) +{ + int i; + + /* Uninitialize the history */ + if (H.Lines) { + for (i = 0; i < el_hist_size; i++) { + if (H.Lines[i]) + free(H.Lines[i]); + H.Lines[i] = NULL; + } + free(H.Lines); + H.Lines = NULL; + } + H.Size = 0; + H.Pos = 0; + + if (old_search) + free(old_search); + old_search = NULL; + + /* Uninitialize the line buffer */ + if (rl_line_buffer) + free(rl_line_buffer); + rl_line_buffer = NULL; + Length = 0; +} + +static const char *rl_saved_prompt = NULL; +void rl_save_prompt(void) +{ + rl_saved_prompt = rl_prompt; +} + +void rl_restore_prompt(void) +{ + if (rl_saved_prompt) + rl_prompt = rl_saved_prompt; +} + +void rl_set_prompt(const char *prompt) +{ + rl_prompt = prompt; +} + +void rl_clear_message(void) +{ + /* Nothing to do atm. */ +} + +void rl_forced_update_display() +{ + redisplay(0); + tty_flush(); +} + +static int el_prep(const char *prompt) +{ + rl_initialize(); + + if (!rl_line_buffer) { + Length = MEM_INC; + rl_line_buffer = malloc(sizeof(char) * Length); + if (!rl_line_buffer) + return -1; + } + + tty_info(); + rl_prep_term_function(!rl_meta_chars); + hist_add(NILSTR); + ScreenSize = SCREEN_INC; + Screen = malloc(sizeof(char) * ScreenSize); + if (!Screen) + return -1; + + rl_prompt = prompt ? prompt : NILSTR; + if (el_no_echo) { + int old = el_no_echo; + + el_no_echo = 0; + tty_puts(rl_prompt); + tty_flush(); + el_no_echo = old; + } else { + tty_puts(rl_prompt); + } + + Repeat = NO_ARG; + old_point = rl_point = rl_mark = rl_end = 0; + rl_line_buffer[0] = '\0'; + el_intr_pending = -1; + + return 0; +} + +static char *el_deprep(char *line) +{ + if (line) { + line = strdup(line); + tty_puts(NEWLINE); + tty_flush(); + } + + rl_deprep_term_function(); + if (Screen) { + free(Screen); + Screen = NULL; + } + + free(H.Lines[--H.Size]); + H.Lines[H.Size] = NULL; + + /* Add to history, unless no-echo or no-history mode ... */ + if (!el_no_echo && !el_no_hist) { + if (line != NULL && *line != '\0') + hist_add(line); + } + + if (el_intr_pending > 0) { + int signo = el_intr_pending; + + el_intr_pending = 0; + kill(getpid(), signo); + } + + return line; +} + +void rl_callback_handler_install(const char *prompt, rl_vcpfunc_t *lhandler) +{ + if (!lhandler) + return; + line_handler = lhandler; + + /* + * Any error from el_prep() is handled by the lhandler callbck as + * soon as the user calls rl_callback_read_char(). + */ + el_prep(prompt); + tty_flush(); +} + +/* + * Reads one character at a time, when a complete line has been received + * the lhandler from rl_callback_handler_install() is called with the + * line as argument. + * + * If the callback returns the terminal is prepped for reading a new + * line. + * + * If any error occurs, either in the _install() phase, or while reading + * one character, this function restores the terminal and calls lhandler + * with a NULL argument. + */ +void rl_callback_read_char(void) +{ + char *line; + + if (!line_handler) { + errno = EINVAL; + return; + } + + /* + * Check if rl_callback_handler_install() failed + * This is the only point where we can tell user + */ + if (!Screen || !rl_line_buffer) { + errno = ENOMEM; + line_handler(el_deprep(NULL)); + return; + } + + line = editinput(0); + if (line) { + char *l; + + if (Searching) { + h_search_end(line); + tty_flush(); + return; + } + + l = el_deprep(line); + line_handler(l); + + if (el_prep(rl_prompt)) + line_handler(NULL); + } + tty_flush(); +} + +void rl_callback_handler_remove(void) +{ + if (!line_handler) + return; + + el_deprep(NULL); + line_handler = NULL; +} + +char *readline(const char *prompt) +{ + /* Unless called by the user already. */ + rl_initialize(); + + if (!isatty(el_infd)) { + tty_flush(); + + return read_redirected(); + } + + if (el_prep(prompt)) + return NULL; + + return el_deprep(editinput(1)); +} + +/* + * Even though readline() itself adds history automatically, the user + * can also add lines. This is for compatibility with GNU Readline. + */ +void add_history(const char *p) +{ + if (p == NULL || *p == '\0') + return; + + hist_add(p); +} + + +int read_history(const char *filename) +{ + FILE *fp; + char buf[SCREEN_INC]; + + hist_alloc(); + fp = fopen(filename, "r"); + if (fp) { + H.Size = 0; + while (H.Size < el_hist_size) { + if (!fgets(buf, SCREEN_INC, fp)) + break; + + buf[strlen(buf) - 1] = 0; /* Remove '\n' */ + add_history(buf); + } + + return fclose(fp); + } + + return errno; +} + +int write_history(const char *filename) +{ + FILE *fp; + + hist_alloc(); + fp = fopen(filename, "w"); + if (fp) { + int i = 0; + + while (i < H.Size) + fprintf(fp, "%s\n", H.Lines[i++]); + + return fclose(fp); + } + + return errno; +} + + +/* +** Move back to the beginning of the current word and return an +** allocated copy of it. +*/ +char *el_find_word(void) +{ + char *p, *q; + char *word; + size_t len; + + p = &rl_line_buffer[rl_point]; + while (p > rl_line_buffer) { + p--; + if (p > rl_line_buffer && p[-1] == '\\') { + p--; + } else { + if (strchr(SEPS, (char) *p) != NULL) { + p++; + break; + } + } + } + + len = rl_point - (p - rl_line_buffer) + 1; + word = malloc(sizeof(char) * len); + if (!word) + return NULL; + + q = word; + while (p < &rl_line_buffer[rl_point]) { + if (*p == '\\') { + if (++p == &rl_line_buffer[rl_point]) + break; + } + *q++ = *p++; + } + *q = '\0'; + + return word; +} + +static el_status_t c_possible(void) +{ + char **av; + char *word; + int ac; + + word = el_find_word(); + ac = rl_list_possib(word, &av); + if (word) + free(word); + if (ac) { + el_print_columns(ac, av); + while (--ac >= 0) + free(av[ac]); + free(av); + + return CSmove; + } + + return el_ring_bell(); +} + +static el_status_t c_complete(void) +{ + char *p, *q; + char *word, *string; + size_t len; + int unique; + el_status_t s = CSdone; + + if (rl_inhibit_complete) + return CSdispatch; + + word = el_find_word(); + p = rl_complete(word, &unique); + if (word) + free(word); + if (p) { + len = strlen(p); + word = p; + + string = q = malloc(sizeof(char) * (2 * len + 1)); + if (!string) { + free(word); + return CSstay; + } + + while (*p) { + if ((*p < ' ' || strchr(SEPS, *p) != NULL) + && (!unique || p[1] != 0)) { + *q++ = '\\'; + } + *q++ = *p++; + } + *q = '\0'; + free(word); + + if (len > 0) { + s = insert_string(string); +#ifdef CONFIG_TERMINAL_BELL + if (!unique) + el_ring_bell(); +#endif + } + free(string); + + if (len > 0) + return s; + } + + return c_possible(); +} + +static el_status_t accept_line(void) +{ + rl_line_buffer[rl_end] = '\0'; + return CSdone; +} + +#ifdef SYSTEM_IS_WIN32 +static el_status_t end_of_input(void) +{ + rl_line_buffer[rl_end] = '\0'; + return CSeof; +} +#endif + +static el_status_t transpose(void) +{ + char c; + + if (rl_point) { + if (rl_point == rl_end) + left(CSmove); + c = rl_line_buffer[rl_point - 1]; + left(CSstay); + rl_line_buffer[rl_point - 1] = rl_line_buffer[rl_point]; + tty_show(rl_line_buffer[rl_point - 1]); + rl_line_buffer[rl_point++] = c; + tty_show(c); + } + + return CSstay; +} + +static el_status_t quote(void) +{ + int c; + + return (c = tty_get()) == EOF ? CSeof : insert_char((int)c); +} + +static el_status_t mk_set(void) +{ + rl_mark = rl_point; + return CSstay; +} + +static el_status_t exchange(void) +{ + int c; + + if ((c = tty_get()) != CTL('X')) + return c == EOF ? CSeof : el_ring_bell(); + + if ((c = rl_mark) <= rl_end) { + rl_mark = rl_point; + rl_point = c; + return CSmove; + } + + return CSstay; +} + +static el_status_t yank(void) +{ + if (Yanked && *Yanked) + return insert_string(Yanked); + + return CSstay; +} + +static el_status_t copy_region(void) +{ + if (rl_mark > rl_end) + return el_ring_bell(); + + if (rl_point > rl_mark) + save_yank(rl_mark, rl_point - rl_mark); + else + save_yank(rl_point, rl_mark - rl_point); + + return CSstay; +} + +static el_status_t move_to_char(void) +{ + int i, c; + char *p; + + if ((c = tty_get()) == EOF) + return CSeof; + + for (i = rl_point + 1, p = &rl_line_buffer[i]; i < rl_end; i++, p++) { + if (*p == c) { + rl_point = i; + return CSmove; + } + } + + return CSstay; +} + +static el_status_t fd_kill_word(void) +{ + int i; + + do_forward(CSstay); + if (old_point != rl_point) { + i = rl_point - old_point - 1; + rl_point = old_point; + return delete_string(i); + } + + return CSstay; +} + +static el_status_t bk_kill_word(void) +{ + bk_word(); + if (old_point != rl_point) + return delete_string(old_point - rl_point); + + return CSstay; +} + +static int argify(char *line, char ***avp) +{ + char *c; + char **p; + char **arg; + int ac; + int i; + + i = MEM_INC; + *avp = p = malloc(sizeof(char *) * i); + if (!p) + return 0; + + for (c = line; isspace(*c); c++) + continue; + + if (*c == '\n' || *c == '\0') + return 0; + + for (ac = 0, p[ac++] = c; *c && *c != '\n'; ) { + if (!isspace(*c)) { + c++; + continue; + } + + *c++ = '\0'; + if (*c && *c != '\n') { + if (ac + 1 == i) { + arg = malloc(sizeof(char *) * (i + MEM_INC)); + if (!arg) { + p[ac] = NULL; + return ac; + } + + memcpy(arg, p, i * sizeof(char *)); + i += MEM_INC; + free(p); + *avp = p = arg; + } + p[ac++] = c; + } + } + + *c = '\0'; + p[ac] = NULL; + + return ac; +} + +static el_status_t last_argument(void) +{ + char **av = NULL; + char *p; + el_status_t s; + int ac; + + if (H.Size == 1 || (p = (char *)H.Lines[H.Size - 2]) == NULL) + return el_ring_bell(); + + p = strdup(p); + if (!p) + return CSstay; + + ac = argify(p, &av); + if (Repeat != NO_ARG) + s = Repeat < ac ? insert_string(av[Repeat]) : el_ring_bell(); + else + s = ac ? insert_string(av[ac - 1]) : CSstay; + + if (av) + free(av); + free(p); + + return s; +} + +static el_keymap_t Map[64] = { + { CTL('@'), mk_set }, + { CTL('A'), beg_line }, + { CTL('B'), bk_char }, + { CTL('D'), del_char }, + { CTL('E'), end_line }, + { CTL('F'), fd_char }, + { CTL('G'), el_ring_bell }, + { CTL('H'), bk_del_char }, + { CTL('I'), c_complete }, + { CTL('J'), accept_line }, + { CTL('K'), kill_line }, + { CTL('L'), refresh }, + { CTL('M'), accept_line }, + { CTL('N'), h_next }, + { CTL('O'), el_ring_bell }, + { CTL('P'), h_prev }, + { CTL('Q'), el_ring_bell }, + { CTL('R'), h_search }, + { CTL('S'), el_ring_bell }, + { CTL('T'), transpose }, + { CTL('U'), el_ring_bell }, + { CTL('V'), quote }, + { CTL('W'), bk_kill_word }, + { CTL('X'), exchange }, + { CTL('Y'), yank }, +#ifdef SYSTEM_IS_WIN32 + { CTL('Z'), end_of_input }, +#else + { CTL('Z'), el_ring_bell }, +#endif + { CTL('['), meta }, + { CTL(']'), move_to_char }, + { CTL('^'), el_ring_bell }, + { CTL('_'), el_ring_bell }, + { 0, NULL } +}; + +static el_keymap_t MetaMap[64]= { + { CTL('H'), bk_kill_word }, + { DEL, bk_kill_word }, + { ' ', mk_set }, + { '.', last_argument }, + { '<', h_first }, + { '>', h_last }, + { '?', c_possible }, + { 'b', bk_word }, + { 'c', case_cap_word }, + { 'd', fd_kill_word }, + { 'f', fd_word }, + { 'l', case_down_word }, + { 'm', toggle_meta_mode }, + { 'u', case_up_word }, + { 'y', yank }, + { 'w', copy_region }, + { 0, NULL } +}; + +static size_t find_key_in_map(int key, el_keymap_t map[], size_t mapsz) +{ + size_t i; + + for (i = 0; map[i].Function && i < mapsz; i++) { + if (map[i].Key == key) + return i; + } + + if (i < mapsz) + return i; + + return mapsz; +} + +static el_status_t el_bind_key_in_map(int key, el_keymap_func_t function, el_keymap_t map[], size_t mapsz) +{ + size_t creat, pos = find_key_in_map(key, map, mapsz); + + /* Must check that pos is not the next to last array position, + * otherwise we will write out-of-bounds to terminate the list. */ + if (pos + 1 >= mapsz) { + errno = ENOMEM; + return CSeof; + } + + /* Add at end, create new? */ + creat = map[pos].Function == NULL; + + /* A new key so have to add it to end */ + map[pos].Key = key; + map[pos].Function = function; + + /* Terminate list */ + if (creat) { + map[pos + 1].Key = 0; + map[pos + 1].Function = NULL; + } + + return CSdone; +} + +el_status_t el_bind_key(int key, el_keymap_func_t function) +{ + return el_bind_key_in_map(key, function, Map, NELEMS(Map)); +} + +el_status_t el_bind_key_in_metamap(int key, el_keymap_func_t function) +{ + return el_bind_key_in_map(key, function, MetaMap, NELEMS(MetaMap)); +} + +rl_getc_func_t *rl_set_getc_func(rl_getc_func_t *func) +{ + rl_getc_func_t *old = rl_getc_function; + rl_getc_function = func; + return old; +} + +/** + * Local Variables: + * c-file-style: "k&r" + * c-basic-offset: 4 + * End: + */ diff --git a/vendor/editline/src/editline.h b/vendor/editline/src/editline.h new file mode 100644 index 0000000..d11b6e6 --- /dev/null +++ b/vendor/editline/src/editline.h @@ -0,0 +1,101 @@ +/* Internal header file for editline library. + * + * Copyright (c) 1992, 1993 Simmule Turner and Rich Salz + * All rights reserved. + * + * This software is not subject to any license of the American Telephone + * and Telegraph Company or of the Regents of the University of California. + * + * Permission is granted to anyone to use this software for any purpose on + * any computer system, and to alter it and redistribute it freely, subject + * to the following restrictions: + * 1. The authors are not responsible for the consequences of use of this + * software, no matter how awful, even if they arise from flaws in it. + * 2. The origin of this software must not be misrepresented, either by + * explicit claim or by omission. Since few users ever read sources, + * credits must appear in the documentation. + * 3. Altered versions must be plainly marked as such, and must not be + * misrepresented as being the original software. Since few users + * ever read sources, credits must appear in the documentation. + * 4. This notice may not be removed or altered. + */ + +#ifndef EDITLINE_PRIVATE_H_ +#define EDITLINE_PRIVATE_H_ + +#include +#include +#ifdef HAVE_MALLOC_H +#include +#endif +#ifdef HAVE_STDLIB_H +#include +#endif +#ifdef HAVE_STRING_H +#include +#endif +#ifdef HAVE_DIRENT_H +#include +#endif +#ifdef HAVE_SIGNAL_H +#include +#endif +#ifdef SYS_UNIX +#include "unix.h" +#endif +#ifdef SYS_OS9 +#include "os9.h" +#endif +/* The following two are for TIOCGWINSZ */ +#ifdef HAVE_TERMIOS_H +# include +#endif +#ifdef GWINSZ_IN_SYS_IOCTL +# include +#endif + +#define MEM_INC 64 +#define SCREEN_INC 256 + +/* From The Practice of Programming, by Kernighan and Pike */ +#ifndef NELEMS +#define NELEMS(array) (sizeof(array) / sizeof(array[0])) +#endif + +/* +** Variables and routines internal to this package. +*/ +extern int rl_eof; +extern int rl_erase; +extern int rl_intr; +extern int rl_kill; +extern int rl_quit; +#ifdef CONFIG_SIGSTOP +extern int rl_susp; +#endif +void rl_ttyset(int Reset); +void rl_add_slash(char *path, char *p); +char *rl_complete(char *token, int *match); +int rl_list_possib(char *token, char ***av); + +#ifndef HAVE_STDLIB_H +extern char *getenv(const char *name); +extern char *malloc(size_t size); +extern char *realloc(void *ptr, size_t size); +extern char *memcpy(void *dest, const void *src, size_t n); +extern char *strcat(char *dest, const char *src); +extern char *strchr(const char *s, int c); +extern char *strrchr(const char *s, int c); +extern char *strcpy(char *dest, const char *src); +extern char *strdup(const char *s); +extern int strcmp(const char *s1, const char *s2); +extern int strlen(const char *s); +extern int strncmp(const char *s1, const char *s2, size_t n); +#endif/* !HAVE_STDLIB_H */ + +#ifndef HAVE_STRDUP +extern char *strdup(const char *s); +#endif + +#include "../include/editline.h" +#endif /* EDITLINE_PRIVATE_H_ */ diff --git a/vendor/editline/src/os9.h b/vendor/editline/src/os9.h new file mode 100644 index 0000000..78b52c4 --- /dev/null +++ b/vendor/editline/src/os9.h @@ -0,0 +1,26 @@ +/* Editline system header file for OS-9 (on 68k). + * + * Copyright (c) 1992, 1993 Simmule Turner and Rich Salz + * All rights reserved. + * + * This software is not subject to any license of the American Telephone + * and Telegraph Company or of the Regents of the University of California. + * + * Permission is granted to anyone to use this software for any purpose on + * any computer system, and to alter it and redistribute it freely, subject + * to the following restrictions: + * 1. The authors are not responsible for the consequences of use of this + * software, no matter how awful, even if they arise from flaws in it. + * 2. The origin of this software must not be misrepresented, either by + * explicit claim or by omission. Since few users ever read sources, + * credits must appear in the documentation. + * 3. Altered versions must be plainly marked as such, and must not be + * misrepresented as being the original software. Since few users + * ever read sources, credits must appear in the documentation. + * 4. This notice may not be removed or altered. + */ + +#define CRLF "\r\l" + +#include +typedef struct direct DIRENTRY; diff --git a/vendor/editline/src/project_editline-build/examples/cli b/vendor/editline/src/project_editline-build/examples/cli new file mode 100755 index 0000000000000000000000000000000000000000..f3e56500318a5ac0de24f280e97d72efead8c1b6 GIT binary patch literal 124568 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®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 literal 0 HcmV?d00001 diff --git a/vendor/editline/src/project_editline-build/examples/fileman b/vendor/editline/src/project_editline-build/examples/fileman new file mode 100755 index 0000000000000000000000000000000000000000..b962e3074904c1ccf9c5c019d1b256f1a29f83a6 GIT binary patch literal 138288 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

c%mA>ZqP{c#BNT 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 QUpQ^_Z#JS~+DfYb2I1C4&Hw-a literal 0 HcmV?d00001 diff --git a/vendor/editline/src/project_editline-stamp/project_editline-autogen b/vendor/editline/src/project_editline-stamp/project_editline-autogen new file mode 100644 index 0000000..e69de29 diff --git a/vendor/editline/src/project_editline-stamp/project_editline-build b/vendor/editline/src/project_editline-stamp/project_editline-build new file mode 100644 index 0000000..e69de29 diff --git a/vendor/editline/src/project_editline-stamp/project_editline-configure b/vendor/editline/src/project_editline-stamp/project_editline-configure new file mode 100644 index 0000000..e69de29 diff --git a/vendor/editline/src/project_editline-stamp/project_editline-done b/vendor/editline/src/project_editline-stamp/project_editline-done new file mode 100644 index 0000000..e69de29 diff --git a/vendor/editline/src/project_editline-stamp/project_editline-download b/vendor/editline/src/project_editline-stamp/project_editline-download new file mode 100644 index 0000000..e69de29 diff --git a/vendor/editline/src/project_editline-stamp/project_editline-install b/vendor/editline/src/project_editline-stamp/project_editline-install new file mode 100644 index 0000000..e69de29 diff --git a/vendor/editline/src/project_editline-stamp/project_editline-mkdir b/vendor/editline/src/project_editline-stamp/project_editline-mkdir new file mode 100644 index 0000000..e69de29 diff --git a/vendor/editline/src/project_editline-stamp/project_editline-patch b/vendor/editline/src/project_editline-stamp/project_editline-patch new file mode 100644 index 0000000..e69de29 diff --git a/vendor/editline/src/project_editline-stamp/project_editline-update b/vendor/editline/src/project_editline-stamp/project_editline-update new file mode 100644 index 0000000..e69de29 diff --git a/vendor/editline/src/sysos9.c b/vendor/editline/src/sysos9.c new file mode 100644 index 0000000..334ef17 --- /dev/null +++ b/vendor/editline/src/sysos9.c @@ -0,0 +1,64 @@ +/* OS-9 (on 68k) system-dependant routines for editline library. + * + * Copyright (c) 1992, 1993 Simmule Turner and Rich Salz + * All rights reserved. + * + * This software is not subject to any license of the American Telephone + * and Telegraph Company or of the Regents of the University of California. + * + * Permission is granted to anyone to use this software for any purpose on + * any computer system, and to alter it and redistribute it freely, subject + * to the following restrictions: + * 1. The authors are not responsible for the consequences of use of this + * software, no matter how awful, even if they arise from flaws in it. + * 2. The origin of this software must not be misrepresented, either by + * explicit claim or by omission. Since few users ever read sources, + * credits must appear in the documentation. + * 3. Altered versions must be plainly marked as such, and must not be + * misrepresented as being the original software. Since few users + * ever read sources, credits must appear in the documentation. + * 4. This notice may not be removed or altered. + */ +#include "editline.h" +#include +#include + +void rl_ttyset(int Reset) +{ + static struct sgbuf old; + struct sgbuf new; + + if (Reset == 0) { + _gs_opt(0, &old); + _gs_opt(0, &new); + new.sg_backsp = 0; new.sg_delete = 0; new.sg_echo = 0; + new.sg_alf = 0; new.sg_nulls = 0; new.sg_pause = 0; + new.sg_page = 0; new.sg_bspch = 0; new.sg_dlnch = 0; + new.sg_eorch = 0; new.sg_eofch = 0; new.sg_rlnch = 0; + new.sg_dulnch = 0; new.sg_psch = 0; new.sg_kbich = 0; + new.sg_kbach = 0; new.sg_bsech = 0; new.sg_bellch = 0; + new.sg_xon = 0; new.sg_xoff = 0; new.sg_tabcr = 0; + new.sg_tabsiz = 0; + _ss_opt(0, &new); + rl_erase = old.sg_bspch; + rl_kill = old.sg_dlnch; + rl_eof = old.sg_eofch; + rl_intr = old.sg_kbich; + rl_quit = -1; + } + else { + _ss_opt(0, &old); + } +} + +void rl_add_slash(char *path, char *p) +{ + strcat(p, access(path, S_IREAD | S_IFDIR) ? " " : "/"); +} + +/** + * Local Variables: + * c-file-style: "k&r" + * c-basic-offset: 4 + * End: + */ diff --git a/vendor/editline/src/sysunix.c b/vendor/editline/src/sysunix.c new file mode 100644 index 0000000..4699496 --- /dev/null +++ b/vendor/editline/src/sysunix.c @@ -0,0 +1,251 @@ +/* Unix system-dependant routines for editline library. + * + * Copyright (c) 1992, 1993 Simmule Turner and Rich Salz + * All rights reserved. + * + * This software is not subject to any license of the American Telephone + * and Telegraph Company or of the Regents of the University of California. + * + * Permission is granted to anyone to use this software for any purpose on + * any computer system, and to alter it and redistribute it freely, subject + * to the following restrictions: + * 1. The authors are not responsible for the consequences of use of this + * software, no matter how awful, even if they arise from flaws in it. + * 2. The origin of this software must not be misrepresented, either by + * explicit claim or by omission. Since few users ever read sources, + * credits must appear in the documentation. + * 3. Altered versions must be plainly marked as such, and must not be + * misrepresented as being the original software. Since few users + * ever read sources, credits must appear in the documentation. + * 4. This notice may not be removed or altered. + */ + +#include +#include "editline.h" + +#ifndef HAVE_TCGETATTR +/* Wrapper for ioctl syscalls to restart on signal */ +static int ioctl_wrap(int fd, int req, void *arg) +{ + int result, retries = 3; + + while (-1 == (result = ioctl(fd, req, arg)) && retries > 0) { + retries--; + + if (EINTR == errno) + continue; + + break; + } + + return result; +} +#endif + +/* Prefer termios over the others since it is likely the most portable. */ +#if defined(HAVE_TCGETATTR) +#include + +/* Wrapper for tcgetattr */ +static int getattr(int fd, struct termios *arg) +{ + int result, retries = 3; + + while (-1 == (result = tcgetattr(fd, arg)) && retries > 0) { + retries--; + + if (EINTR == errno) + continue; + + break; + } + + return result; +} + +/* Wrapper for tcgetattr */ +static int setattr(int fd, int opt, const struct termios *arg) +{ + int result, retries = 3; + + while (-1 == (result = tcsetattr(fd, opt, arg)) && retries > 0) { + retries--; + + if (EINTR == errno) + continue; + + break; + } + + return result; +} + +void rl_ttyset(int Reset) +{ + static struct termios old; + struct termios new; + + if (!Reset) { + if (-1 == getattr(0, &old)) + perror("Failed tcgetattr()"); + + rl_erase = old.c_cc[VERASE]; + rl_kill = old.c_cc[VKILL]; + rl_eof = old.c_cc[VEOF]; + rl_intr = old.c_cc[VINTR]; + rl_quit = old.c_cc[VQUIT]; +#ifdef CONFIG_SIGSTOP + rl_susp = old.c_cc[VSUSP]; +#endif + + new = old; + new.c_lflag &= ~(ECHO | ICANON | ISIG); + new.c_iflag &= ~INPCK; + if (rl_meta_chars) + new.c_iflag |= ISTRIP; + else + new.c_iflag &= ~ISTRIP; + new.c_cc[VMIN] = 1; + new.c_cc[VTIME] = 0; + if (-1 == setattr(0, TCSADRAIN, &new)) + perror("Failed tcsetattr(TCSADRAIN)"); + } else { + if (-1 == setattr(0, TCSADRAIN, &old)) + perror("Failed tcsetattr(TCSADRAIN)"); + } +} + +#elif defined(HAVE_TERMIO_H) +#include + +void rl_ttyset(int Reset) +{ + static struct termio old; + struct termio new; + + if (!Reset) { + if (-1 == ioctl_wrap(0, TCGETA, &old)) + perror("Failed ioctl(TCGETA)"); + + rl_erase = old.c_cc[VERASE]; + rl_kill = old.c_cc[VKILL]; + rl_eof = old.c_cc[VEOF]; + rl_intr = old.c_cc[VINTR]; + rl_quit = old.c_cc[VQUIT]; +#ifdef CONFIG_SIGSTOP + rl_susp = old.c_cc[VSUSP]; +#endif + + new = old; + new.c_lflag &= ~(ECHO | ICANON | ISIG); + new.c_iflag &= ~INPCK; + if (rl_meta_chars) + new.c_iflag |= ISTRIP; + else + new.c_iflag &= ~ISTRIP; + + new.c_cc[VMIN] = 1; + new.c_cc[VTIME] = 0; + if (-1 == ioctl_wrap(0, TCSETAW, &new)) + perror("Failed ioctl(TCSETAW)"); + } else { + if (-1 == ioctl_wrap(0, TCSETAW, &old)) + perror("Failed ioctl(TCSETAW)"); + } +} + +#elif defined(HAVE_SGTTY_H) +#include + +void rl_ttyset(int Reset) +{ + static struct sgttyb old_sgttyb; + static struct tchars old_tchars; + struct sgttyb new_sgttyb; + struct tchars new_tchars; +#ifdef CONFIG_SIGSTOP + struct ltchars old_ltchars; +#endif + + if (!Reset) { + if (-1 == ioctl_wrap(0, TIOCGETP, &old_sgttyb)) + perror("Failed TIOCGETP"); + + rl_erase = old_sgttyb.sg_erase; + rl_kill = old_sgttyb.sg_kill; + + if (-1 == ioctl_wrap(0, TIOCGETC, &old_tchars)) + perror("Failed TIOCGETC"); + + rl_eof = old_tchars.t_eofc; + rl_intr = old_tchars.t_intrc; + rl_quit = old_tchars.t_quitc; + +#ifdef CONFIG_SIGSTOP + if (-1 == ioctl_wrap(0, TIOCGLTC, &old_ltchars)) + perror("Failed TIOCGLTC"); + + rl_susp = old_ltchars.t_suspc; +#endif + + new_sgttyb = old_sgttyb; + new_sgttyb.sg_flags &= ~ECHO; + new_sgttyb.sg_flags |= RAW; + if (rl_meta_chars) + new_sgttyb.sg_flags &= ~PASS8; + else + new_sgttyb.sg_flags |= PASS8; + + if (-1 == ioctl_wrap(0, TIOCSETP, &new_sgttyb)) + perror("Failed TIOCSETP"); + + new_tchars = old_tchars; + new_tchars.t_intrc = -1; + new_tchars.t_quitc = -1; + if (-1 == ioctl_wrap(0, TIOCSETC, &new_tchars)) + perror("Failed TIOCSETC"); + } else { + if (-1 == ioctl_wrap(0, TIOCSETP, &old_sgttyb)) + perror("Failed TIOCSETP"); + + if (-1 == ioctl_wrap(0, TIOCSETC, &old_tchars)) + perror("Failed TIOCSETC"); + } +} +#else /* Neither HAVE_SGTTY_H, HAVE_TERMIO_H or HAVE_TCGETATTR */ +#error Unsupported platform, missing tcgetattr(), termio.h and sgtty.h +#endif /* Neither HAVE_SGTTY_H, HAVE_TERMIO_H or HAVE_TCGETATTR */ + +#ifndef HAVE_STRDUP +/* Return an allocated copy of a string. */ +char *strdup(const char *s) +{ + size_t len; + char *ptr; + + if (!s) + return NULL; + + len = strlen(s) + 1; + ptr = malloc(len); + if (ptr) + return memcpy(ptr, s, len); + + return NULL; +} +#endif + +void rl_add_slash(char *path, char *p) +{ + struct stat Sb; + + if (stat(path, &Sb) >= 0) + strcat(p, S_ISDIR(Sb.st_mode) ? "/" : " "); +} + +/** + * Local Variables: + * c-file-style: "k&r" + * c-basic-offset: 4 + * End: + */ diff --git a/vendor/editline/src/unix.h b/vendor/editline/src/unix.h new file mode 100644 index 0000000..8ab8f10 --- /dev/null +++ b/vendor/editline/src/unix.h @@ -0,0 +1,36 @@ +/* Editline system header file for Unix. + * + * Copyright (c) 1992, 1993 Simmule Turner and Rich Salz + * All rights reserved. + * + * This software is not subject to any license of the American Telephone + * and Telegraph Company or of the Regents of the University of California. + * + * Permission is granted to anyone to use this software for any purpose on + * any computer system, and to alter it and redistribute it freely, subject + * to the following restrictions: + * 1. The authors are not responsible for the consequences of use of this + * software, no matter how awful, even if they arise from flaws in it. + * 2. The origin of this software must not be misrepresented, either by + * explicit claim or by omission. Since few users ever read sources, + * credits must appear in the documentation. + * 3. Altered versions must be plainly marked as such, and must not be + * misrepresented as being the original software. Since few users + * ever read sources, credits must appear in the documentation. + * 4. This notice may not be removed or altered. + */ + +#ifndef EDITLINE_UNIX_H_ +#define EDITLINE_UNIX_H_ + +#define CRLF "\r\n" +#define FORWARD STATIC + +#include +#include +#include + +#include +typedef struct dirent DIRENTRY; + +#endif /* EDITLINE_UNIX_H_ */ diff --git a/vendor/editline/tmp/project_editline-cfgcmd.txt b/vendor/editline/tmp/project_editline-cfgcmd.txt new file mode 100644 index 0000000..576f707 --- /dev/null +++ b/vendor/editline/tmp/project_editline-cfgcmd.txt @@ -0,0 +1 @@ +cmd='/home/pbattu/freelance/gitlab/peerplays/libraries/fc/vendor/editline/configure;--prefix=/home/pbattu/freelance/gitlab/peerplays/libraries/fc/vendor/editline' diff --git a/vendor/editline/tmp/project_editline-cfgcmd.txt.in b/vendor/editline/tmp/project_editline-cfgcmd.txt.in new file mode 100644 index 0000000..b3f09ef --- /dev/null +++ b/vendor/editline/tmp/project_editline-cfgcmd.txt.in @@ -0,0 +1 @@ +cmd='@cmd@'