Come up with sillier names for the binaries

I'm not entirely sure, but it looks like some people might not like
jokes about the Holocaust.

On a more serious note, the project has become more serious over
the 7 or so years of its existence.
This commit is contained in:
Přemysl Eric Janouch 2021-08-06 16:12:15 +02:00
parent 1f64710e79
commit 50057d5149
Signed by: p
GPG Key ID: A0420B94F92B9493
33 changed files with 260 additions and 262 deletions

View File

@ -77,9 +77,9 @@ CHECK_C_SOURCE_RUNS ("#include <iconv.h>
int main () { return iconv_open (\"UTF-8//TRANSLIT\", \"ISO-8859-1\") int main () { return iconv_open (\"UTF-8//TRANSLIT\", \"ISO-8859-1\")
== (iconv_t) -1; }" ICONV_ACCEPTS_TRANSLIT) == (iconv_t) -1; }" ICONV_ACCEPTS_TRANSLIT)
# Dependencies for degesch # Dependencies for xC
pkg_check_modules (libffi REQUIRED libffi) pkg_check_modules (libffi REQUIRED libffi)
list (APPEND degesch_libraries ${libffi_LIBRARIES}) list (APPEND xC_libraries ${libffi_LIBRARIES})
include_directories (${libffi_INCLUDE_DIRS}) include_directories (${libffi_INCLUDE_DIRS})
link_directories (${libffi_LIBRARY_DIRS}) link_directories (${libffi_LIBRARY_DIRS})
@ -92,7 +92,7 @@ if (WITH_LUA)
message (FATAL_ERROR "Lua library not found") message (FATAL_ERROR "Lua library not found")
endif () endif ()
list (APPEND degesch_libraries ${lua_LIBRARIES}) list (APPEND xC_libraries ${lua_LIBRARIES})
include_directories (${lua_INCLUDE_DIRS}) include_directories (${lua_INCLUDE_DIRS})
link_directories (${lua_LIBRARY_DIRS}) link_directories (${lua_LIBRARY_DIRS})
endif () endif ()
@ -100,10 +100,10 @@ endif ()
find_package (Curses) find_package (Curses)
pkg_check_modules (ncursesw ncursesw) pkg_check_modules (ncursesw ncursesw)
if (ncursesw_FOUND) if (ncursesw_FOUND)
list (APPEND degesch_libraries ${ncursesw_LIBRARIES}) list (APPEND xC_libraries ${ncursesw_LIBRARIES})
include_directories (${ncursesw_INCLUDE_DIRS}) include_directories (${ncursesw_INCLUDE_DIRS})
elseif (CURSES_FOUND) elseif (CURSES_FOUND)
list (APPEND degesch_libraries ${CURSES_LIBRARY}) list (APPEND xC_libraries ${CURSES_LIBRARY})
include_directories (${CURSES_INCLUDE_DIR}) include_directories (${CURSES_INCLUDE_DIR})
else () else ()
message (SEND_ERROR "Curses not found") message (SEND_ERROR "Curses not found")
@ -115,13 +115,13 @@ elseif (WANT_READLINE)
# OpenBSD's default readline is too old # OpenBSD's default readline is too old
if ("${CMAKE_SYSTEM_NAME}" MATCHES "OpenBSD") if ("${CMAKE_SYSTEM_NAME}" MATCHES "OpenBSD")
include_directories (${OPENBSD_LOCALBASE}/include/ereadline) include_directories (${OPENBSD_LOCALBASE}/include/ereadline)
list (APPEND degesch_libraries ereadline) list (APPEND xC_libraries ereadline)
else () else ()
list (APPEND degesch_libraries readline) list (APPEND xC_libraries readline)
endif () endif ()
elseif (WANT_LIBEDIT) elseif (WANT_LIBEDIT)
pkg_check_modules (libedit REQUIRED libedit) pkg_check_modules (libedit REQUIRED libedit)
list (APPEND degesch_libraries ${libedit_LIBRARIES}) list (APPEND xC_libraries ${libedit_LIBRARIES})
include_directories (${libedit_INCLUDE_DIRS}) include_directories (${libedit_INCLUDE_DIRS})
endif () endif ()
@ -135,34 +135,34 @@ configure_file (${PROJECT_SOURCE_DIR}/config.h.in ${PROJECT_BINARY_DIR}/config.h
include_directories (${PROJECT_SOURCE_DIR} ${PROJECT_BINARY_DIR}) include_directories (${PROJECT_SOURCE_DIR} ${PROJECT_BINARY_DIR})
# Generate IRC replies--we need a custom target because of the multiple outputs # Generate IRC replies--we need a custom target because of the multiple outputs
add_custom_command (OUTPUT kike-replies.c kike.msg add_custom_command (OUTPUT xD-replies.c xD.msg
COMMAND ${PROJECT_SOURCE_DIR}/kike-gen-replies.sh COMMAND ${PROJECT_SOURCE_DIR}/xD-gen-replies.sh
> kike-replies.c < ${PROJECT_SOURCE_DIR}/kike-replies > xD-replies.c < ${PROJECT_SOURCE_DIR}/xD-replies
DEPENDS ${PROJECT_SOURCE_DIR}/kike-replies DEPENDS ${PROJECT_SOURCE_DIR}/xD-replies
COMMENT "Generating files from the list of server numerics") COMMENT "Generating files from the list of server numerics")
add_custom_target (replies DEPENDS ${PROJECT_BINARY_DIR}/kike-replies.c) add_custom_target (replies DEPENDS ${PROJECT_BINARY_DIR}/xD-replies.c)
# Build # Build
foreach (name zyklonb degesch kike) foreach (name xB xC xD)
add_executable (${name} ${name}.c ${PROJECT_BINARY_DIR}/config.h) add_executable (${name} ${name}.c ${PROJECT_BINARY_DIR}/config.h)
target_link_libraries (${name} ${project_libraries}) target_link_libraries (${name} ${project_libraries})
add_threads (${name}) add_threads (${name})
endforeach () endforeach ()
add_dependencies (kike replies) add_dependencies (xD replies)
add_dependencies (degesch replies) add_dependencies (xC replies)
target_link_libraries (degesch ${degesch_libraries}) target_link_libraries (xC ${xC_libraries})
# Tests # Tests
include (CTest) include (CTest)
if (BUILD_TESTING) if (BUILD_TESTING)
add_executable (test-degesch $<TARGET_PROPERTY:degesch,SOURCES>) add_executable (test-xC $<TARGET_PROPERTY:xC,SOURCES>)
set_target_properties (test-degesch PROPERTIES COMPILE_DEFINITIONS TESTING) set_target_properties (test-xC PROPERTIES COMPILE_DEFINITIONS TESTING)
target_link_libraries (test-degesch $<TARGET_PROPERTY:degesch,LINK_LIBRARIES>) target_link_libraries (test-xC $<TARGET_PROPERTY:xC,LINK_LIBRARIES>)
add_threads (test-degesch) add_threads (test-xC)
add_dependencies (test-degesch replies) add_dependencies (test-xC replies)
add_test (NAME test-degesch COMMAND test-degesch) add_test (NAME test-xC COMMAND test-xC)
add_test (NAME custom-static-analysis add_test (NAME custom-static-analysis
COMMAND ${PROJECT_SOURCE_DIR}/test-static) COMMAND ${PROJECT_SOURCE_DIR}/test-static)
endif () endif ()
@ -182,13 +182,13 @@ add_custom_target (clang-tidy
WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}) WORKING_DIRECTORY ${PROJECT_SOURCE_DIR})
# Installation # Installation
install (TARGETS zyklonb degesch kike DESTINATION ${CMAKE_INSTALL_BINDIR}) install (TARGETS xB xC xD DESTINATION ${CMAKE_INSTALL_BINDIR})
install (FILES LICENSE DESTINATION ${CMAKE_INSTALL_DOCDIR}) install (FILES LICENSE DESTINATION ${CMAKE_INSTALL_DOCDIR})
# XXX: our defaults for XDG_DATA_DIRS expect /usr/local/shore or /usr/share # XXX: our defaults for XDG_DATA_DIRS expect /usr/local/shore or /usr/share
install (DIRECTORY plugins/zyklonb/ install (DIRECTORY plugins/xB/
DESTINATION ${CMAKE_INSTALL_DATADIR}/zyklonb/plugins USE_SOURCE_PERMISSIONS) DESTINATION ${CMAKE_INSTALL_DATADIR}/xB/plugins USE_SOURCE_PERMISSIONS)
install (DIRECTORY plugins/degesch/ install (DIRECTORY plugins/xC/
DESTINATION ${CMAKE_INSTALL_DATADIR}/degesch/plugins) DESTINATION ${CMAKE_INSTALL_DATADIR}/xC/plugins)
# Generate documentation from text markup # Generate documentation from text markup
find_program (ASCIIDOCTOR_EXECUTABLE asciidoctor) find_program (ASCIIDOCTOR_EXECUTABLE asciidoctor)
@ -196,7 +196,7 @@ if (NOT ASCIIDOCTOR_EXECUTABLE)
message (FATAL_ERROR "asciidoctor not found") message (FATAL_ERROR "asciidoctor not found")
endif () endif ()
foreach (page zyklonb degesch kike) foreach (page xB xC xD)
set (page_output "${PROJECT_BINARY_DIR}/${page}.1") set (page_output "${PROJECT_BINARY_DIR}/${page}.1")
list (APPEND project_MAN_PAGES "${page_output}") list (APPEND project_MAN_PAGES "${page_output}")
add_custom_command (OUTPUT ${page_output} add_custom_command (OUTPUT ${page_output}
@ -217,7 +217,7 @@ foreach (page ${project_MAN_PAGES})
endforeach () endforeach ()
# CPack # CPack
set (CPACK_PACKAGE_DESCRIPTION_SUMMARY "Unethical IRC client, daemon and bot") set (CPACK_PACKAGE_DESCRIPTION_SUMMARY "Unreasonable IRC client, daemon and bot")
set (CPACK_PACKAGE_VERSION "${project_version_safe}") set (CPACK_PACKAGE_VERSION "${project_version_safe}")
set (CPACK_PACKAGE_VENDOR "Premysl Eric Janouch") set (CPACK_PACKAGE_VENDOR "Premysl Eric Janouch")
set (CPACK_PACKAGE_CONTACT "Přemysl Eric Janouch <p@janouch.name>") set (CPACK_PACKAGE_CONTACT "Přemysl Eric Janouch <p@janouch.name>")

192
NEWS
View File

@ -1,29 +1,31 @@
1.3.0 (20xx-xx-xx) 1.3.0 (2021-xx-xx)
* degesch: made nick autocompletion offer recent speakers first * xC: made nick autocompletion offer recent speakers first
* All binaries have been renamed to something even sillier
1.2.0 (2021-07-08) "There Are Other Countries As Well" 1.2.0 (2021-07-08) "There Are Other Countries As Well"
* degesch: added a /squery command for IRCnet * xC: added a /squery command for IRCnet
* degesch: added trivial support for SASL EXTERNAL, enabled by adding "sasl" * xC: added trivial support for SASL EXTERNAL, enabled by adding "sasl"
to the respective server's "capabilities" list to the respective server's "capabilities" list
* degesch: now supporting IRCv3.2 capability negotiation, including CAP DEL * xC: now supporting IRCv3.2 capability negotiation, including CAP DEL
* degesch: added support for IRCv3 chghost * xC: added support for IRCv3 chghost
* degesch: /deop and /devoice without arguments will use the client's user * xC: /deop and /devoice without arguments will use the client's user
* degesch: /set +=/-= now treats its argument as a string array * xC: /set +=/-= now treats its argument as a string array
* degesch: made "/help /command" work the same way as "/help command" does * xC: made "/help /command" work the same way as "/help command" does
* degesch: /ban and /unban don't mangle extended bans anymore * xC: /ban and /unban don't mangle extended bans anymore
* degesch: joining new channels no longer switches to their buffer * xC: joining new channels no longer switches to their buffer automatically
automatically if the current input line isn't empty if the current input line isn't empty
* censor.lua: now stripping colours from censored messages; * censor.lua: now stripping colours from censored messages;
their attributes are also configurable rather than always black on black their attributes are also configurable rather than always black on black
@ -31,9 +33,9 @@
1.1.0 (2020-10-31) "What Do You Mean By 'This Isn't Germany'?" 1.1.0 (2020-10-31) "What Do You Mean By 'This Isn't Germany'?"
* degesch: made fancy-prompt.lua work with libedit * xC: made fancy-prompt.lua work with libedit
* kike: fixed a regression with an unspecified "bind_host" * xD: fixed a regression with an unspecified "bind_host"
* Miscellaneous minor improvements * Miscellaneous minor improvements
@ -42,55 +44,55 @@
* Coming with real manual pages instead of help2man-generated stubs * Coming with real manual pages instead of help2man-generated stubs
* degesch: added support for more IRC colours and strike-through text (M-m x) * xC: added support for more IRC colours and strike-through text (M-m x)
* degesch: now tolerating all UTF-8 messages cut off by the server * xC: now tolerating all UTF-8 messages cut off by the server
* degesch: disabled "behaviour.backlog_helper_strip_formatting" by default * xC: disabled "behaviour.backlog_helper_strip_formatting" by default
since the relevant issue with ACS terminfo entries has been resolved since the relevant issue with ACS terminfo entries has been resolved
* degesch: enabled word wrapping in the backlog by default * xC: enabled word wrapping in the backlog by default
* degesch: made the unread marker span the whole line, with a configurable * xC: made the unread marker span the whole line, with a configurable
character; the previous behaviour can be obtained by setting it empty character; the previous behaviour can be obtained by setting it empty
* degesch: fixed the prompt not showing back up after exiting a backlog helper * xC: fixed the prompt not showing back up after exiting a backlog helper
when an external event has provoked an attempt to change it when an external event has provoked an attempt to change it
* degesch: now watching fellow channel users' away status when the server * xC: now watching fellow channel users' away status when the server
supports the away-notify capability; indicated by italicised nicknames supports the away-notify capability; indicated by italicised nicknames
* degesch: added a plugin to highlight prime numbers in incoming messages * xC: added a plugin to highlight prime numbers in incoming messages
* kike: make sure an unspecified "bind_host" binds to both IPv4 and IPv6 * xD: make sure an unspecified "bind_host" binds to both IPv4 and IPv6
* ZyklonB: install plugins to /usr/share and look for them in XDG data dirs * xB: install plugins to /usr/share and look for them in XDG data dirs
* Miscellaneous little fixes * Miscellaneous little fixes
0.9.8 (2020-09-02) "Yep, Still Using It" 0.9.8 (2020-09-02) "Yep, Still Using It"
* degesch: fixed a crash and prompt attribute output in libedit 20191231-3.1, * xC: fixed a crash and prompt attribute output in libedit 20191231-3.1,
though users are officially discouraged from using this library though users are officially discouraged from using this library
* degesch: fixed Lua 5.4 build, so far the support is experimental * xC: fixed Lua 5.4 build, so far the support is experimental
* Miscellaneous little fixes * Miscellaneous little fixes
0.9.7 (2018-10-21) "Business as Usual" 0.9.7 (2018-10-21) "Business as Usual"
* kike: fix wildcard handling in WHOIS * xD: fix wildcard handling in WHOIS
* kike: properly handle STATS without parametetrs * xD: properly handle STATS without parametetrs
* kike: abort earlier when an invalid mode character is detected while * xD: abort earlier when an invalid mode character is detected while
processing channel MODE messages processing channel MODE messages
* kike: do not send NICK notifications when the nickname doesn't really change * xD: do not send NICK notifications when the nickname doesn't really change
* kike: fix hostname string verification (only used for "server_name") * xD: fix hostname string verification (only used for "server_name")
0.9.6 (2018-06-22) "I've Been Sitting Here All This Time" 0.9.6 (2018-06-22) "I've Been Sitting Here All This Time"
@ -99,108 +101,108 @@
* Fix LibreSSL compatibility * Fix LibreSSL compatibility
* degesch: a second /disconnect cuts the connection by force * xC: a second /disconnect cuts the connection by force
* degesch: send a QUIT message to the IRC server on Ctrl-C * xC: send a QUIT message to the IRC server on Ctrl-C
* degesch: add a Slack plugin (even though the gateway's now defunct) * xC: add a Slack plugin (even though the gateway's now defunct)
* degesch: show an error message on log write failure * xC: show an error message on log write failure
* degesch: fix parsing of literal IPv6 addresses with port numbers * xC: fix parsing of literal IPv6 addresses with port numbers
* degesch: fix some error messages * xC: fix some error messages
* degesch: workaround a Readline bug in the fancy-prompt.lua plugin * xC: workaround a Readline bug in the fancy-prompt.lua plugin
* kike: fix two memory leaks * xD: fix two memory leaks
* kike: improve error handling for incoming connections * xD: improve error handling for incoming connections
* kike: disable TLS session reuse * xD: disable TLS session reuse
0.9.5 (2016-12-30) "It's Time" 0.9.5 (2016-12-30) "It's Time"
* Better support for the KILL command * Better support for the KILL command
* degesch: export many more fields to the Lua API, add a prompt hook * xC: export many more fields to the Lua API, add a prompt hook
* degesch: show channel user count in the prompt * xC: show channel user count in the prompt
* degesch: allow hiding join/part messages and other noise (Meta-Shift-H) * xC: allow hiding join/part messages and other noise (Meta-Shift-H)
* degesch: allow autojoining channels with keys * xC: allow autojoining channels with keys
* degesch: rejoin channels with keys on reconnect * xC: rejoin channels with keys on reconnect
* degesch: make /query without arguments just open the buffer * xC: make /query without arguments just open the buffer
* degesch: add a censor plugin * xC: add a censor plugin
* degesch: die on configuration parse errors * xC: die on configuration parse errors
* degesch: request channel modes also on rejoin * xC: request channel modes also on rejoin
* degesch: don't show remembered channel modes on parted channels * xC: don't show remembered channel modes on parted channels
* degesch: fix highlight detection in colored text * xC: fix highlight detection in colored text
* degesch: fix CTCP handling for the real world and don't decode X-QUOTEs * xC: fix CTCP handling for the real world and don't decode X-QUOTEs
* degesch: add support for OpenSSL 1.1.0 * xC: add support for OpenSSL 1.1.0
0.9.4 (2016-04-28) "Oops" 0.9.4 (2016-04-28) "Oops"
* degesch: fix crash on characters invalid in Windows-1252 * xC: fix crash on characters invalid in Windows-1252
* degesch: add an auto-rejoin plugin * xC: add an auto-rejoin plugin
* degesch: better date change messages with customizable formatting; * xC: better date change messages with customizable formatting;
now also used in the backlog, so it looks closer to regular output now also used in the backlog, so it looks closer to regular output
* ZyklonB: add a calc plugin providing a basic Scheme REPL * xB: add a calc plugin providing a basic Scheme REPL
* ZyklonB: add a seen plugin * xB: add a seen plugin
* kike, ZyklonB: use pledge(2) on OpenBSD * xD, xB: use pledge(2) on OpenBSD
0.9.3 (2016-03-27) "Doesn't Even Suck" 0.9.3 (2016-03-27) "Doesn't Even Suck"
* Use TLS Server Name Indication when connecting to servers * Use TLS Server Name Indication when connecting to servers
* degesch: now we erase the screen before displaying buffers * xC: now we erase the screen before displaying buffers
* degesch: implemented word wrapping in buffers * xC: implemented word wrapping in buffers
* degesch: added autocomplete for /topic * xC: added autocomplete for /topic
* degesch: Lua API was improved and extended * xC: Lua API was improved and extended
* degesch: added a basic last.fm "now playing" plugin * xC: added a basic last.fm "now playing" plugin
* degesch: backlog limit was made configurable * xC: backlog limit was made configurable
* degesch: allow changing the list of IRC capabilities to use if available * xC: allow changing the list of IRC capabilities to use if available
* degesch: optimize buffer memory usage * xC: optimize buffer memory usage
* degesch: added logging of messages sent from /quote and plugins * xC: added logging of messages sent from /quote and plugins
* degesch: M-! and M-a to go to the next buffer in order with * xC: M-! and M-a to go to the next buffer in order with a highlight
a highlight or new activity respectively or new activity respectively
* degesch: added --format for previewing things like MOTD files * xC: added --format for previewing things like MOTD files
* degesch: added /buffer goto supporting case insensitive partial matches * xC: added /buffer goto supporting case insensitive partial matches
* kike: add support for IRCv3.2 server-time * xD: add support for IRCv3.2 server-time
* ZyklonB: plugins now run in a dedicated data directory * xB: plugins now run in a dedicated data directory
* ZyklonB: added a factoids plugin * xB: added a factoids plugin
* Remote addresses are now resolved asynchronously * Remote addresses are now resolved asynchronously
@ -209,28 +211,28 @@
0.9.2 (2015-12-31) 0.9.2 (2015-12-31)
* degesch: added rudimentary support for Lua scripting * xC: added rudimentary support for Lua scripting
* degesch: added detection of pasting, so that it doesn't trigger other * xC: added detection of pasting, so that it doesn't trigger other
keyboard shortcuts, such as for autocomplete keyboard shortcuts, such as for autocomplete
* degesch: added auto-away capability * xC: added auto-away capability
* degesch: added an /oper command * xC: added an /oper command
* degesch: libedit backend works again * xC: libedit backend works again
* degesch: added capability to edit the input line using VISUAL/EDITOR * xC: added capability to edit the input line using VISUAL/EDITOR
* degesch: added Meta-Tab to switch to the last used buffer * xC: added Meta-Tab to switch to the last used buffer
* degesch: correctly respond to stopping and resuming (SIGTSTP) * xC: correctly respond to stopping and resuming (SIGTSTP)
* degesch: fixed decoding of text formatting * xC: fixed decoding of text formatting
* degesch: unseen PMs now show up as highlights * xC: unseen PMs now show up as highlights
* degesch: various bugfixes * xC: various bugfixes
0.9.1 (2015-09-25) 0.9.1 (2015-09-25)
@ -241,23 +243,23 @@
* Pulled in kqueue support * Pulled in kqueue support
* degesch: added backlog/scrollback functionality using less(1) * xC: added backlog/scrollback functionality using less(1)
* degesch: made showing the entire set of channel mode user prefixes optional * xC: made showing the entire set of channel mode user prefixes optional
* degesch: nicknames in /names are now ordered * xC: nicknames in /names are now ordered
* degesch: nicknames now use the 256-color terminal palette if available * xC: nicknames now use the 256-color terminal palette if available
* degesch: now we skip entries in the "addresses" list that can't be resolved * xC: now we skip entries in the "addresses" list that can't be resolved
to an address, along with displaying a more helpful message to an address, along with displaying a more helpful message
* degesch: joins, parts, nick changes and quits don't count as new buffer * xC: joins, parts, nick changes and quits don't count as new buffer
activity anymore activity anymore
* degesch: added Meta-H to open the full log file * xC: added Meta-H to open the full log file
* degesch: various bugfixes and little improvements * xC: various bugfixes and little improvements
0.9.0 (2015-07-23) 0.9.0 (2015-07-23)

View File

@ -2,25 +2,25 @@ uirc3
===== =====
:compact-option: :compact-option:
The [line-through]#unethical# edgy IRC trinity. This project consists of an The unreasonable IRC trinity. This project consists of an IRC client, daemon,
IRC client, daemon, and bot. It's all you're ever going to need for chatting, and bot. It's all you're ever going to need for chatting, as long as you can
as long as you can make do with minimalist software. make do with minimalist software.
All of them have these potentially interesting properties: All of them have these potentially interesting properties:
- IPv6 support - IPv6 support
- TLS support, including client certificates - TLS support, including client certificates
- lean on dependencies (with the exception of 'degesch') - lean on dependencies (with the exception of 'xC')
- compact and arguably easy to hack on - compact and arguably easy to hack on
- very permissive license - very permissive license
degesch xC
------- --
The IRC client. It is largely defined by being built on top of GNU Readline The IRC client. It is largely defined by being built on top of GNU Readline
that has been hacked to death. Its interface should feel somewhat familiar for that has been hacked to death. Its interface should feel somewhat familiar for
weechat or irssi users. weechat or irssi users.
image::degesch.png[align="center"] image::xC.png[align="center"]
This is the largest application within the project. It has most of the stuff This is the largest application within the project. It has most of the stuff
you'd expect of an IRC client, such as being able to set up multiple servers, you'd expect of an IRC client, such as being able to set up multiple servers,
@ -28,8 +28,8 @@ a powerful configuration system, integrated help, text formatting, CTCP queries,
automatic splitting of overlong messages, autocomplete, logging to file, automatic splitting of overlong messages, autocomplete, logging to file,
auto-away, command aliases and basic support for Lua scripting. auto-away, command aliases and basic support for Lua scripting.
kike xD
---- --
The IRC daemon. It is designed to be used as a regular user application rather The IRC daemon. It is designed to be used as a regular user application rather
than a system-wide daemon. If all you want is a decent, minimal IRCd for than a system-wide daemon. If all you want is a decent, minimal IRCd for
testing purposes or a small network of respectful users (or bots), this one will testing purposes or a small network of respectful users (or bots), this one will
@ -48,7 +48,7 @@ Not supported:
- server linking (which also means no services); I consider existing protocols - server linking (which also means no services); I consider existing protocols
for this purpose ugly and tricky to implement correctly; I've also found no for this purpose ugly and tricky to implement correctly; I've also found no
use for this feature yet use for this feature yet
- online changes to configuration; the configuration system from degesch could - online changes to configuration; the configuration system from xC could
be used to implement this feature if needed be used to implement this feature if needed
- limits of almost any kind, just connections and mode `+l` - limits of almost any kind, just connections and mode `+l`
@ -56,8 +56,8 @@ This program has been
https://git.janouch.name/p/haven/src/branch/master/hid[ported to Go], https://git.janouch.name/p/haven/src/branch/master/hid[ported to Go],
and development continues over there. and development continues over there.
ZyklonB xB
------- --
The IRC bot. It builds upon the concept of my other VitaminA IRC bot. The main The IRC bot. It builds upon the concept of my other VitaminA IRC bot. The main
characteristic of these two bots is that they run plugins as coprocesses, which characteristic of these two bots is that they run plugins as coprocesses, which
allows for enhanced reliability and programming language freedom. allows for enhanced reliability and programming language freedom.
@ -78,8 +78,8 @@ Building
-------- --------
Build dependencies: CMake, pkg-config, asciidoctor, awk, liberty (included) + Build dependencies: CMake, pkg-config, asciidoctor, awk, liberty (included) +
Runtime dependencies: openssl + Runtime dependencies: openssl +
Additionally for degesch: curses, libffi, lua >= 5.3 (optional), Additionally for xC: curses, libffi, lua >= 5.3 (optional),
readline >= 6.0 or libedit >= 2013-07-12 readline >= 6.0 or libedit >= 2013-07-12
Avoid libedit if you can, in general it works but at the moment history is Avoid libedit if you can, in general it works but at the moment history is
acting up and I have no clue about fixing it. acting up and I have no clue about fixing it.
@ -102,49 +102,49 @@ Or you can try telling CMake to make a package for you. For Debian it is:
Usage Usage
----- -----
'degesch' has in-program configuration. Just run it and read the instructions. 'xC' has in-program configuration. Just run it and read the instructions.
Consult its link:degesch.adoc[man page] for details about the interface. Consult its link:xC.adoc[man page] for details about the interface.
For the rest you might want to generate a configuration file: For the rest you might want to generate a configuration file:
$ zyklonb --write-default-config $ xB --write-default-config
$ kike --write-default-config $ xD --write-default-config
After making any necessary edits to the file (there are comments to aid you in After making any necessary edits to the file (there are comments to aid you in
doing that), simply run the appropriate program with no arguments: doing that), simply run the appropriate program with no arguments:
$ zyklonb $ xB
$ kike $ xD
'ZyklonB' stays running in the foreground, therefore I recommend launching it 'xB' stays running in the foreground, therefore I recommend launching it inside
inside a Screen or tmux session. a Screen or tmux session.
'kike', on the other hand, immediately forks into the background. Use the PID 'xD', on the other hand, immediately forks into the background. Use the PID
file or something like `killall` if you want to terminate it. You can run it file or something like `killall` if you want to terminate it. You can run it
as a `forking` type systemd user service. as a `forking` type systemd user service.
Client Certificates Client Certificates
------------------- -------------------
'degesch' will use the SASL EXTERNAL method to authenticate using the TLS 'xC' will use the SASL EXTERNAL method to authenticate using the TLS client
client certificate specified by the respective server's `tls_cert` option certificate specified by the respective server's `tls_cert` option if you add
if you add `sasl` to the `capabilities` option and the server supports this. `sasl` to the `capabilities` option and the server supports this.
'kike' uses SHA-1 fingerprints of TLS client certificates to authenticate users. 'xD' uses SHA-1 fingerprints of TLS client certificates to authenticate users.
To get the fingerprint from a certificate file in the required form, use: To get the fingerprint from a certificate file in the required form, use:
$ openssl x509 -in public.pem -outform DER | sha1sum $ openssl x509 -in public.pem -outform DER | sha1sum
Custom Key Bindings in degesch Custom Key Bindings in xC
------------------------------ -------------------------
The default and preferred frontend used in 'degesch' is GNU Readline. This The default and preferred frontend used in 'xC' is GNU Readline. This means
means that you can change your bindings by editing '~/.inputrc'. For example: that you can change your bindings by editing '~/.inputrc'. For example:
.... ....
# Preload with system-wide settings # Preload with system-wide settings
$include /etc/inputrc $include /etc/inputrc
# Make M-left and M-right reorder buffers # Make M-left and M-right reorder buffers
$if degesch $if xC
"\e\e[C": move-buffer-right "\e\e[C": move-buffer-right
"\e\e[D": move-buffer-left "\e\e[D": move-buffer-left
$endif $endif
@ -154,12 +154,12 @@ Consult the source code and the GNU Readline manual for a list of available
functions. Also refer to the latter for the exact syntax of this file. functions. Also refer to the latter for the exact syntax of this file.
Beware that you can easily break the program if you're not careful. Beware that you can easily break the program if you're not careful.
How do I make degesch look like the screenshot? How do I make xC look like the screenshot?
----------------------------------------------- ------------------------------------------
First of all, you must build it with Lua support. With the defaults, degesch First of all, you must build it with Lua support. With the defaults, xC doesn't
doesn't look too fancy because I don't want to depend on Lua or 256-colour look too fancy because I don't want to depend on Lua or 256-colour terminals.
terminals. In addition to that, I appear to be one of the few people who use In addition to that, I appear to be one of the few people who use black on white
black on white terminals. terminals.
/set behaviour.date_change_line = "%a %e %b %Y" /set behaviour.date_change_line = "%a %e %b %Y"
/set behaviour.plugin_autoload += "fancy-prompt.lua" /set behaviour.plugin_autoload += "fancy-prompt.lua"
@ -195,5 +195,5 @@ License
This software is released under the terms of the 0BSD license, the text of which This software is released under the terms of the 0BSD license, the text of which
is included within the package along with the list of authors. is included within the package along with the list of authors.
Note that 'degesch' becomes GPL-licensed when you link it against GNU Readline Note that 'xC' becomes GPL-licensed when you link it against GNU Readline,
but that is not a concern of this source package. The licenses are compatible. but that is not a concern of this source package. The licenses are compatible.

View File

@ -1,6 +1,6 @@
#!/usr/bin/env guile #!/usr/bin/env guile
ZyklonB calc plugin, basic Scheme evaluator xB calc plugin, basic Scheme evaluator
Copyright 2016 Přemysl Eric Janouch Copyright 2016 Přemysl Eric Janouch
See the file LICENSE for licensing information. See the file LICENSE for licensing information.

View File

@ -1,6 +1,6 @@
#!/usr/bin/env tclsh #!/usr/bin/env tclsh
# #
# ZyklonB coin plugin, random number-based utilities # xB coin plugin, random number-based utilities
# #
# Copyright 2012, 2014 Přemysl Eric Janouch # Copyright 2012, 2014 Přemysl Eric Janouch
# See the file LICENSE for licensing information. # See the file LICENSE for licensing information.

View File

@ -1,6 +1,6 @@
#!/usr/bin/awk -f #!/usr/bin/awk -f
# #
# ZyklonB eval plugin, LISP-like expression evaluator # xB eval plugin, LISP-like expression evaluator
# #
# Copyright 2013, 2014 Přemysl Eric Janouch # Copyright 2013, 2014 Přemysl Eric Janouch
# See the file LICENSE for licensing information. # See the file LICENSE for licensing information.

View File

@ -1,6 +1,6 @@
#!/usr/bin/env perl #!/usr/bin/env perl
# #
# ZyklonB factoids plugin # xB factoids plugin
# #
# Copyright 2016 Přemysl Eric Janouch <p@janouch.name> # Copyright 2016 Přemysl Eric Janouch <p@janouch.name>
# See the file LICENSE for licensing information. # See the file LICENSE for licensing information.

View File

@ -1,7 +1,7 @@
#!/usr/bin/env ruby #!/usr/bin/env ruby
# coding: utf-8 # coding: utf-8
# #
# ZyklonB pomodoro plugin # xB pomodoro plugin
# #
# Copyright 2015 Přemysl Eric Janouch # Copyright 2015 Přemysl Eric Janouch
# See the file LICENSE for licensing information. # See the file LICENSE for licensing information.

View File

@ -1,6 +1,6 @@
#!/usr/bin/tcc -run -lm #!/usr/bin/tcc -run -lm
// //
// ZyklonB scripting plugin, using a custom stack-based language // xB scripting plugin, using a custom stack-based language
// //
// Copyright 2014 Přemysl Eric Janouch // Copyright 2014 Přemysl Eric Janouch
// See the file LICENSE for licensing information. // See the file LICENSE for licensing information.

View File

@ -1,6 +1,6 @@
#!/usr/bin/env lua #!/usr/bin/env lua
-- --
-- ZyklonB seen plugin -- xB seen plugin
-- --
-- Copyright 2016 Přemysl Eric Janouch <p@janouch.name> -- Copyright 2016 Přemysl Eric Janouch <p@janouch.name>
-- See the file LICENSE for licensing information. -- See the file LICENSE for licensing information.

View File

@ -1,7 +1,7 @@
#!/usr/bin/env perl #!/usr/bin/env perl
# Creates a database for the "seen" plugin from logs for degesch. # Creates a database for the "seen" plugin from logs for xC.
# The results may not be completely accurate but are good for jumpstarting. # The results may not be completely accurate but are good for jumpstarting.
# Usage: ./seen-import-degesch.pl LOG-FILE... > seen.db # Usage: ./seen-import-xC.pl LOG-FILE... > seen.db
use strict; use strict;
use warnings; use warnings;

View File

@ -1,6 +1,6 @@
#!/usr/bin/env python3 #!/usr/bin/env python3
# #
# ZyklonB YouTube plugin, displaying info about YouTube links # xB YouTube plugin, displaying info about YouTube links
# #
# Copyright 2014 - 2015, Přemysl Eric Janouch <p@janouch.name> # Copyright 2014 - 2015, Přemysl Eric Janouch <p@janouch.name>
# See the file LICENSE for licensing information. # See the file LICENSE for licensing information.

View File

@ -16,7 +16,7 @@
-- --
local timeout local timeout
degesch.setup_config { xC.setup_config {
timeout = { timeout = {
type = "integer", type = "integer",
comment = "auto rejoin timeout", comment = "auto rejoin timeout",
@ -31,9 +31,9 @@ degesch.setup_config {
}, },
} }
async, await = degesch.async, coroutine.yield async, await = xC.async, coroutine.yield
degesch.hook_irc (function (hook, server, line) xC.hook_irc (function (hook, server, line)
local msg = degesch.parse (line) local msg = xC.parse (line)
if msg.command ~= "KICK" then return line end if msg.command ~= "KICK" then return line end
local who = msg.prefix:match ("^[^!]*") local who = msg.prefix:match ("^[^!]*")

View File

@ -39,7 +39,7 @@ local read_masks = function (v)
end end
local quote local quote
degesch.setup_config { xC.setup_config {
masks = { masks = {
type = "string_array", type = "string_array",
default = "\"\"", default = "\"\"",
@ -72,8 +72,8 @@ local censor = function (line)
return start .. text return start .. text
end end
degesch.hook_irc (function (hook, server, line) xC.hook_irc (function (hook, server, line)
local msg = degesch.parse (line) local msg = xC.parse (line)
if msg.command ~= "PRIVMSG" then return line end if msg.command ~= "PRIVMSG" then return line end
local channel = msg.params[1]:lower () local channel = msg.params[1]:lower ()

View File

@ -28,15 +28,15 @@
-- background but to really fix that mode, we'd have to fully reimplement it -- background but to really fix that mode, we'd have to fully reimplement it
-- since its alternative prompt very often gets overriden by accident anyway. -- since its alternative prompt very often gets overriden by accident anyway.
degesch.hook_prompt (function (hook) xC.hook_prompt (function (hook)
local current = degesch.current_buffer local current = xC.current_buffer
local chan = current.channel local chan = current.channel
local s = current.server local s = current.server
local bg_color = "255" local bg_color = "255"
local current_n = 0 local current_n = 0
local active = "" local active = ""
for i, buffer in ipairs (degesch.buffers) do for i, buffer in ipairs (xC.buffers) do
if buffer == current then if buffer == current then
current_n = i current_n = i
elseif buffer.new_messages_count ~= buffer.new_unimportant_count then elseif buffer.new_messages_count ~= buffer.new_unimportant_count then
@ -61,7 +61,7 @@ degesch.hook_prompt (function (hook)
end end
if current.hide_unimportant then x = x .. "<H>" end if current.hide_unimportant then x = x .. "<H>" end
local lines, cols = degesch.get_screen_size () local lines, cols = xC.get_screen_size ()
x = x .. " " .. active .. string.rep (" ", cols) x = x .. " " .. active .. string.rep (" ", cols)
-- Readline 7.0.003 seems to be broken and completely corrupts the prompt. -- Readline 7.0.003 seems to be broken and completely corrupts the prompt.

View File

@ -23,7 +23,7 @@ local cjson = require "cjson"
-- Setup configuration to load last.fm API credentials from -- Setup configuration to load last.fm API credentials from
local user, api_key local user, api_key
degesch.setup_config { xC.setup_config {
user = { user = {
type = "string", type = "string",
comment = "last.fm username", comment = "last.fm username",
@ -117,7 +117,7 @@ end
local running local running
-- Initiate a connection to last.fm servers -- Initiate a connection to last.fm servers
async, await = degesch.async, coroutine.yield async, await = xC.async, coroutine.yield
local make_request = function (buffer, action) local make_request = function (buffer, action)
if not user or not api_key then if not user or not api_key then
report_error (buffer, "configuration is incomplete") report_error (buffer, "configuration is incomplete")
@ -159,7 +159,7 @@ local send_song = function (buffer)
end end
-- Hook input to simulate new commands -- Hook input to simulate new commands
degesch.hook_input (function (hook, buffer, input) xC.hook_input (function (hook, buffer, input)
if input == "/np" then if input == "/np" then
make_request (buffer, function (np) make_request (buffer, function (np)
now_playing = np now_playing = np

View File

@ -15,8 +15,8 @@
-- CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. -- CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
-- --
degesch.hook_irc (function (hook, server, line) xC.hook_irc (function (hook, server, line)
local msg = degesch.parse (line) local msg = xC.parse (line)
local start, timeout = line:match ("^(.* :Ping timeout:) (%d+) seconds$") local start, timeout = line:match ("^(.* :Ping timeout:) (%d+) seconds$")
if msg.command ~= "QUIT" or not start then if msg.command ~= "QUIT" or not start then
return line return line

View File

@ -16,7 +16,7 @@
-- --
local smallest, highlight = 0, "\x1f" local smallest, highlight = 0, "\x1f"
degesch.setup_config { xC.setup_config {
smallest = { smallest = {
type = "integer", type = "integer",
default = "0", default = "0",
@ -62,7 +62,7 @@ end
-- XXX: sadly it won't typically highlight primes in our own messages, -- XXX: sadly it won't typically highlight primes in our own messages,
-- unless IRCv3 echo-message is on -- unless IRCv3 echo-message is on
degesch.hook_irc (function (hook, server, line) xC.hook_irc (function (hook, server, line)
local start, message = line:match ("^(.- PRIVMSG .- :)(.*)$") local start, message = line:match ("^(.- PRIVMSG .- :)(.*)$")
return message and start .. do_message (message) or line return message and start .. do_message (message) or line
end) end)

View File

@ -51,7 +51,7 @@ local load_emoji = function (extra)
for k, v in extra:gmatch "([^,]+) ([^,]+)" do emoji[k] = v end for k, v in extra:gmatch "([^,]+) ([^,]+)" do emoji[k] = v end
end end
degesch.setup_config { xC.setup_config {
servers = { servers = {
type = "string_array", type = "string_array",
default = "\"\"", default = "\"\"",
@ -74,8 +74,8 @@ degesch.setup_config {
-- We can handle external messages about what we've supposedly sent just fine, -- We can handle external messages about what we've supposedly sent just fine,
-- so let's get rid of that "[username] some message sent from the web UI" crap -- so let's get rid of that "[username] some message sent from the web UI" crap
degesch.hook_irc (function (hook, server, line) xC.hook_irc (function (hook, server, line)
local msg, us = degesch.parse (line), server.user local msg, us = xC.parse (line), server.user
if not servers[server.name] or msg.command ~= "PRIVMSG" or not us if not servers[server.name] or msg.command ~= "PRIVMSG" or not us
or msg.params[1]:lower () ~= us.nickname:lower () then return line end or msg.params[1]:lower () ~= us.nickname:lower () then return line end
@ -88,7 +88,7 @@ degesch.hook_irc (function (hook, server, line)
end) end)
-- Unfuck emoji and :nick!nick@irc.tinyspeck.com MODE #channel +v nick : active -- Unfuck emoji and :nick!nick@irc.tinyspeck.com MODE #channel +v nick : active
degesch.hook_irc (function (hook, server, line) xC.hook_irc (function (hook, server, line)
if not servers[server.name] then return line end if not servers[server.name] then return line end
if unemojify then if unemojify then
local start, text = line:match ("^(.- PRIVMSG .- :)(.*)$") local start, text = line:match ("^(.- PRIVMSG .- :)(.*)$")
@ -101,7 +101,7 @@ degesch.hook_irc (function (hook, server, line)
end) end)
-- The gateway simply ignores the NAMES command altogether -- The gateway simply ignores the NAMES command altogether
degesch.hook_input (function (hook, buffer, input) xC.hook_input (function (hook, buffer, input)
if not buffer.channel or not servers[buffer.server.name] if not buffer.channel or not servers[buffer.server.name]
or not input:match "^/names%s*$" then return input end or not input:match "^/names%s*$" then return input end
@ -119,9 +119,9 @@ degesch.hook_input (function (hook, buffer, input)
buffer:log (names) buffer:log (names)
end) end)
degesch.hook_completion (function (hook, data, word) xC.hook_completion (function (hook, data, word)
local chan = degesch.current_buffer.channel local chan = xC.current_buffer.channel
local server = degesch.current_buffer.server local server = xC.current_buffer.server
if not chan or not servers[server.name] then return end if not chan or not servers[server.name] then return end
-- In /commands there is typically no desire at all to add the at sign -- In /commands there is typically no desire at all to add the at sign

View File

@ -52,11 +52,11 @@ local do_text = function (text)
return text:gsub ('%f[%g]https?://%g+', do_single_url) return text:gsub ('%f[%g]https?://%g+', do_single_url)
end end
degesch.hook_irc (function (hook, server, line) xC.hook_irc (function (hook, server, line)
local start, message = line:match ("^(.* :)(.*)$") local start, message = line:match ("^(.* :)(.*)$")
return message and start .. do_text (message) or line return message and start .. do_text (message) or line
end) end)
degesch.hook_input (function (hook, buffer, input) xC.hook_input (function (hook, buffer, input)
return do_text (input) return do_text (input)
end) end)

6
test
View File

@ -2,13 +2,13 @@
# Very basic end-to-end testing for CI # Very basic end-to-end testing for CI
# Run the daemon to test against # Run the daemon to test against
system ./kike --write-default-cfg system ./xD --write-default-cfg
spawn ./kike -d spawn ./xD -d
# 10 seconds is a bit too much # 10 seconds is a bit too much
set timeout 5 set timeout 5
spawn ./degesch spawn ./xC
# Fuck this Tcl shit, I want the exit code # Fuck this Tcl shit, I want the exit code
expect_after { expect_after {

View File

@ -9,7 +9,7 @@ export example=$(
#define N_ELEMENTS(a) (sizeof (a) / sizeof ((a)[0])) #define N_ELEMENTS(a) (sizeof (a) / sizeof ((a)[0]))
$(perl -0777 -ne 'print $& if /^.*?\nfilter_color(?s:.*?)^}$/m' \ $(perl -0777 -ne 'print $& if /^.*?\nfilter_color(?s:.*?)^}$/m' \
"$(dirname "$0")"/degesch.c) "$(dirname "$0")"/xC.c)
void main () { void main () {
size_t len = 0; size_t len = 0;

View File

@ -1,7 +1,7 @@
#!/bin/sh #!/bin/sh
# We don't use printf's percent notation with our custom logging mechanism, # We don't use printf's percent notation with our custom logging mechanism,
# so the compiler cannot check it for us like it usually does # so the compiler cannot check it for us like it usually does
perl -n0777 - "$(dirname "$0")"/degesch.c <<-'END' perl -n0777 - "$(dirname "$0")"/xC.c <<-'END'
while (/\blog_[^ ]+\s*\([^"()]*"[^"]*%[^%][^"]*"/gm) { while (/\blog_[^ ]+\s*\([^"()]*"[^"]*%[^%][^"]*"/gm) {
my ($p, $m) = ($`, $&); my ($p, $m) = ($`, $&);
printf "$ARGV:%d: suspicious log format string: %s...\n", printf "$ARGV:%d: suspicious log format string: %s...\n",

View File

@ -1,20 +1,20 @@
zyklonb(1) xB(1)
========== =====
:doctype: manpage :doctype: manpage
:manmanual: uirc3 Manual :manmanual: uirc3 Manual
:mansource: uirc3 {release-version} :mansource: uirc3 {release-version}
Name Name
---- ----
zyklonb - modular IRC bot xB - modular IRC bot
Synopsis Synopsis
-------- --------
*zyklonb* [_OPTION_]... *xB* [_OPTION_]...
Description Description
----------- -----------
*zyklonb* is a modular IRC bot with a programming language-agnostic plugin *xB* is a modular IRC bot with a programming language-agnostic plugin
architecture based on co-processes. architecture based on co-processes.
Options Options
@ -82,19 +82,19 @@ All other commands will be forwarded directly to the IRC server.
Files Files
----- -----
*zyklonb* follows the XDG Base Directory Specification. *xB* follows the XDG Base Directory Specification.
_~/.config/zyklonb/zyklonb.conf_:: _~/.config/xB/xB.conf_::
The bot's configuration file. Use the *--write-default-cfg* option The bot's configuration file. Use the *--write-default-cfg* option
to create a new one for editing. to create a new one for editing.
_~/.local/share/zyklonb/_:: _~/.local/share/xB/_::
The initial working directory for plugins, in which they may create private The initial working directory for plugins, in which they may create private
databases or other files as needed. databases or other files as needed.
_~/.local/share/zyklonb/plugins/_:: _~/.local/share/xB/plugins/_::
_/usr/local/share/zyklonb/plugins/_:: _/usr/local/share/xB/plugins/_::
_/usr/share/zyklonb/plugins/_:: _/usr/share/xB/plugins/_::
Plugins are searched for in these directories, in order, unless Plugins are searched for in these directories, in order, unless
the *plugin_dir* configuration option overrides this. the *plugin_dir* configuration option overrides this.

View File

@ -1,5 +1,5 @@
/* /*
* zyklonb.c: a modular IRC bot * xB.c: a modular IRC bot
* *
* Copyright (c) 2014 - 2020, Přemysl Eric Janouch <p@janouch.name> * Copyright (c) 2014 - 2020, Přemysl Eric Janouch <p@janouch.name>
* *
@ -17,7 +17,7 @@
*/ */
#include "config.h" #include "config.h"
#define PROGRAM_NAME "ZyklonB" #define PROGRAM_NAME "xB"
#include "common.c" #include "common.c"
@ -25,9 +25,9 @@
static struct simple_config_item g_config_table[] = static struct simple_config_item g_config_table[] =
{ {
{ "nickname", "ZyklonB", "IRC nickname" }, { "nickname", "xB", "IRC nickname" },
{ "username", "bot", "IRC user name" }, { "username", "bot", "IRC user name" },
{ "realname", "ZyklonB IRC bot", "IRC real name/e-mail" }, { "realname", "xB IRC bot", "IRC real name/e-mail" },
{ "irc_host", NULL, "Address of the IRC server" }, { "irc_host", NULL, "Address of the IRC server" },
{ "irc_port", "6667", "Port of the IRC server" }, { "irc_port", "6667", "Port of the IRC server" },
@ -1860,7 +1860,7 @@ on_plugin_death (struct plugin *plugin, int status)
struct bot_context *ctx = plugin->ctx; struct bot_context *ctx = plugin->ctx;
// TODO: callbacks on children death, so that we may tell the user // TODO: callbacks on children death, so that we may tell the user
// "plugin `name' died like a dirty jewish pig"; use `status' // "plugin `name' died"; use `status'
if (!plugin->is_zombie && WIFSIGNALED (status)) if (!plugin->is_zombie && WIFSIGNALED (status))
{ {
const char *notes = ""; const char *notes = "";

View File

@ -1,22 +1,22 @@
degesch(1) xC(1)
========== =====
:doctype: manpage :doctype: manpage
:manmanual: uirc3 Manual :manmanual: uirc3 Manual
:mansource: uirc3 {release-version} :mansource: uirc3 {release-version}
Name Name
---- ----
degesch - terminal-based IRC client xC - terminal-based IRC client
Synopsis Synopsis
-------- --------
*degesch* [_OPTION_]... *xC* [_OPTION_]...
Description Description
----------- -----------
*degesch* is a scriptable IRC client for the command line. On the first run *xC* is a scriptable IRC client for the command line. On the first run it will
it will welcome you with an introductory message. Should you ever get lost, welcome you with an introductory message. Should you ever get lost, use the
use the */help* command to obtain more information on commands or options. */help* command to obtain more information on commands or options.
Options Options
------- -------
@ -26,7 +26,7 @@ Options
database: database:
+ +
``` ```
printf '\x02bold\x02\n' | degesch -f printf '\x02bold\x02\n' | xC -f
``` ```
+ +
This feature may be used to preview server MOTD files. This feature may be used to preview server MOTD files.
@ -98,18 +98,18 @@ Environment
Files Files
----- -----
*degesch* follows the XDG Base Directory Specification. *xC* follows the XDG Base Directory Specification.
_~/.config/degesch/degesch.conf_:: _~/.config/xC/xC.conf_::
The program's configuration file. Preferrably use internal facilities, such The program's configuration file. Preferrably use internal facilities, such
as the */set* command, to make changes in it. as the */set* command, to make changes in it.
_~/.local/share/degesch/logs/_:: _~/.local/share/xC/logs/_::
When enabled by *behaviour.logging*, log files are stored here. When enabled by *behaviour.logging*, log files are stored here.
_~/.local/share/degesch/plugins/_:: _~/.local/share/xC/plugins/_::
_/usr/local/share/degesch/plugins/_:: _/usr/local/share/xC/plugins/_::
_/usr/share/degesch/plugins/_:: _/usr/share/xC/plugins/_::
Plugins are searched for in these directories, in order. Plugins are searched for in these directories, in order.
Bugs Bugs

View File

@ -1,5 +1,5 @@
/* /*
* degesch.c: a terminal-based IRC client * xC.c: a terminal-based IRC client
* *
* Copyright (c) 2015 - 2021, Přemysl Eric Janouch <p@janouch.name> * Copyright (c) 2015 - 2021, Přemysl Eric Janouch <p@janouch.name>
* *
@ -46,10 +46,10 @@ enum
#define print_warning_data ((void *) ATTR_WARNING) #define print_warning_data ((void *) ATTR_WARNING)
#include "config.h" #include "config.h"
#define PROGRAM_NAME "degesch" #define PROGRAM_NAME "xC"
#include "common.c" #include "common.c"
#include "kike-replies.c" #include "xD-replies.c"
#include <math.h> #include <math.h>
#include <langinfo.h> #include <langinfo.h>
@ -10699,7 +10699,7 @@ lua_plugin_load (struct app_context *ctx, const char *filename,
luaL_checkversion (L); luaL_checkversion (L);
// Register the degesch library as a singleton with "plugin" as an upvalue // Register the xC library as a singleton with "plugin" as an upvalue
// (mostly historical, but rather convenient) // (mostly historical, but rather convenient)
luaL_newmetatable (L, lua_ctx_info.name); luaL_newmetatable (L, lua_ctx_info.name);
lua_pushlightuserdata (L, plugin); lua_pushlightuserdata (L, plugin);
@ -13712,7 +13712,7 @@ app_editline_init (struct input_el *self)
static const char *g_first_time_help[] = static const char *g_first_time_help[] =
{ {
"", "",
"\x02Welcome to degesch!", "\x02Welcome to xC!",
"", "",
"To get a list of all commands, type \x02/help\x02. To obtain", "To get a list of all commands, type \x02/help\x02. To obtain",
"more information on a command or option, simply add it as", "more information on a command or option, simply add it as",
@ -14346,13 +14346,9 @@ main (int argc, char *argv[])
static const char *g_logo[] = static const char *g_logo[] =
{ {
" __ __ ", "",
" __/ /___________________/ / ", "\x02" PROGRAM_NAME "\x02 " PROGRAM_VERSION,
" / / , / / , / __/ __/ _ \\ ", "",
"/ / / __/ / / __/_ / /_/ // / ",
"\\__/\\__/_ /\\__/___/\\__/_//_/ " PROGRAM_VERSION,
" /___/",
""
}; };
static void static void
@ -14379,7 +14375,7 @@ format_input_and_die (struct app_context *ctx)
int int
main (int argc, char *argv[]) main (int argc, char *argv[])
{ {
// We include a generated file from kike including this array we don't use; // We include a generated file from xD including this array we don't use;
// let's just keep it there and silence the compiler warning instead // let's just keep it there and silence the compiler warning instead
(void) g_default_replies; (void) g_default_replies;

View File

Before

Width:  |  Height:  |  Size: 8.9 KiB

After

Width:  |  Height:  |  Size: 8.9 KiB

View File

@ -2,7 +2,7 @@
LC_ALL=C exec awk ' LC_ALL=C exec awk '
BEGIN { BEGIN {
# The message catalog is a by-product # The message catalog is a by-product
msg = "kike.msg" msg = "xD.msg"
print "$quote \"" > msg; print "$quote \"" > msg;
print "$set 1" > msg; print "$set 1" > msg;
} }

View File

@ -1,20 +1,20 @@
kike(1) xD(1)
======= =====
:doctype: manpage :doctype: manpage
:manmanual: uirc3 Manual :manmanual: uirc3 Manual
:mansource: uirc3 {release-version} :mansource: uirc3 {release-version}
Name Name
---- ----
kike - IRC daemon xD - IRC daemon
Synopsis Synopsis
-------- --------
*kike* [_OPTION_]... *xD* [_OPTION_]...
Description Description
----------- -----------
*kike* is a basic IRC daemon for single-server networks, suitable for testing *xD* is a basic IRC daemon for single-server networks, suitable for testing
and private use. When run without a configuration file, it will start listening and private use. When run without a configuration file, it will start listening
on the standard port 6667 and the "any" address. on the standard port 6667 and the "any" address.
@ -40,10 +40,10 @@ contrary to what you might expect from a server.
Files Files
----- -----
*kike* follows the XDG Base Directory Specification. *xD* follows the XDG Base Directory Specification.
_~/.config/kike/kike.conf_:: _~/.config/xD/xD.conf_::
_/etc/xdg/kike/kike.conf_:: _/etc/xdg/xD/xD.conf_::
The daemon's configuration file. Use the *--write-default-cfg* option The daemon's configuration file. Use the *--write-default-cfg* option
to create a new one for editing. to create a new one for editing.

View File

@ -1,5 +1,5 @@
/* /*
* kike.c: an IRC daemon * xD.c: an IRC daemon
* *
* Copyright (c) 2014 - 2020, Přemysl Eric Janouch <p@janouch.name> * Copyright (c) 2014 - 2020, Přemysl Eric Janouch <p@janouch.name>
* *
@ -17,11 +17,11 @@
*/ */
#include "config.h" #include "config.h"
#define PROGRAM_NAME "kike" #define PROGRAM_NAME "xD"
#define WANT_SYSLOG_LOGGING #define WANT_SYSLOG_LOGGING
#include "common.c" #include "common.c"
#include "kike-replies.c" #include "xD-replies.c"
#include <nl_types.h> #include <nl_types.h>
enum { PIPE_READ, PIPE_WRITE }; enum { PIPE_READ, PIPE_WRITE };