diff --git a/.github/workflows/check.yml b/.github/workflows/check.yml index aeaf6c27..97cb3feb 100644 --- a/.github/workflows/check.yml +++ b/.github/workflows/check.yml @@ -18,7 +18,7 @@ jobs: steps: - name: prepare required software run: | - sudo apt install $apt_build_deps $apt_build_deps_autotools + sudo apt update && sudo apt install $apt_build_deps $apt_build_deps_autotools - uses: actions/checkout@main - name: make dist run: | @@ -38,18 +38,18 @@ jobs: strategy: fail-fast: false matrix: - os: [ubuntu-16.04, ubuntu-latest] + os: [ubuntu-18.04, ubuntu-latest] builder: [meson, configure] compiler: [clang, gcc] flags: [regular] include: - - os: ubuntu-16.04 + - os: ubuntu-18.04 builder: meson meson_ver: ==0.49.2 setuptools_ver: <51 - os: ubuntu-latest builder: meson - meson_ver: <0.59.0 + meson_ver: <0.60.0 - os: ubuntu-latest builder: meson flags: meson-latest FAILURE-OK @@ -64,7 +64,7 @@ jobs: meson_ver: ${{ matrix.meson_ver }} setuptools_ver: ${{ matrix.setuptools_ver }} run: | - sudo apt install $apt_build_deps $apt_build_deps_${{ matrix.builder }} + sudo apt update && sudo apt install $apt_build_deps $apt_build_deps_${{ matrix.builder }} eval "$get_pip_build_deps_${{ matrix.builder }}" curl -SLf https://github.com/irssi-import/actions-irssi/raw/master/check-irssi/render.pl -o ~/render.pl && chmod +x ~/render.pl - name: unpack archive @@ -118,5 +118,5 @@ jobs: echo load perl >> irssi-test/startup echo load proxy >> irssi-test/startup echo ^quit >> irssi-test/startup - irssi-build/bin/irssi --home irssi-test | ~/render.pl + irssi-build/bin/irssi --home irssi-test | perl -Mutf8 -C ~/render.pl cat irc.log.* diff --git a/.github/workflows/cifuzz.yml b/.github/workflows/cifuzz.yml index a32e335d..6325d671 100644 --- a/.github/workflows/cifuzz.yml +++ b/.github/workflows/cifuzz.yml @@ -19,13 +19,23 @@ jobs: matrix: sanitizer: [address, undefined, memory] steps: + - uses: actions/checkout@main + with: + path: irssi + - name: Docker build build_fuzzers container + run: | + # google/oss-fuzz/infra/cifuzz/actions/build_fuzzers@master + docker build -t build_fuzzers:actions -f "/home/runner/work/_actions/google/oss-fuzz/master/infra/build_fuzzers.Dockerfile" "/home/runner/work/_actions/google/oss-fuzz/master/infra" - name: Build Fuzzers (${{ matrix.sanitizer }}) id: build - uses: google/oss-fuzz/infra/cifuzz/actions/build_fuzzers@master - with: - oss-fuzz-project-name: 'irssi' - dry-run: false - sanitizer: ${{ matrix.sanitizer }} + env: + OSS_FUZZ_PROJECT_NAME: 'irssi' + DRY_RUN: false + SANITIZER: ${{ matrix.sanitizer }} + PROJECT_SRC_PATH: /github/workspace/irssi + REPOSITORY: 'irssi' + run: | + docker run --workdir /github/workspace --rm -e OSS_FUZZ_PROJECT_NAME -e DRY_RUN -e SANITIZER -e PROJECT_SRC_PATH -e REPOSITORY -e WORKSPACE=/github/workspace -e CI=true -v "/var/run/docker.sock":"/var/run/docker.sock" -v "$GITHUB_WORKSPACE":"/github/workspace" build_fuzzers:actions - name: Run Fuzzers (${{ matrix.sanitizer }}) uses: google/oss-fuzz/infra/cifuzz/actions/run_fuzzers@master with: diff --git a/NEWS b/NEWS index 1bdffd82..5b2040e8 100644 --- a/NEWS +++ b/NEWS @@ -1,4 +1,290 @@ -v1.3-head 2021-xx-xx The Irssi team +v1.3.2 2022-xx-xx The Irssi team + - CHANTYPES take precedence over (missing) STATUSMSG in /join + (#1358, an#54) + - Fix crash in Perl's $view->set_bookmark (freebsd#254237, + an#56) + + - Minor help fixes (an#51, an#52) + - Fix regression where own channel status was forgotten after + /UPGRADE (#1357, an#53) + + * /SET resolve_reverse_lookup setting was removed (#1034, + #1135) + * Irssi will try to connect on IPv4 if IPv6 connection failed + (#1146). By Shivaram Lingamneni + + * The display system now renders formats on the fly (#1079, + #1188, #1191, #1192, #1204, #1205, #1209, #1349, #1355, + an#13, an#14, an#28, an#29, an#36, an#37, an#49) + + This major change will break scripts that try to modify + printed text during "print text" signal (#1189). They need + to be ported to modify the text during "print format" + instead. It also breaks the usage of using /FORMAT to add + different colours to a line. Such usage needs to be ported + to using $expando variables instead. Affected scripts + include format_identify.pl, friends_peder.pl, nickcolor.pl, + nm.pl, people.pl + + The "gui print text finished" and "gui print text after + finished" signals gained a TEXT_DEST_REC *parameter in the + process. + + A new "gui render line text" signal is available to change + the rendering of a line + + * made the $Z expando (time) dynamic (#1087, #1207, #1208) + + This change breaks the usage of /SET timestamp_format to + supply a custom displayed time stamp. Affected scripts + include binary_time.pl + + * /HILIGHT -priority now affects which hilight rule gets + applied (#1228, #1232) + * The NAMES list is now hidden by default if there are more + than 18 users on the channel (an#7) + + To revert to the previous behaviour + + /SET show_names_on_join_limit -1 + + * -tls_verify is now enabled by default (#1170, an#18, #1309, + an#23, #1343, #1351) + + This may cause an ugly display of notls_verify in the output + of /SERVER LIST, even on plain-text connection, on old + configs. Kindly remove the "tls_verify = "no";" entries from + your config file manually. + + * Irssi will now attempt STARTTLS if advertised (#1170, #1312, + an#19) + + Use -disallow_starttls if you absolutely do not want this + + In order to check for a STARTTLS advertisement, Irssi will + now wait for a response (even an error) to CAP LS 302. If + your bouncer/server does not want to communicate before + receiving USER/PASS at all, use -nocap to disable the CAP + check. + + * Channel sync requests (WHO, MODE) are now sent "later" than + user commands. This should improve responsiveness to user + commands in the autojoin phase (an#26, an#32, an#33) + * Irssi is now using full paths in #include directives and + consequently does not add all directories to the include + path anymore (#1040) + * The Build System was ported to Meson (#1064, #1065, #1068, + #1071, #1072, #1073, #1074, #1075, #1084, #1085, #1118, #1166, + #1223, #1224, #1245, #1313, #1314, an#31) + * Scriptassist was changed to use a YAML database (#1163) + + It will tell you when you need to update your setting + + * /BIND shows all partial matches (#1155) + * Cleanup of unused functions (#1017, #1132, #1145, #1182, + #1246, #1264) + + Functions removed: + + NET_CALLBACK + NET_HOST_CALLBACK + RESOLVED_NAME_REC + net_gethostbyaddr_nonblock + net_connect_nonblock + [ SIMPLE_THREAD_REC, simple_init, simple_readpipe ] + hash_save_key + + Functions deprecated: + + dec2octal + g_timeval_cmp + get_timeval_diff + + Function names corrected: + + g_input -> i_input + g_istr -> i_istr + g_io_channel -> i_io_channel + g_hash_free_value -> i_hash_free_value + remove g_free_true + gslist -> i_slist + glog_func -> i_log_func + glist -> i_list + + If multi-version compatibility is desired, module authors + can find an example of backwards compatible code in + cdidier/irssi-xmpp#55 + + + Add MSGLEVEL_HIDDEN to Perl (#1044) + + Add $view->set_hidden_level and $view->remove_lines_by_level + to Perl (#1026) + + Add a /SET scrollback_max_age setting (#1022). By Heikki + Orsila + + Add /SET actlist_prefer_window_name (#1025) + + Add -window option to /CAT (#1023, #1159) + + Add an option to list specific sections with + + /SET -section lookandfeel + + (#1048) + + + Add support for IRCv3 CAP LS 302 (#1091) + + Add a new "print noformat" signal that goes together with + "print format" (#1088, #1192) + + Add support for IRCv3 extended-join. /SET show_extended_join + to enable (#1097, #1107, #1124) + + There are two new /FORMATs, join_extended and + join_extended_account, that theme writers need to take into + account if desired. + + + Add support for IRCv3 setname (#1093, #1104, #1254, GL#33) + + Add support for IRCv3 account-notify (#1100, #1098, GL#33, + #1105, #1131). Credit to oss-fuzz + /SET show_account_notify to enable + + Add support for IRCv3 invite-notify (#1094) + + Add support for receiving IRCv3 message-tags (#576, #1090) + + Add support for sending IRCv3 message-tags (#1092, an#34) + + Enable the znc.in/self-message CAP by default (#1123) + + Add support for IRCv3 away-notify. /SET away_notify_public + to enable (#1099, GL#33, #1105) + + Add support for IRCv3 chghost (#1096, GL#33, #1105) + + For servers with broken chghost implementation that fill the + status window with host changed messages, one may add "quote + cap req -chghost" to the -autosendcmd or, if the host change + messages are entirely undesired, "/format -delete + host_changed" + + + Add support for IRCv3 server-time. /SET show_server_time to + enable (#1108) + + Add support for logging IRCv3 server-time. + /SET log_server_time to disable (#1318, an#16) + + Add IRCv3 features to signals.txt (#1111) + + In particular, "message join" now takes 2 additional + arguments, script and module authors must beware of this + change. + + + Show the unignore time in /IGNORE output (#1158, #1161) + + Add /SET quit_on_hup to make the behaviour of SIGHUP + configurable (#828, #1169). By Pinguin1234 + + Support numeric 489 as ERR_SECUREONLYCHAN (#1193, #1196). By + Michael Hansen + + Improve support for building Irssi in Termux-Android with + Meson (#1199) + + Add usermode key to Irssi::Irc::Chatnet in Perl (#1288). By + Jessica Sophie Porter + + Add format_string_expand and format_string_unexpand + functions to Perl (#1286) + + Add ...->format_create_dest(...)->printformat("format", + args...) and ...->printformat_module("module", "format", + args...) methods to Perl (#1284) + + You can avoid any CORE::GLOBAL::caller hacks using the + printformat_module method, especially sind that hack was not + safe during signal emissions + + + Add tracking of user accounts in the channel nicklist using + WHOX on join (#1250) + + Add auto-loading of the Perl and otr module from /SET + autoload_modules (#1295) + + Add /IGNORE ... NOHILIGHT to ignore some hilights (#1260) + + Do not beep on hidden lines with /SET beep_msg_level + ... -HIDDEN (#1259) + + Added /CS, /MS, /NS, and /OS aliases to the default config + (#1316). By Mathis Beer + + Allow -tls_ca{file,path} '' to unset an argument (#730, + #1060, an#30) + + Add a "server outgoing modify" signal to intercept outgoing + messages (#1148, #1151, an#15, an#43). Original by + JustAnotherArchivist + - remove some hard-coded 510 byte assumptions (#1086) + - Several fixes for error checks in SSL (#944, #1037, #943, + #1036). Reported by Chi Li + - Wrong variable tested in mask_match (#902, #1035) + - Fix bug where irssi-proxy with `?'-port would not reconnect + (#1041) + - Allow shrinking of /SET rawlog_lines (#957, #1020). By + Marcus "Teschi" Prinz + - Fix /WINDOW BALANCE warning (#1054) + - fix overflow when first command history entry expires + (#1070) + - begin modularising IRC module (#1067, #1112, #1113) + - fix some memory leaks in /DCC RESUME and settings_add + (#1077). By Zero King + - fix cut-off text with theme_indent module and /SET + indent_always OFF (#1078) + - fix the cap_queue order (#1095) + - add reference counted strings (#1089) + - Fix irc_op_public messages not triggering hilights (#354, + #891, #1129). By Dan Collins + - Fix /IGNORE not setting the right level in irc_op_public + messages (#1280). Credit to oss-fuzz + - Fix GTimeVal deprecation (#1141, #1144, #1145, #1350, an#44) + + If multi-version compatibility is desired, module authors + can find an example of backwards compatible code in + cdidier/irssi-xmpp#53 + + - Fix /IGNORE ... MODES NO_ACT not working (#1164) + - Deprecated -ssl* options are hidden from tab completion + (#1171) + - Make /SET actlist_sort a choice type (#1198) + - Fix crash from self-unloading script (#1206). By Thomas + Stagner + - Fix crash during Perl signal emission (#1233, #1234) + - Fix a case where empty lines or comments inside channels or + servers in the config would confuse Irssi (#1062, #1242, + #1243) + - Fix reported freezing in DCC GET on slow disks (#159, #1271) + - Fix message-tags parsing (#1274, #1275). Credit to oss-fuzz + - Fail redirects when receiving numeric 263 (RPL_TRYAGAIN) in + response to /WHO (#1283) + - Some updates to .gitignore (#1302). By Rene Kita + - Fix build on operating systems with X/Open Curses, version 2 + (#1305, #1308). By Nia Alarie (Regression introduced with + #1290, alternative fix for Irssi 1.2.3 no-term.h.patch) + - Fix otr module not using g_strndup, e.g. on Solaris 10 + (#1315). By Claes Nästén + - Fix cursor getting stuck for auto completions that changes + case (#1176, #1322, an#8). By ffrogman + - Restore operation of tag/* in /SET activity_hide_targets + (#1337, an#11) nb. the ::all syntax was working in Irssi 1.1 + and 1.2 (and continues to work) + - Fix /SERVER ADD -matrix -network my_matrix_network + (an#12). By Andrej Kacian + - Fix /SERVER ADD creating duplicated entries in the config + file (#1317, an#22, an#41) + - Fix critical when SASL user is set and SASL password is + empty (#1325, an#21) + - Misc fixes (#1106, #1141, #1272, #1297, an#35) + - Fuzz fixes (#1116, #1117, #1119, #1125, #1126, an#20) + - Build system fixes (#1101, #1102, #1069, #1140, #1181, #1253) + - Sync docs and scripts (an#39) + - Text and Help updates + - add -tls_* options to manual (#1029, #1030). By Jacob + V. Rasmussen + - missing targets in /MSG (#1032) + - wrong parameter in /ECHO (#1024) + - Spelling in OTR (#1047). By David Gall + - Clarify statusbar priority (#1049). By Marius Gedminas + - Document get_irssi_dir in Perl (#1051, #1052). By Alex + Shafer + - typo in /HILIGHT help (#1081). By DFrostByte + - improved clarity of your_nick_owned (#1138). By Mike Quin + - Update some URLs to https (#1163) + - Add documentation for escaping some characters (#1329, + #1330, an#9). By Guntbert Reiter + - Fix some typos (#1336, an#10). By Francis Mteo + - Document $abiversion and parse_special (an#38). By bw1 + - Infrastructure updates: + - Support for Github Actions (#1039, #1103, #1160, #1212, + #1231, #1252, #1261, an#40) + - Run clang-format on pull requests (#1172, #1173, #1184, + #1230, #1247, #1287) + - Run abidiff on pull requests (#1179, #1195) + - Test CI-Fuzz (#1279, #1304, an#17) v1.2.3 2021-04-11 The Irssi team - Fix the compilation of utf8proc (#1021) @@ -40,7 +326,7 @@ v1.2.3 2021-04-11 The Irssi team v1.2.2 2019-08-29 The Irssi team - Fix a use after free issue when receiving IRCv3 CAP - information from the server (GL#34) + information from the server (GL#34, GL!35) - Fix a crash during startup when windows weren't fully initialised yet (#1114, bdo#935813) diff --git a/README.md b/README.md index d1232764..ea4b817b 100644 --- a/README.md +++ b/README.md @@ -1,11 +1,10 @@ -# [Irssi](https://irssi.org/) +# [Irssi](https://irssi.org) ![Build Status](https://github.com/irssi/irssi/workflows/Check%20Irssi/badge.svg?branch=master) -Irssi is a modular chat client that is most commonly known for its -text mode user interface, but 80% of the code isn't text mode -specific. Irssi comes with IRC support built in, and there are -third party [ICB](https://github.com/jperkin/irssi-icb), +Irssi is a modular text mode chat client. It comes with IRC support +built in, and there are third party +[ICB](https://github.com/jperkin/irssi-icb), [SILC](http://www.silcnet.org/), [XMPP](http://cybione.org/~irssi-xmpp/) (Jabber), [PSYC](http://about.psyc.eu/Irssyc) and @@ -34,8 +33,8 @@ ninja -C Build && sudo ninja -C Build install ``` tar xJf irssi-*.tar.xz cd irssi-* -./configure -make && sudo make install +meson Build +ninja -C Build && sudo ninja -C Build install ``` ### Requirements diff --git a/configure.ac b/configure.ac index 3a9e7bd6..c91bde95 100644 --- a/configure.ac +++ b/configure.ac @@ -1,4 +1,4 @@ -AC_INIT(irssi, 1.3-head) +AC_INIT(irssi, 1.3.2) AC_CONFIG_SRCDIR([src]) AC_CONFIG_AUX_DIR(build-aux) AC_PREREQ(2.50) diff --git a/docs/faq.html b/docs/faq.html index 7c17f45d..50b404a0 100644 --- a/docs/faq.html +++ b/docs/faq.html @@ -2,7 +2,7 @@

Frequently Asked Questions

Q: Why doesn’t irssi display colors even when ircii etc. displays them?

-

A: They force ANSI colors even if terminal doesn’t support them. By default, irssi uses colors only if terminfo/termcap so says. The correct way to fix this would be to change your TERM environment to a value where colors work, like xterm-color or color_xterm (eg. TERM=xterm-color irssi). If this doesn’t help, then use the evil way of /SET term_force_colors ON.

+

A: They force ANSI colors even if terminal doesn’t support them. By default, irssi uses colors only if terminfo/termcap so says. The correct way to fix this would be to change your TERM environment to a value where colors work, like xterm-256color or color_xterm (eg. TERM=xterm-256color irssi). If this doesn’t help, then use the evil way of /SET term_force_colors ON.

Q: How do I easily write text to channel that starts with ‘/’ character?

@@ -54,7 +54,7 @@

Q: Will there be /DETACH-like feature?

-

A: tmux, screen and dtach can be used to do it just fine.

+

A: tmux, screen and dtach can be used to do it just fine.

Q: How do I run scripts automatically at startup?

diff --git a/docs/faq.txt b/docs/faq.txt index 0d0b5f46..0fcc156a 100644 --- a/docs/faq.txt +++ b/docs/faq.txt @@ -4,8 +4,8 @@ Q: Why doesn’t irssi display colors even when ircii etc. displays them? A: They force ANSI colors even if terminal doesn’t support them. By default, irssi uses colors only if terminfo/termcap so says. The correct way to fix this would be to change your TERM environment to a value where colors work, like - xterm-color or color_xterm (eg. TERM=xterm-color irssi). If this doesn’t help, - then use the evil way of /SET term_force_colors ON. + xterm-256color or color_xterm (eg. TERM=xterm-256color irssi). If this doesn’t + help, then use the evil way of /SET term_force_colors ON. Q: How do I easily write text to channel that starts with ‘/’ character? A: / /text @@ -119,6 +119,6 @@ A: Check [6]here [1] https://github.com/irssi-import/xirssi [2] https://tmux.github.io/ [3] https://www.gnu.org/software/screen/screen.html - [4] http://dtach.sf.net/ + [4] https://sourceforge.net/projects/dtach/ [5] https://dgl.cx/irssi/hack-whois-in-current-window.pl [6] https://irssi.org/assets/irssi.wav diff --git a/docs/help/in/admin.in b/docs/help/in/admin.in index cfe66eba..acb6e1ae 100644 --- a/docs/help/in/admin.in +++ b/docs/help/in/admin.in @@ -15,7 +15,7 @@ %9Examples:%9 /ADMIN - /ADMIN irc.example.com + /ADMIN irc.libera.chat /ADMIN mike %9See also:%9 INFO diff --git a/docs/help/in/channel.in b/docs/help/in/channel.in index 0e15b6d5..d9be8cf5 100644 --- a/docs/help/in/channel.in +++ b/docs/help/in/channel.in @@ -33,12 +33,12 @@ /CHANNEL /CHANNEL LIST - /CHANNEL ADD -auto #irssi ExampleNet + /CHANNEL ADD -auto #irssi liberachat /CHANNEL ADD -auto #basementcat Quakenet secret_lair - /CHANNEL ADD -auto -bots '*!@*.irssi.org *!bot@irssi.org' -botcmd 'msg $0 op WzerTrzq' #hideout ExampleNet + /CHANNEL ADD -auto -bots '*!@*.irssi.org *!bot@irssi.org' -botcmd 'msg $0 op WzerTrzq' #hideout liberachat /CHANNEL ADD -auto -bots 'Q!TheQBot@CServe.quakenet.org' -botcmd '^MSG Q op #irssi' #irssi Quakenet - /CHANNEL MODIFY -noauto #irssi ExampleNet - /CHANNEL REMOVE #hideout ExampleNet + /CHANNEL MODIFY -noauto #irssi liberachat + /CHANNEL REMOVE #hideout liberachat %9Special Example:%9 diff --git a/docs/help/in/connect.in b/docs/help/in/connect.in index 4d59dde1..d4375eec 100644 --- a/docs/help/in/connect.in +++ b/docs/help/in/connect.in @@ -34,9 +34,9 @@ %9Examples:%9 - /CONNECT ExampleNet - /CONNECT -6 ExampleNet - /CONNECT -4 -! -host staff.irssi.org -network ExampleNet irc.example.com + /CONNECT liberachat + /CONNECT -6 liberachat + /CONNECT -4 -! -host staff.irssi.org -network liberachat irc.libera.chat /CONNECT irc.irssi.org 6667 WzerT8zq mike %9See also:%9 DISCONNECT, RMRECONNS, SERVER diff --git a/docs/help/in/disconnect.in b/docs/help/in/disconnect.in index 88772e1e..c53b1e60 100644 --- a/docs/help/in/disconnect.in +++ b/docs/help/in/disconnect.in @@ -18,7 +18,7 @@ %9Examples:%9 - /DISCONNECT ExampleNet I'm off for today, take care! + /DISCONNECT liberachat I'm off for today, take care! /DISCONNECT * Vacation time :D /DISCONNECT diff --git a/docs/help/in/eval.in b/docs/help/in/eval.in index b2d4b625..b0c904b4 100644 --- a/docs/help/in/eval.in +++ b/docs/help/in/eval.in @@ -11,11 +11,17 @@ Evaluates the given commands and executes them; you can use internal variables and separate multiple commands by using the ';' character. + If the command contains a string with '$', '\' or ';' those characters + need to be escaped: + '$' -> '$$' + '\' -> '\\' (or even '\\\\', depending on where they are used) + ';' -> '\;' %9Examples:%9 /EVAL echo I am connected to ${S} on ${chatnet} as ${N} /EVAL echo My user privileges are +${usermode}; echo Let's party! + to print '1;2$3\4': /EVAL echo 1\;2$$3\\4 %9References:%9 diff --git a/docs/help/in/info.in b/docs/help/in/info.in index 41578501..d8d8cfc9 100644 --- a/docs/help/in/info.in +++ b/docs/help/in/info.in @@ -15,7 +15,7 @@ %9Examples:%9 /INFO - /INFO irc.example.com + /INFO irc.libera.chat %9See also:%9 ADMIN diff --git a/docs/help/in/join.in b/docs/help/in/join.in index 55190267..adf7158e 100644 --- a/docs/help/in/join.in +++ b/docs/help/in/join.in @@ -20,7 +20,7 @@ /JOIN #irssi /JOIN #basementcat secret_lair /JOIN -invite - /JOIN -ExampleNet #github,#example,#irssi + /JOIN -liberachat #github,#libera,#irssi %9See also:%9 KICK, PART diff --git a/docs/help/in/knock.in b/docs/help/in/knock.in index 3e2fdbdb..ce8f9aa0 100644 --- a/docs/help/in/knock.in +++ b/docs/help/in/knock.in @@ -23,7 +23,7 @@ %9Examples:%9 /KNOCK #irssi - /KNOCK #example + /KNOCK #libera /KNOCK #github %9See also:%9 INVITE, JOIN diff --git a/docs/help/in/log.in b/docs/help/in/log.in index dfe26e30..3ca8782c 100644 --- a/docs/help/in/log.in +++ b/docs/help/in/log.in @@ -33,10 +33,10 @@ %9Examples:%9 /LOG OPEN -targets mike ~/irclogs/mike.log MSGS - /LOG OPEN -targets #irssi ~/irclogs/ExampleNet/irssi-%%Y-%%m-%%d - /LOG CLOSE ~/irclogs/ExampleNet/irssi-%%Y-%%m-%%d - /LOG STOP ~/irclogs/ExampleNet/irssi-%%Y-%%m-%%d - /LOG START ~/irclogs/ExampleNet/irssi-%%Y-%%m-%%d + /LOG OPEN -targets #irssi ~/irclogs/liberachat/irssi-%%Y-%%m-%%d + /LOG CLOSE ~/irclogs/liberachat/irssi-%%Y-%%m-%%d + /LOG STOP ~/irclogs/liberachat/irssi-%%Y-%%m-%%d + /LOG START ~/irclogs/liberachat/irssi-%%Y-%%m-%%d /SET autolog ON diff --git a/docs/help/in/motd.in b/docs/help/in/motd.in index ee1233b2..6e86681e 100644 --- a/docs/help/in/motd.in +++ b/docs/help/in/motd.in @@ -15,7 +15,7 @@ %9Examples:%9 /MOTD - /MOTD irc.example.com + /MOTD irc.libera.chat /MOTD bob %9See also:%9 ADMIN, INFO, LINKS, MAP diff --git a/docs/help/in/names.in b/docs/help/in/names.in index deccea40..974b845f 100644 --- a/docs/help/in/names.in +++ b/docs/help/in/names.in @@ -21,7 +21,7 @@ %9Examples:%9 /NAMES -ops - /NAMES -voices #irssi,#example + /NAMES -voices #irssi,#libera %9See also:%9 JOIN, PART, WHO, WHOIS diff --git a/docs/help/in/nctcp.in b/docs/help/in/nctcp.in index 68d789d6..9f516730 100644 --- a/docs/help/in/nctcp.in +++ b/docs/help/in/nctcp.in @@ -15,7 +15,7 @@ %9Examples:%9 /NCTCP #irssi VERSION King of the Jungle v1.0 - /NCTCP bob,#example USERINFO I am bob :p + /NCTCP bob,#libera USERINFO I am bob :p %9See also:%9 CTCP diff --git a/docs/help/in/network.in b/docs/help/in/network.in index 183fd5b5..788c1c65 100644 --- a/docs/help/in/network.in +++ b/docs/help/in/network.in @@ -18,7 +18,8 @@ -usermode: Specifies the user modes to set on yourself. -autosendcmd: Specifies the commands, separated by the ';' character, and enclosed within two "'" characters, to perform after - connecting. + connecting. + (Some characters need to be escaped - see /help eval) -querychans: Specifies the maximum number of channels to put in one MODE or WHO command when synchronizing. -whois: Specifies the maximum number of nicknames in one WHOIS @@ -59,11 +60,11 @@ %9Examples:%9 /NETWORK ADD -usermode +giw EFnet - /NETWORK ADD -usermode +iw -nick mike -realname 'The one and only mike!' -host staff.irssi.org ExampleNet - /NETWORK ADD -autosendcmd '^MSG NickServ identify WzerT8zq' ExampleNet + /NETWORK ADD -usermode +iw -nick mike -realname 'The one and only mike!' -host staff.irssi.org liberachat + /NETWORK ADD -autosendcmd '^MSG NickServ identify WzerT8zq' liberachat /NETWORK ADD -autosendcmd '^MSG Q@CServe.quakenet.org AUTH mike WzerT8zq; WAIT 2000; OPER mike WzerT8zq; WAIT 2000; MODE mike +kXP' Quakenet /NETWORK MODIFY -usermode +gi EFnet - /NETWORK REMOVE ExampleNet + /NETWORK REMOVE liberachat %9See also:%9 CHANNEL, CONNECT, SERVER diff --git a/docs/help/in/otr.in b/docs/help/in/otr.in index f76a2d53..fcfcd875 100644 --- a/docs/help/in/otr.in +++ b/docs/help/in/otr.in @@ -51,7 +51,7 @@ GENKEY This process is done in a background worker and can take an arbitrary amount of time. The completion is checked when another irssi event is - catched. + caught. HELP Print this help. diff --git a/docs/help/in/part.in b/docs/help/in/part.in index 51be59bd..f89769cc 100644 --- a/docs/help/in/part.in +++ b/docs/help/in/part.in @@ -14,7 +14,7 @@ %9Examples:%9 /PART #irssi - /PART #example,#irssi + /PART #libera,#irssi %9See also:%9 JOIN, KICK diff --git a/docs/help/in/query.in b/docs/help/in/query.in index 85f2556e..a34f85e8 100644 --- a/docs/help/in/query.in +++ b/docs/help/in/query.in @@ -17,8 +17,8 @@ %9Examples:%9 /QUERY mike - /QUERY -ExampleNet bob - /QUERY -ExampleNet -window sarah + /QUERY -liberachat bob + /QUERY -liberachat -window sarah %9See also:%9 MSG, UNQUERY, WINDOW diff --git a/docs/help/in/recode.in b/docs/help/in/recode.in index c34822de..760c66cd 100644 --- a/docs/help/in/recode.in +++ b/docs/help/in/recode.in @@ -22,7 +22,7 @@ %9Examples:%9 /RECODE - /RECODE ADD ExampleNet/mike utf-8 + /RECODE ADD liberachat/mike utf-8 /RECODE ADD #korea euc-kr /RECODE REMOVE #korea diff --git a/docs/help/in/reconnect.in b/docs/help/in/reconnect.in index f2148c90..87beb95a 100644 --- a/docs/help/in/reconnect.in +++ b/docs/help/in/reconnect.in @@ -15,7 +15,7 @@ %9Examples:%9 /RECONNECT - /RECONNECT ExampleNet + /RECONNECT liberachat /RECONNECT EFnet BRB :) %9See also:%9 CONNECT, DISCONNECT, NETWORK, RMRECONNS, SERVER diff --git a/docs/help/in/server.in b/docs/help/in/server.in index 8a4d8887..84294af6 100644 --- a/docs/help/in/server.in +++ b/docs/help/in/server.in @@ -5,7 +5,7 @@ %9Parameters:%9 - LIST: Displays the list of servers you are connected to. + LIST: Displays the list of servers you have configured. CONNECT: Connects to the given server. ADD: Adds a server to your configuration. MODIFY: Modifies a server in your configuration. @@ -51,25 +51,24 @@ When using the ADD parameter on a server that already exists, the configuration will be merged with each other. - When using the command without any of the given parameters, it will - connect to the specified server; the server in the active window will be - disconnected unless you prepend the server with the '+' character; the same - method is applicable to the CONNECT parameter. + When using the CONNECT parameter, it will connect to the specified + server; the server in the active window will be disconnected + unless you prepend the server with the '+' character. Specify '-' as password to remove a server password %9Examples:%9 /SERVER - /SERVER CONNECT irc.example.com - /SERVER CONNECT +irc.example.com - /SERVER ADD -network ExampleNet -noautosendcmd irc.example.com - /SERVER ADD -! -auto -host staff.irssi.org -4 -network ExampleNet -noproxy irc.example.com 6667 - /SERVER MODIFY -network ExampleNet -noauto irc.example.com - /SERVER MODIFY -network ExampleNet irc.example.com 6697 - - /SERVER REMOVE irc.example.com 6667 ExampleNet + /SERVER CONNECT irc.libera.chat + /SERVER CONNECT +irc.libera.chat + /SERVER ADD -network liberachat -noautosendcmd irc.libera.chat + /SERVER ADD -! -auto -host staff.irssi.org -4 -network liberachat -noproxy irc.libera.chat 6667 + /SERVER MODIFY -network liberachat -noauto irc.libera.chat + /SERVER MODIFY -network liberachat irc.libera.chat 6697 - + /SERVER REMOVE irc.libera.chat 6667 liberachat /SERVER PURGE - /SERVER PURGE irc.example.com + /SERVER PURGE irc.libera.chat %9See also:%9 CHANNEL, CONNECT, DISCONNECT, NETWORK, RECONNECT, RMRECONNS diff --git a/docs/help/in/window.in b/docs/help/in/window.in index aa133766..9a7a7b10 100644 --- a/docs/help/in/window.in +++ b/docs/help/in/window.in @@ -33,12 +33,12 @@ THEME: %|Applies or removes a per-window theme. GROW: %|Increase the size of the active split window by the specified number of lines. SHRINK: %|Decrease the size of the active split window by the specified number of lines. - SIZE: %|Set the current split window size to the specified numer of lines. + SIZE: %|Set the current split window size to the specified number of lines. BALANCE: %|Balance the heights of all split windows. HIDE: %|Hides the current split window, or the split window specified by number or item name. SHOW: %|Show the window specified by number or item name as a new split windows. It is made sticky when autostick_split_windows is turned on. UP: %|Set the split window left or above the current one active. At the top, wraps to the bottom. - DOWN: %|Set the split window right or below the current one active. At the bottom, wraps teft. + DOWN: %|Set the split window right or below the current one active. At the bottom, wraps left. LEFT: %|Go to the previous window numerically that is part of the current sticky group (or not part of any sticky group). RIGHT: %|Go to the next window numerically that is part of the current sticky group (or not part of any sticky group). STICK: %|Make the currently active window sticky, or stick the window specified by number to the currently visible split window. Or turn off stickyness of the currently active window or the window specified by number. diff --git a/docs/manual.txt b/docs/manual.txt index 29065feb..5f0eac51 100644 --- a/docs/manual.txt +++ b/docs/manual.txt @@ -349,7 +349,7 @@ after connecting to the network. This is useful for automatically identifying yourself to NickServ, for example - /NETWORK ADD -autosendcmd "/^msg NickServ identify secret" ExampleNet + /NETWORK ADD -autosendcmd "/^msg NickServ identify secret" liberachat /NETWORK REMOVE diff --git a/docs/proxy.txt b/docs/proxy.txt index 9ed7ecdb..172770e8 100644 --- a/docs/proxy.txt +++ b/docs/proxy.txt @@ -24,7 +24,7 @@ You really should set some password for the proxy with: Then you'll need to configure the ports/ircnets the proxy listens in, something like: - /SET irssiproxy_ports IRCnet=2777 EFNet=2778 ExampleNet=2779 + /SET irssiproxy_ports IRCnet=2777 EFNet=2778 liberachat=2779 There we have 3 different irc networks answering in 3 ports. Note that you'll have to make the correct /IRCNET ADD and /SERVER ADD commands to diff --git a/docs/signals.txt b/docs/signals.txt index 1eefc7e0..da72ef57 100644 --- a/docs/signals.txt +++ b/docs/signals.txt @@ -151,6 +151,7 @@ irc.c: "whois default event", SERVER_REC, char *args, char *sender_nick, char *sender_address "server incoming", SERVER_REC, char *data + "server outgoing modify", SERVER_REC, GString *data, int crlf (for perl parser..) "redir ", SERVER_REC, char *args, char *sender_nick, char *sender_address @@ -358,6 +359,9 @@ gui-printtext.c: textbuffer-view.c "gui textbuffer line removed", TEXTBUFFER_VIEW_REC *view, LINE_REC *line, LINE_REC *prev_line +textbuffer-formats.c + "gui render line text", TEXT_DEST_REC, GString *str, LINE_INFO_META_REC + Perl ---- diff --git a/docs/startup-HOWTO.html b/docs/startup-HOWTO.html index ecbeb467..696dea4d 100644 --- a/docs/startup-HOWTO.html +++ b/docs/startup-HOWTO.html @@ -68,7 +68,7 @@

And to connect to one of those networks and join a channel:

-
/CONNECT ExampleNet
+
/CONNECT liberachat
 /JOIN #irssi
 
@@ -94,7 +94,7 @@

If you have irssi 0.8.18 or higher and the irc network supports it, you can use SASL instead of nickserv, which is more reliable:

-
/NETWORK ADD -sasl_username yourname -sasl_password yourpassword -sasl_mechanism PLAIN ExampleNet
+
/NETWORK ADD -sasl_username yourname -sasl_password yourpassword -sasl_mechanism PLAIN liberachat
 

These commands have many more options, see their help for details:

@@ -226,7 +226,7 @@ Ctrl-P, Ctrl-N - Jump to previous / next window

And finally channels:

-
/CHANNEL ADD -auto -bots *!*user@host -botcmd "/^msg $0 op pass" #irssi efnet
+
/CHANNEL ADD -auto -bots *!*bot@host.org -botcmd "/^msg $0 op pass" #irssi efnet
 /CHANNEL ADD -auto #secret IRCnet password
 
@@ -395,7 +395,7 @@ Ctrl-X - set the next server in list active

/HELP bind tells pretty much everything there is to know about keyboard bindings. However, there’s the problem of how to bind some non-standard keys. They might differ a bit with each terminal, so you’ll need to find out what exactly the keypress produces. Easiest way to check that would be to see what it prints in cat. Here’s an example for pressing F1 key:

-
 [user@host] ~% cat
+
 [cras@hurina] ~% cat
  ^[OP
 
diff --git a/docs/startup-HOWTO.txt b/docs/startup-HOWTO.txt index 84397f33..90d278de 100644 --- a/docs/startup-HOWTO.txt +++ b/docs/startup-HOWTO.txt @@ -43,7 +43,7 @@ has a few predefined networks, to list them: And to connect to one of those networks and join a channel: -/CONNECT LiberaChat +/CONNECT liberachat /JOIN #irssi To add more networks: @@ -67,7 +67,7 @@ wait for 2 seconds before joining channels: If you have irssi 0.8.18 or higher and the irc network supports it, you can use SASL instead of nickserv, which is more reliable: -/NETWORK ADD -sasl_username yourname -sasl_password yourpassword -sasl_mechanism PLAIN ExampleNet +/NETWORK ADD -sasl_username yourname -sasl_password yourpassword -sasl_mechanism PLAIN liberachat These commands have many more options, see their help for details: @@ -218,7 +218,7 @@ IRC network, other servers are automatically connected in same network if the And finally channels: -/CHANNEL ADD -auto -bots *!*user@host -botcmd "/^msg $0 op pass" #irssi efnet +/CHANNEL ADD -auto -bots *!*bot@host.org -botcmd "/^msg $0 op pass" #irssi efnet /CHANNEL ADD -auto #secret IRCnet password -bots and -botcmd should be the only ones needing a bit of explaining. They’re @@ -442,7 +442,7 @@ They might differ a bit with each terminal, so you’ll need to find out what exactly the keypress produces. Easiest way to check that would be to see what it prints in cat. Here’s an example for pressing F1 key: - [user@host] ~% cat + [cras@hurina] ~% cat ^[OP So in irssi you would use /BIND ^[OP /ECHO F1 pressed. If you use multiple diff --git a/irssi.conf b/irssi.conf index 9faa8973..21c3ba4c 100644 --- a/irssi.conf +++ b/irssi.conf @@ -1,19 +1,18 @@ servers = ( - { address = "irc.dal.net"; chatnet = "DALnet"; port = "6667"; }, - { address = "ssl.efnet.org"; chatnet = "EFNet"; port = "9999"; use_tls = "yes"; tls_verify = "no"; }, - { address = "irc.esper.net"; chatnet = "EsperNet"; port = "6697"; use_tls = "yes"; tls_verify = "yes"; }, - { address = "chat.freenode.net"; chatnet = "Freenode"; port = "6697"; use_tls = "yes"; tls_verify = "yes"; }, - { address = "irc.gamesurge.net"; chatnet = "GameSurge"; port = "6667"; }, - { address = "ssl.ircnet.ovh"; chatnet = "IRCnet"; port = "6697"; use_tls = "yes"; tls_verify = "yes"; }, - { address = "open.ircnet.net"; chatnet = "IRCnet"; port = "6667"; }, - { address = "irc.ircsource.net"; chatnet = "IRCSource"; port = "6667"; }, - { address = "irc.libera.chat"; chatnet = "LiberaChat"; port = "6697"; use_tls = "yes"; tls_verify = "yes"; }, - { address = "irc.netfuze.net"; chatnet = "NetFuze"; port = "6667"; }, - { address = "irc.oftc.net"; chatnet = "OFTC"; port = "6697"; use_tls = "yes"; tls_verify = "yes"; }, - { address = "irc.quakenet.org"; chatnet = "QuakeNet"; port = "6667"; }, - { address = "irc.rizon.net"; chatnet = "Rizon"; port = "6697"; use_tls = "yes"; tls_verify = "yes"; }, - { address = "silc.silcnet.org"; chatnet = "SILC"; port = "706"; }, - { address = "irc.undernet.org"; chatnet = "Undernet"; port = "6667"; } + { address = "irc.dal.net"; chatnet = "DALnet"; port = "6667"; }, + { address = "ssl.efnet.org"; chatnet = "EFNet"; port = "9999"; use_tls = "yes"; tls_verify = "no"; }, + { address = "irc.esper.net"; chatnet = "EsperNet"; port = "6697"; use_tls = "yes"; tls_verify = "yes"; }, + { address = "irc.libera.chat"; chatnet = "liberachat";port = "6697"; use_tls = "yes"; tls_verify = "yes"; }, + { address = "irc.gamesurge.net"; chatnet = "GameSurge"; port = "6667"; }, + { address = "ssl.ircnet.ovh"; chatnet = "IRCnet"; port = "6697"; use_tls = "yes"; tls_verify = "yes"; }, + { address = "open.ircnet.net"; chatnet = "IRCnet"; port = "6667"; }, + { address = "irc.ircsource.net"; chatnet = "IRCSource"; port = "6667"; }, + { address = "irc.netfuze.net"; chatnet = "NetFuze"; port = "6667"; }, + { address = "irc.oftc.net"; chatnet = "OFTC"; port = "6697"; use_tls = "yes"; tls_verify = "yes"; }, + { address = "irc.quakenet.org"; chatnet = "QuakeNet"; port = "6667"; }, + { address = "irc.rizon.net"; chatnet = "Rizon"; port = "6697"; use_tls = "yes"; tls_verify = "yes"; }, + { address = "silc.silcnet.org"; chatnet = "SILC"; port = "706"; }, + { address = "irc.undernet.org"; chatnet = "Undernet"; port = "6667"; } ); chatnets = { @@ -35,7 +34,7 @@ chatnets = { max_msgs = "4"; max_whois = "1"; }; - Freenode = { + liberachat = { type = "IRC"; max_kicks = "1"; max_msgs = "4"; @@ -59,12 +58,6 @@ chatnets = { max_msgs = "4"; max_whois = "1"; }; - LiberaChat = { - type = "IRC"; - max_kicks = "1"; - max_msgs = "4"; - max_whois = "1"; - }; NetFuze = { type = "IRC"; max_kicks = "1"; @@ -101,16 +94,15 @@ chatnets = { }; channels = ( - { name = "#lobby"; chatnet = "EsperNet"; autojoin = "No"; }, - { name = "#freenode"; chatnet = "Freenode"; autojoin = "No"; }, - { name = "#gamesurge"; chatnet = "GameSurge"; autojoin = "No"; }, - { name = "#irssi"; chatnet = "IRCNet"; autojoin = "No"; }, - { name = "#ircsource"; chatnet = "IRCSource"; autojoin = "No"; }, - { name = "#libera"; chatnet = "LiberaChat"; autojoin = "No"; }, - { name = "#irssi"; chatnet = "LiberaChat"; autojoin = "No"; }, - { name = "#netfuze"; chatnet = "NetFuze"; autojoin = "No"; }, - { name = "#oftc"; chatnet = "OFTC"; autojoin = "No"; }, - { name = "silc"; chatnet = "SILC"; autojoin = "No"; } + { name = "#lobby"; chatnet = "EsperNet"; autojoin = "No"; }, + { name = "#libera"; chatnet = "liberachat";autojoin = "No"; }, + { name = "#irssi"; chatnet = "liberachat";autojoin = "No"; }, + { name = "#gamesurge"; chatnet = "GameSurge"; autojoin = "No"; }, + { name = "#irssi"; chatnet = "IRCNet"; autojoin = "No"; }, + { name = "#ircsource"; chatnet = "IRCSource"; autojoin = "No"; }, + { name = "#netfuze"; chatnet = "NetFuze"; autojoin = "No"; }, + { name = "#oftc"; chatnet = "OFTC"; autojoin = "No"; }, + { name = "silc"; chatnet = "SILC"; autojoin = "No"; } ); aliases = { diff --git a/meson.build b/meson.build index 1a5182af..58052054 100644 --- a/meson.build +++ b/meson.build @@ -1,5 +1,5 @@ project('irssi', 'c', - version : '1.3-head', + version : '1.3.2', meson_version : '>=0.49', default_options : ['warning_level=1']) @@ -53,6 +53,8 @@ require_glib_internal = get_option('install-glib') == 'force' want_static_dependency = get_option('static-dependency') == 'yes' +package_version = get_option('PACKAGE_VERSION') != '' ? get_option('PACKAGE_VERSION') : meson.project_version() + chat_modules = ['irc'] run_command('mkdir', meson.current_build_dir() / incdir) @@ -273,7 +275,12 @@ endif dep += glib_dep dep += gmodule_dep -openssl_dep = dependency('openssl', static : want_static_dependency) +if glib_internal and want_static_dependency and want_fuzzer + openssl_proj = subproject('openssl', default_options : ['default_library=static', 'asm=disabled']) + openssl_dep = openssl_proj.get_variable('openssl_dep') +else + openssl_dep = dependency('openssl', static : want_static_dependency) +endif dep += openssl_dep ############ @@ -535,7 +542,7 @@ foreach h : headers endforeach conf.set('HAVE_LIBUTF8PROC', have_libutf8proc) -conf.set_quoted('PACKAGE_VERSION', meson.project_version()) +conf.set_quoted('PACKAGE_VERSION', package_version) conf.set_quoted('PACKAGE_TARNAME', meson.project_name()) configure_file(output : 'irssi-config.h', @@ -576,7 +583,11 @@ pc_requires = [] if not glib_internal pc_requires += glib_dep endif -pc.generate(filebase : 'irssi-1', name : 'Irssi', description : 'Irssi chat client', requires : pc_requires) +pc.generate(filebase : 'irssi-1', + name : 'Irssi', + description : 'Irssi chat client', + version : package_version, + requires : pc_requires) ########### # irssi.1 # diff --git a/meson_options.txt b/meson_options.txt index 5dc9c514..1013166d 100644 --- a/meson_options.txt +++ b/meson_options.txt @@ -15,3 +15,4 @@ option('static-dependency', type : 'combo', description : 'Request static depen option('install-glib', type : 'combo', description : 'Download and install GLib for you', choices : ['no', 'yes', 'force']) option('docdir', type : 'string', description : 'Documentation directory') option('fhs-prefix', type : 'string', description : 'System prefix for Termux') +option('PACKAGE_VERSION', type : 'string', description : 'Override PACKAGE_VERSION in tarballs') diff --git a/scripts/quitmsg.pl b/scripts/quitmsg.pl index e289468c..102d9aa5 100644 --- a/scripts/quitmsg.pl +++ b/scripts/quitmsg.pl @@ -6,36 +6,27 @@ use Irssi::Irc; use strict; use vars qw($VERSION %IRSSI); -$VERSION = "1.00"; +$VERSION = "1.01"; %IRSSI = ( authors => 'Timo Sirainen', name => 'quitmsg', description => 'Random quit messages', license => 'Public Domain', - changed => 'Sun Mar 10 23:18 EET 2002' + changed => 'Mon Jul 22 20:00 EET 2020' ); -my $quitfile = glob "~/.irssi/irssi.quit"; +my $quitfile = Irssi::get_irssi_dir() . "/irssi.quit"; sub cmd_quit { my ($data, $server, $channel) = @_; return if ($data ne ""); + + open (my $fh, "<", $quitfile) || return; + my @lines = <$fh>; - open (f, "<", $quitfile) || return; - my $lines = 0; while() { $lines++; }; - - my $line = int(rand($lines))+1; - - my $quitmsg; - seek(f, 0, 0); $. = 0; - while() { - next if ($. != $line); - - chomp; - $quitmsg = $_; - last; - } - close(f); + my $quitmsg = $lines[int(rand(@lines))]; + chomp($quitmsg); + close($fh); foreach my $server (Irssi::servers) { $server->command("/disconnect ".$server->{tag}." $quitmsg"); diff --git a/scripts/scriptassist.pl b/scripts/scriptassist.pl index 536ef33a..cf02d57e 100644 --- a/scripts/scriptassist.pl +++ b/scripts/scriptassist.pl @@ -5,7 +5,7 @@ use strict; -our $VERSION = '2003020807'; +our $VERSION = '2020042700'; our %IRSSI = ( authors => 'Stefan \'tommie\' Tomanek', contact => 'stefan@pico.ruhr.de', @@ -23,12 +23,15 @@ use Irssi 20020324; use CPAN::Meta::YAML; use LWP::UserAgent; use POSIX; +use version; # GnuPG is not always needed $have_gpg = 0; eval "use GnuPG qw(:algo :trust);"; $have_gpg = 1 if not ($@); +my $irssi_version = qv(Irssi::parse_special('v$J') =~ s/-.*//r); + sub show_help { my $help = "scriptassist $VERSION /scriptassist check @@ -39,15 +42,15 @@ sub show_help { Search the script database /scriptassist info Display information about -".#/scriptassist ratings -# Retrieve the average ratings of the the scripts -#/scriptassist top -# Retrieve the first top rated scripts -"/scriptassist new +/scriptassist ratings + Retrieve the average ratings of the the scripts +/scriptassist top + Retrieve the first top rated scripts +/scriptassist new Display the newest scripts -".#/scriptassist rate