Compare commits
18 Commits
8c4e867760
...
master
| Author | SHA1 | Date | |
|---|---|---|---|
|
f9a102456f
|
|||
|
63dde38bff
|
|||
|
8844026f26
|
|||
|
c64457d4cd
|
|||
|
97cbd7e80c
|
|||
|
2518b53e5a
|
|||
|
8265f075b1
|
|||
|
2f348c79b7
|
|||
|
18d16c1edb
|
|||
|
94a77a10d8
|
|||
|
d39c35e59e
|
|||
|
d47bcfb203
|
|||
|
ff08195973
|
|||
|
f7912a8ce7
|
|||
|
42d2bef93a
|
|||
|
065cd3b3e1
|
|||
|
65797ee4f1
|
|||
|
279d010e0f
|
27
.clang-format
Normal file
27
.clang-format
Normal file
@@ -0,0 +1,27 @@
|
||||
# clang-format is fairly limited, and these rules are approximate:
|
||||
# - array initializers can get terribly mangled with clang-format 12.0,
|
||||
# - sometimes it still aligns with space characters,
|
||||
# - struct name NL { NL ... NL } NL name; is unachievable.
|
||||
BasedOnStyle: GNU
|
||||
ColumnLimit: 80
|
||||
IndentWidth: 4
|
||||
TabWidth: 4
|
||||
UseTab: ForContinuationAndIndentation
|
||||
BreakBeforeBraces: Allman
|
||||
SpaceAfterCStyleCast: true
|
||||
AlignAfterOpenBracket: DontAlign
|
||||
AlignOperands: DontAlign
|
||||
AlignConsecutiveMacros: Consecutive
|
||||
AllowAllArgumentsOnNextLine: false
|
||||
AllowAllParametersOfDeclarationOnNextLine: false
|
||||
IndentGotoLabels: false
|
||||
|
||||
# IncludeCategories has some potential, but it may also break the build.
|
||||
# Note that the documentation says the value should be "Never".
|
||||
SortIncludes: false
|
||||
|
||||
# This is a compromise, it generally works out aesthetically better.
|
||||
BinPackArguments: false
|
||||
|
||||
# Unfortunately, this can't be told to align to column 40 or so.
|
||||
SpacesBeforeTrailingComments: 2
|
||||
2
.gitignore
vendored
2
.gitignore
vendored
@@ -7,3 +7,5 @@
|
||||
/termo.files
|
||||
/termo.creator*
|
||||
/termo.includes
|
||||
/termo.cflags
|
||||
/termo.cxxflags
|
||||
|
||||
@@ -1,21 +1,13 @@
|
||||
project (termo C)
|
||||
cmake_minimum_required (VERSION 2.8.5)
|
||||
cmake_minimum_required (VERSION 3.0...3.27)
|
||||
project (termo VERSION 0.1.0 LANGUAGES C)
|
||||
|
||||
if ("${CMAKE_C_COMPILER_ID}" MATCHES "GNU" OR CMAKE_COMPILER_IS_GNUCC)
|
||||
set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -std=c99")
|
||||
set (CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -Wall -Wextra")
|
||||
endif ("${CMAKE_C_COMPILER_ID}" MATCHES "GNU" OR CMAKE_COMPILER_IS_GNUCC)
|
||||
endif ()
|
||||
|
||||
# Version
|
||||
set (project_VERSION_MAJOR 0)
|
||||
set (project_VERSION_MINOR 1)
|
||||
set (project_VERSION_PATCH 0)
|
||||
|
||||
set (project_VERSION ${project_VERSION_MAJOR})
|
||||
set (project_VERSION ${project_VERSION}.${project_VERSION_MINOR})
|
||||
set (project_VERSION ${project_VERSION}.${project_VERSION_PATCH})
|
||||
|
||||
set (project_API_VERSION ${project_VERSION_MAJOR})
|
||||
set (project_API_VERSION ${PROJECT_VERSION_MAJOR})
|
||||
|
||||
# Names
|
||||
set (project_LIB_NAME "termo-${project_API_VERSION}")
|
||||
@@ -55,7 +47,7 @@ if (Ncursesw_FOUND)
|
||||
elseif (CURSES_FOUND)
|
||||
include_directories (${CURSES_INCLUDE_DIR})
|
||||
set (curses_libraries ${CURSES_LIBRARY})
|
||||
endif (Ncursesw_FOUND)
|
||||
endif ()
|
||||
|
||||
if (unibilium_FOUND)
|
||||
include_directories (${unibilium_INCLUDE_DIRS})
|
||||
@@ -64,23 +56,31 @@ if (unibilium_FOUND)
|
||||
elseif (curses_libraries)
|
||||
include_directories (${Ncursesw_INCLUDE_DIRS})
|
||||
set (lib_libraries ${curses_libraries})
|
||||
else (CURSES_FOUND)
|
||||
else ()
|
||||
message (SEND_ERROR "Unibilium not found, Curses not found")
|
||||
endif (unibilium_FOUND)
|
||||
endif ()
|
||||
|
||||
# -liconv may or may not be a part of libc
|
||||
find_path (iconv_INCLUDE_DIRS iconv.h)
|
||||
include_directories (${iconv_INCLUDE_DIRS})
|
||||
find_library (iconv_LIBRARIES iconv)
|
||||
if (iconv_LIBRARIES)
|
||||
list (APPEND lib_libraries ${iconv_LIBRARIES})
|
||||
endif ()
|
||||
|
||||
# Create the library targets
|
||||
add_library (termo SHARED ${lib_sources} ${lib_headers})
|
||||
target_link_libraries (termo ${lib_libraries})
|
||||
set_target_properties (termo PROPERTIES
|
||||
OUTPUT_NAME ${project_LIB_NAME}
|
||||
VERSION ${project_VERSION}
|
||||
VERSION ${PROJECT_VERSION}
|
||||
SOVERSION ${project_API_VERSION})
|
||||
|
||||
add_library (termo-static STATIC ${lib_sources} ${lib_headers})
|
||||
target_link_libraries (termo-static ${lib_libraries})
|
||||
set_target_properties (termo-static PROPERTIES
|
||||
OUTPUT_NAME ${project_LIB_NAME}
|
||||
VERSION ${project_VERSION}
|
||||
VERSION ${PROJECT_VERSION}
|
||||
SOVERSION ${project_API_VERSION})
|
||||
|
||||
# A fix for: relocation R_X86_64_32 against `a local symbol' can not be
|
||||
@@ -89,7 +89,7 @@ set_target_properties (termo-static PROPERTIES
|
||||
# This should enable linking the static library into a shared one.
|
||||
if (CMAKE_SYSTEM_PROCESSOR STREQUAL "x86_64")
|
||||
set_target_properties (termo-static PROPERTIES COMPILE_FLAGS "-fPIC")
|
||||
endif (CMAKE_SYSTEM_PROCESSOR STREQUAL "x86_64")
|
||||
endif ()
|
||||
|
||||
# Demos
|
||||
add_executable (demo-async EXCLUDE_FROM_ALL demo-async.c)
|
||||
@@ -108,7 +108,7 @@ if (glib_FOUND)
|
||||
target_link_libraries (demo-glib
|
||||
termo-static ${lib_libraries} ${glib_LIBRARIES})
|
||||
list (APPEND demos demo-glib)
|
||||
endif (glib_FOUND)
|
||||
endif ()
|
||||
|
||||
add_custom_target (demos DEPENDS ${demos})
|
||||
|
||||
@@ -127,7 +127,7 @@ configure_file (config-version.cmake.in
|
||||
|
||||
install (FILES ${PROJECT_BINARY_DIR}/${PROJECT_NAME}-config.cmake
|
||||
${PROJECT_BINARY_DIR}/${PROJECT_NAME}-config-version.cmake
|
||||
DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME}-${project_VERSION})
|
||||
DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME}-${PROJECT_VERSION})
|
||||
|
||||
# Do some unit tests
|
||||
option (BUILD_TESTING "Build tests" OFF)
|
||||
@@ -158,17 +158,17 @@ if (BUILD_TESTING)
|
||||
add_executable (test-${name} tests/${name}.c ${test_common_sources})
|
||||
target_link_libraries (test-${name} termo-static ${lib_libraries})
|
||||
add_test (NAME ${PROJECT_NAME}.${name} COMMAND test-${name})
|
||||
endforeach (name)
|
||||
endif (BUILD_TESTING)
|
||||
endforeach ()
|
||||
endif ()
|
||||
|
||||
# pkg-config
|
||||
file (WRITE "${PROJECT_BINARY_DIR}/${PROJECT_NAME}.pc"
|
||||
"Name: ${PROJECT_NAME}\n"
|
||||
"Description: Terminal key input library\n"
|
||||
"Version: ${project_VERSION}\n"
|
||||
"Libs: -L${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_LIBDIR} -l${project_LIB_NAME}\n"
|
||||
"Version: ${PROJECT_VERSION}\n"
|
||||
"Libs: -L${CMAKE_INSTALL_FULL_LIBDIR} -l${project_LIB_NAME}\n"
|
||||
"Libs.private: ${lib_libraries}\n"
|
||||
"Cflags: -I${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_INCLUDEDIR}/${project_INCLUDE_NAME}\n")
|
||||
"Cflags: -I${CMAKE_INSTALL_FULL_INCLUDEDIR}/${project_INCLUDE_NAME}\n")
|
||||
install (FILES "${PROJECT_BINARY_DIR}/${PROJECT_NAME}.pc"
|
||||
DESTINATION "${CMAKE_INSTALL_LIBDIR}/pkgconfig")
|
||||
|
||||
@@ -177,15 +177,12 @@ set (CPACK_PACKAGE_DESCRIPTION_SUMMARY "Terminal key input library")
|
||||
set (CPACK_PACKAGE_VENDOR "Premysl Eric Janouch")
|
||||
set (CPACK_PACKAGE_CONTACT "Přemysl Eric Janouch <p@janouch.name>")
|
||||
set (CPACK_RESOURCE_FILE_LICENSE "${CMAKE_CURRENT_SOURCE_DIR}/LICENSE")
|
||||
set (CPACK_PACKAGE_VERSION_MAJOR ${project_VERSION_MAJOR})
|
||||
set (CPACK_PACKAGE_VERSION_MINOR ${project_VERSION_MINOR})
|
||||
set (CPACK_PACKAGE_VERSION_PATCH ${project_VERSION_PATCH})
|
||||
set (CPACK_GENERATOR "TGZ;ZIP")
|
||||
set (CPACK_PACKAGE_FILE_NAME
|
||||
"${CMAKE_PROJECT_NAME}-${project_VERSION}-${CMAKE_SYSTEM_NAME}-${CMAKE_SYSTEM_PROCESSOR}")
|
||||
set (CPACK_PACKAGE_INSTALL_DIRECTORY "${CMAKE_PROJECT_NAME}-${project_VERSION}")
|
||||
"${CMAKE_PROJECT_NAME}-${PROJECT_VERSION}-${CMAKE_SYSTEM_NAME}-${CMAKE_SYSTEM_PROCESSOR}")
|
||||
set (CPACK_PACKAGE_INSTALL_DIRECTORY "${CMAKE_PROJECT_NAME}-${PROJECT_VERSION}")
|
||||
set (CPACK_SOURCE_GENERATOR "TGZ;ZIP")
|
||||
set (CPACK_SOURCE_IGNORE_FILES "/\\\\.git;/build;/CMakeLists.txt.user")
|
||||
set (CPACK_SOURCE_PACKAGE_FILE_NAME "${CMAKE_PROJECT_NAME}-${project_VERSION}")
|
||||
set (CPACK_SOURCE_PACKAGE_FILE_NAME "${CMAKE_PROJECT_NAME}-${PROJECT_VERSION}")
|
||||
|
||||
include (CPack)
|
||||
|
||||
2
LICENSE
2
LICENSE
@@ -1,5 +1,5 @@
|
||||
Copyright (c) 2007-2014 Paul Evans <leonerd@leonerd.org.uk>
|
||||
Copyright (c) 2014-2020 Přemysl Eric Janouch <p@janouch.name>
|
||||
Copyright (c) 2014-2021 Přemysl Eric Janouch <p@janouch.name>
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
|
||||
15
README.adoc
15
README.adoc
@@ -2,20 +2,21 @@ termo
|
||||
=====
|
||||
|
||||
'termo' is a library providing an alternative to ncurses' handling of terminal
|
||||
input. ncurses does a really terrible job at that, mainly wrt. mouse support
|
||||
which seems to be utterly broken. If you can drag things in a terminal
|
||||
application, such as in VIM, I can assure you it's not using ncurses for that.
|
||||
(At least not with ncurses older than 6.0.)
|
||||
input. ncurses does a terrible job at that, mainly wrt. mouse support which was
|
||||
even completely broken for a few years, making it impossible to drag things
|
||||
around in applications. While that one bit has been fixed, it continues to lack
|
||||
support for rxvt-unicode's 1015 mode and it's generally incapable of relaying
|
||||
certain key combinations.
|
||||
|
||||
Since terminal I/O is really complicated and full of special cases, this project
|
||||
doesn't aspire to also replace the output part of ncurses, but is rather
|
||||
complementary to it. In the end it makes use of its terminfo library.
|
||||
|
||||
The API isn't stable yet. Tell me what needs to be done so I can fix it first.
|
||||
The API can be considered stable. This project is in maintenance mode.
|
||||
|
||||
Building and Installing
|
||||
-----------------------
|
||||
Build dependencies: cmake >= 2.8.5, pkg-config +
|
||||
Build dependencies: cmake >= 3.0, pkg-config +
|
||||
Optional dependencies: Unibilium (alternative for curses), GLib (for the demos)
|
||||
|
||||
$ git clone https://git.janouch.name/p/termo.git
|
||||
@@ -55,7 +56,7 @@ CMake-based projects and simply import the target. No package maintainer action
|
||||
is needed for you to enjoy the benefits of proper terminal input.
|
||||
|
||||
The rest is just me going silly over formatting and various unimportant stuff.
|
||||
Oh, and I've deleted the manpages. It needs more Doxygen. :) TBD
|
||||
Oh, and I've deleted the manpages.
|
||||
|
||||
Contributing and Support
|
||||
------------------------
|
||||
|
||||
@@ -7,7 +7,7 @@ pkg_check_modules (Ncursesw QUIET ncursesw)
|
||||
set (required_vars Ncursesw_LIBRARIES)
|
||||
if (NOT Ncursesw_FOUND)
|
||||
find_library (Ncursesw_LIBRARIES NAMES ncursesw)
|
||||
find_path (Ncursesw_INCLUDE_DIRS ncurses.h)
|
||||
find_path (Ncursesw_INCLUDE_DIRS ncurses.h PATH_SUFFIXES ncurses)
|
||||
list (APPEND required_vars Ncursesw_INCLUDE_DIRS)
|
||||
endif (NOT Ncursesw_FOUND)
|
||||
|
||||
|
||||
2
demo.c
2
demo.c
@@ -10,7 +10,7 @@
|
||||
#include "termo.h"
|
||||
|
||||
int
|
||||
main(int argc, char *argv[])
|
||||
main (int argc, char *argv[])
|
||||
{
|
||||
TERMO_CHECK_VERSION;
|
||||
setlocale (LC_CTYPE, "");
|
||||
|
||||
28
driver-ti.c
28
driver-ti.c
@@ -246,33 +246,32 @@ load_terminfo (termo_ti_t *ti, const char *term)
|
||||
set_mouse_string = tigetstr ("XM");
|
||||
#endif
|
||||
if (!set_mouse_string || set_mouse_string == (char *) -1)
|
||||
ti->set_mouse_string = strdup ("\E[?1000%?%p1%{1}%=%th%el%;");
|
||||
ti->set_mouse_string = strdup ("\x1b[?1000%?%p1%{1}%=%th%el%;");
|
||||
else
|
||||
ti->set_mouse_string = strdup (set_mouse_string);
|
||||
|
||||
bool have_mouse = false;
|
||||
if (!mouse_report_string && strstr (term, "xterm"))
|
||||
mouse_report_string = "\x1b[M";
|
||||
// We handle 1006 and 1015 unconditionally in driver-csi.c,
|
||||
// and don't want to have the handling diverted by recent terminfo;
|
||||
// let's hardcode the ancient 1000 sequence locally
|
||||
if (mouse_report_string)
|
||||
{
|
||||
have_mouse = true;
|
||||
|
||||
trie_node_t *node = malloc (sizeof *node);
|
||||
if (!node)
|
||||
goto fail;
|
||||
|
||||
node->type = TYPE_MOUSE;
|
||||
if (!insert_seq (ti, mouse_report_string, node))
|
||||
if (!insert_seq (ti, "\x1b[M", node))
|
||||
{
|
||||
free (node);
|
||||
goto fail;
|
||||
}
|
||||
}
|
||||
|
||||
if (!have_mouse)
|
||||
if (!mouse_report_string && strstr (term, "xterm") != term)
|
||||
ti->tk->guessed_mouse_proto = TERMO_MOUSE_PROTO_NONE;
|
||||
else if (strstr (term, "rxvt") == term)
|
||||
// urxvt generally doesn't understand the SGR protocol.
|
||||
// urxvt didn't understand the SGR protocol until version 9.25,
|
||||
// it's safest to keep using 1015.
|
||||
ti->tk->guessed_mouse_proto = TERMO_MOUSE_PROTO_RXVT;
|
||||
else
|
||||
// SGR (1006) is the superior protocol. If it's not supported by the
|
||||
@@ -363,6 +362,8 @@ mouse_reset (termo_ti_t *ti)
|
||||
&& write_string (ti->tk, "\x1b[?1002l")
|
||||
&& write_string (ti->tk, "\x1b[?1003l")
|
||||
|
||||
&& write_string (ti->tk, "\x1b[?1004l")
|
||||
|
||||
&& write_string (ti->tk, "\x1b[?1005l")
|
||||
&& write_string (ti->tk, "\x1b[?1006l")
|
||||
&& write_string (ti->tk, "\x1b[?1015l");
|
||||
@@ -410,8 +411,12 @@ start_driver (termo_t *tk, void *info)
|
||||
// Disable everything mouse-related first
|
||||
if (!mouse_reset (ti))
|
||||
return false;
|
||||
|
||||
// Enable focus tracking opportunistically and automatically,
|
||||
// as it basically doesn't have any negative consequences at all
|
||||
return mouse_set_proto (ti, tk->mouse_proto, true)
|
||||
&& mouse_set_tracking_mode (ti, tk->mouse_tracking, true);
|
||||
&& mouse_set_tracking_mode (ti, tk->mouse_tracking, true)
|
||||
&& write_string (ti->tk, "\x1b[?1004h");
|
||||
}
|
||||
|
||||
static int
|
||||
@@ -425,7 +430,8 @@ stop_driver (termo_t *tk, void *info)
|
||||
if (tk->mouse_proto == TERMO_MOUSE_PROTO_NONE)
|
||||
return true;
|
||||
return mouse_set_proto (ti, tk->mouse_proto, false)
|
||||
&& mouse_set_tracking_mode (ti, tk->mouse_tracking, false);
|
||||
&& mouse_set_tracking_mode (ti, tk->mouse_tracking, false)
|
||||
&& write_string (ti->tk, "\x1b[?1004l");
|
||||
}
|
||||
|
||||
static void *
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
#ifndef TERMO_CONFIG_H
|
||||
#define TERMO_CONFIG_H
|
||||
|
||||
#define TERMO_VERSION_MAJOR @project_VERSION_MAJOR@
|
||||
#define TERMO_VERSION_MINOR @project_VERSION_MINOR@
|
||||
#define TERMO_VERSION_MAJOR @PROJECT_VERSION_MAJOR@
|
||||
#define TERMO_VERSION_MINOR @PROJECT_VERSION_MINOR@
|
||||
|
||||
#endif // ! TERMO_CONFIG_H
|
||||
|
||||
|
||||
12
termo.c
12
termo.c
@@ -906,21 +906,20 @@ peekkey (termo_t *tk, termo_key_t *key, int flags, size_t *nbytep)
|
||||
|
||||
switch (ret)
|
||||
{
|
||||
size_t halfsize;
|
||||
case TERMO_RES_KEY:
|
||||
{
|
||||
#ifdef DEBUG
|
||||
print_key (tk, key); fprintf (stderr, "\n");
|
||||
#endif
|
||||
// Slide the data down to stop it running away
|
||||
size_t halfsize = tk->buffsize / 2;
|
||||
halfsize = tk->buffsize / 2;
|
||||
if (tk->buffstart > halfsize)
|
||||
{
|
||||
memcpy (tk->buffer, tk->buffer + halfsize, halfsize);
|
||||
tk->buffstart -= halfsize;
|
||||
}
|
||||
|
||||
// Fallthrough
|
||||
}
|
||||
// Fall-through
|
||||
case TERMO_RES_EOF:
|
||||
case TERMO_RES_ERROR:
|
||||
return ret;
|
||||
@@ -1696,9 +1695,9 @@ termo_strpkey_generic (termo_t *tk, const char *str, termo_key_t *key,
|
||||
|
||||
if (!str
|
||||
|| key->type != TERMO_TYPE_KEY
|
||||
|| key->code.codepoint < '@'
|
||||
|| key->code.codepoint < '@'
|
||||
|| key->code.codepoint > '_'
|
||||
|| key->modifiers != 0)
|
||||
|| key->modifiers != 0)
|
||||
return NULL;
|
||||
|
||||
if (key->code.codepoint >= 'A'
|
||||
@@ -1857,4 +1856,3 @@ termo_keycmp (termo_t *tk,
|
||||
}
|
||||
return key1.modifiers - key2.modifiers;
|
||||
}
|
||||
|
||||
|
||||
@@ -5,6 +5,9 @@
|
||||
int
|
||||
main (int argc, char *argv[])
|
||||
{
|
||||
(void) argc;
|
||||
(void) argv;
|
||||
|
||||
termo_t *tk;
|
||||
|
||||
plan_tests (6);
|
||||
|
||||
@@ -4,6 +4,9 @@
|
||||
int
|
||||
main (int argc, char *argv[])
|
||||
{
|
||||
(void) argc;
|
||||
(void) argv;
|
||||
|
||||
termo_t *tk;
|
||||
termo_key_t key;
|
||||
|
||||
|
||||
@@ -4,6 +4,9 @@
|
||||
int
|
||||
main (int argc, char *argv[])
|
||||
{
|
||||
(void) argc;
|
||||
(void) argv;
|
||||
|
||||
termo_t *tk;
|
||||
termo_key_t key;
|
||||
|
||||
|
||||
@@ -5,6 +5,9 @@
|
||||
int
|
||||
main (int argc, char *argv[])
|
||||
{
|
||||
(void) argc;
|
||||
(void) argv;
|
||||
|
||||
termo_t *tk;
|
||||
termo_key_t key;
|
||||
|
||||
|
||||
@@ -9,6 +9,9 @@
|
||||
int
|
||||
main (int argc, char *argv[])
|
||||
{
|
||||
(void) argc;
|
||||
(void) argv;
|
||||
|
||||
int fd[2];
|
||||
termo_t *tk;
|
||||
termo_key_t key;
|
||||
|
||||
@@ -2,8 +2,12 @@
|
||||
#include "../termo.h"
|
||||
#include "taplib.h"
|
||||
|
||||
int main (int argc, char *argv[])
|
||||
int
|
||||
main (int argc, char *argv[])
|
||||
{
|
||||
(void) argc;
|
||||
(void) argv;
|
||||
|
||||
termo_t *tk;
|
||||
termo_key_t key;
|
||||
|
||||
|
||||
@@ -4,6 +4,9 @@
|
||||
int
|
||||
main (int argc, char *argv[])
|
||||
{
|
||||
(void) argc;
|
||||
(void) argv;
|
||||
|
||||
termo_t *tk;
|
||||
termo_sym_t sym;
|
||||
const char *end;
|
||||
|
||||
@@ -4,6 +4,9 @@
|
||||
int
|
||||
main (int argc, char *argv[])
|
||||
{
|
||||
(void) argc;
|
||||
(void) argv;
|
||||
|
||||
termo_t *tk;
|
||||
termo_key_t key;
|
||||
char buffer[16];
|
||||
|
||||
@@ -4,6 +4,9 @@
|
||||
int
|
||||
main (int argc, char *argv[])
|
||||
{
|
||||
(void) argc;
|
||||
(void) argv;
|
||||
|
||||
termo_t *tk;
|
||||
termo_key_t key;
|
||||
const char *endp;
|
||||
|
||||
@@ -4,6 +4,9 @@
|
||||
int
|
||||
main (int argc, char *argv[])
|
||||
{
|
||||
(void) argc;
|
||||
(void) argv;
|
||||
|
||||
termo_t *tk;
|
||||
termo_key_t key1, key2;
|
||||
|
||||
|
||||
@@ -4,6 +4,9 @@
|
||||
int
|
||||
main (int argc, char *argv[])
|
||||
{
|
||||
(void) argc;
|
||||
(void) argv;
|
||||
|
||||
termo_t *tk;
|
||||
termo_key_t key;
|
||||
const char *endp;
|
||||
|
||||
@@ -4,6 +4,9 @@
|
||||
int
|
||||
main (int argc, char *argv[])
|
||||
{
|
||||
(void) argc;
|
||||
(void) argv;
|
||||
|
||||
termo_t *tk;
|
||||
termo_key_t key;
|
||||
termo_mouse_event_t ev;
|
||||
|
||||
@@ -1,8 +1,12 @@
|
||||
#include "../termo.h"
|
||||
#include "taplib.h"
|
||||
|
||||
int main (int argc, char *argv[])
|
||||
int
|
||||
main (int argc, char *argv[])
|
||||
{
|
||||
(void) argc;
|
||||
(void) argv;
|
||||
|
||||
termo_t *tk;
|
||||
termo_key_t key;
|
||||
int line, col;
|
||||
|
||||
@@ -4,6 +4,9 @@
|
||||
int
|
||||
main (int argc, char *argv[])
|
||||
{
|
||||
(void) argc;
|
||||
(void) argv;
|
||||
|
||||
termo_t *tk;
|
||||
termo_key_t key;
|
||||
int initial, mode, value;
|
||||
|
||||
@@ -4,6 +4,9 @@
|
||||
int
|
||||
main (int argc, char *argv[])
|
||||
{
|
||||
(void) argc;
|
||||
(void) argv;
|
||||
|
||||
termo_t *tk;
|
||||
termo_key_t key;
|
||||
|
||||
|
||||
@@ -4,6 +4,9 @@
|
||||
int
|
||||
main (int argc, char *argv[])
|
||||
{
|
||||
(void) argc;
|
||||
(void) argv;
|
||||
|
||||
termo_t *tk;
|
||||
termo_key_t key;
|
||||
long args[16];
|
||||
|
||||
@@ -73,7 +73,7 @@ is_str (const char *got, const char *expect, char *name)
|
||||
}
|
||||
|
||||
int
|
||||
exit_status(void)
|
||||
exit_status (void)
|
||||
{
|
||||
return g_exit_status;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user