1
0
mirror of https://github.com/weechat/weechat.git synced 2026-06-25 12:26:40 +02:00

Compare commits

..

139 Commits

Author SHA1 Message Date
Sébastien Helleu 0ba30fc217 core: use function util_parse_longlong to parse date in command /print 2026-06-20 11:54:32 +02:00
Sébastien Helleu 9cf398afa1 core: use function util_parse_longlong to parse time in function hdata_set 2026-06-20 11:54:32 +02:00
Sébastien Helleu c150f67cf9 xfer: use util functions to parse integers 2026-06-20 11:33:47 +02:00
Sébastien Helleu 3df0d2d4d3 trigger: use util functions to parse integers 2026-06-20 11:32:44 +02:00
Sébastien Helleu 4d2d93a694 script: use util functions to parse integers 2026-06-20 11:31:33 +02:00
Sébastien Helleu cb0a9a3c42 relay: use util functions to parse integers 2026-06-20 11:27:42 +02:00
Sébastien Helleu 15f0cef09e api: use util functions to parse integers 2026-06-20 11:16:19 +02:00
Sébastien Helleu 49c4c2267a python: use function util_parse_int in API function hook_signal_send 2026-06-20 11:12:54 +02:00
Sébastien Helleu b6f4343d78 javascript: use function util_parse_int in API function hook_signal_send 2026-06-20 11:12:13 +02:00
Sébastien Helleu 0ae7ce165e irc: use util functions to parse integers 2026-06-20 11:09:20 +02:00
Sébastien Helleu 8d69194398 fset: use util functions to parse integers 2026-06-20 10:41:42 +02:00
Sébastien Helleu 054b7ff600 exec: use util functions to parse integers 2026-06-20 10:41:42 +02:00
Sébastien Helleu 0ade9757eb buflist: use util functions to parse integers 2026-06-20 10:41:42 +02:00
Sébastien Helleu 64c0c34735 core: use util functions to parse integers in buffer functions 2026-06-20 10:41:42 +02:00
Sébastien Helleu 6d89ea1324 core: use util functions to parse integers in window functions 2026-06-20 09:51:33 +02:00
Sébastien Helleu bbab9eceb9 core: use util functions to parse integers in nicklist functions 2026-06-20 09:51:33 +02:00
Sébastien Helleu 958c1b84fa core: use util functions to parse integers in function gui_line_hook_update 2026-06-20 09:51:33 +02:00
Sébastien Helleu c545cf75f3 core: use function util_parse_int in function gui_key_grab_init 2026-06-20 09:50:55 +02:00
Sébastien Helleu f34cb85ca3 core: use function util_parse_int in function gui_hotlist_clear_level_string 2026-06-20 09:50:55 +02:00
Sébastien Helleu bed3467efb core: use function util_parse_int in function gui_focus_info_hashtable_gui_focus_info_cb 2026-06-20 09:21:24 +02:00
Sébastien Helleu d5bb81fd2b core: use function util_parse_int in color functions 2026-06-20 09:21:22 +02:00
Sébastien Helleu c03bb825c4 core: use function util_parse_longlong in function gui_chat_hsignal_quote_line_cb 2026-06-20 09:18:36 +02:00
Sébastien Helleu 3200a05c00 relay/api: fix memory leak in resources "handshake", "input" and "completion" 2026-06-17 21:54:15 +02:00
Sébastien Helleu 861f589fc2 core: update ChangeLog (#2326) 2026-06-17 21:31:03 +02:00
aizu-m c40261aed1 xfer: fix out-of-bounds write in xfer_dcc_resume_hash (#2326) 2026-06-17 21:29:45 +02:00
Sébastien Helleu 770e733303 ci: switch from Ubuntu 24.04 to 26.04 2026-06-15 21:55:54 +02:00
Sébastien Helleu 9bd2aaa25d core: mute compiler warning on calls to dup() function 2026-06-15 08:22:03 +02:00
Sébastien Helleu 4e206ee3ae trigger: use "const char *" variables for result of string functions with const parameter 2026-06-15 07:55:20 +02:00
Sébastien Helleu 7ff71d2b0e spell: use "const char *" variables for result of string functions with const parameter 2026-06-15 07:55:10 +02:00
Sébastien Helleu 203fdca3e8 script: use "const char *" variables for result of string functions with const parameter 2026-06-15 07:54:40 +02:00
Sébastien Helleu e3ba25df19 relay: use "const char *" variables for result of string functions with const parameter 2026-06-15 07:54:10 +02:00
Sébastien Helleu 64566629c5 irc: use "const char *" variables for result of string functions with const parameter 2026-06-15 07:52:12 +02:00
Sébastien Helleu 7e3afaf46d core, api: use "const char *" variables for result of string functions with const parameter 2026-06-15 07:52:10 +02:00
Sébastien Helleu cf702d541f api: change type of parameter "pos_option_name" to "const char **" in function config_search_with_string 2026-06-15 07:29:33 +02:00
Sébastien Helleu a8067751eb doc/plugin: fix parameters of mkdir functions
The directory parameter is always `const char *` and not `char *`.
2026-06-15 07:29:28 +02:00
Sébastien Helleu a696a100d8 core: update ChangeLog (#2325) 2026-06-12 13:02:05 +02:00
aizu-m e60786d059 core: fix buffer overflow in function network_pass_socks5proxy (#2325)
bound the configured proxy username and password before they are copied into the fixed stack buffer in network_pass_socks5proxy, otherwise a login longer than the buffer (a long password or token) overruns it while building the SOCKS5 auth request.
2026-06-12 13:00:17 +02:00
Sébastien Helleu d78105ddf5 core: add CVE IDs in ChangeLog 2026-06-09 22:10:17 +02:00
weechatter 2a8c86242b core: update German translations 2026-06-09 10:42:23 +02:00
Sébastien Helleu dd9ef2f4d9 tests: add missing include of string.h 2026-06-08 23:17:19 +02:00
Sébastien Helleu 4c6c55befe core: update translations 2026-06-08 23:15:00 +02:00
Sébastien Helleu de878b2303 relay/api: remove error 400 which is never returned in response to GET /api/scripts 2026-06-08 23:11:27 +02:00
Sébastien Helleu 80a47b6731 relay/api: add missing fields in script object in OpenAPI document 2026-06-08 23:11:06 +02:00
Sébastien Helleu 551c12e049 relay/api: add resource GET /api/scripts 2026-06-08 23:04:40 +02:00
Sébastien Helleu 12016c4c05 script: add info "script_languages" 2026-06-08 18:54:06 +02:00
Sébastien Helleu 3aeaa70e64 ci: bump poexam to version 0.0.11 2026-06-07 21:56:22 +02:00
Sébastien Helleu 66e633e27e core: add version 4.9.2 2026-06-07 11:51:55 +02:00
Sébastien Helleu 436bbeceff tests: increase buffer size for injection of fake IRC message 2026-06-07 08:47:36 +02:00
Sébastien Helleu c307087e2d core: update ChangeLog (#2324) 2026-06-06 11:19:14 +02:00
aizu-m 51a1149852 relay: fix out-of-bounds read in relay_http_print_log_request (#2324) 2026-06-06 11:18:06 +02:00
Sébastien Helleu d74993a42c relay: limit size of partial message received while reading an HTTP request to prevent memory exhaustion
A relay client could send data with no end-of-line (an unterminated method
or header line) and dribble its payload, making WeeChat accumulate it in the
partial message buffer that grew without limit, until all memory was
exhausted. This path is reachable before authentication during websocket
initialization with the "weechat" and "irc" protocols.

The accumulated partial message is now bounded by
RELAY_HTTP_PARTIAL_MESSAGE_MAX_LENGTH: once the limit is reached, the extra
data is ignored.
2026-06-06 09:36:22 +02:00
Sébastien Helleu 51464e400f core: add links to issues in ChangeLog (#2321, #2322) 2026-06-06 07:20:41 +02:00
Sébastien Helleu 1c5e6c3fc2 core: update ChangeLog (#2323) 2026-06-06 07:20:38 +02:00
Sébastien Helleu e563dfc903 doc: add build of Serbian API Relay doc 2026-06-06 07:09:04 +02:00
Sébastien Helleu befbcceb7f relay/api: add field "last_read_line_id" in GET /api/buffers 2026-06-06 07:04:46 +02:00
aizu-m 56f9ad68fb xfer: fix out-of-bounds read in xfer_chat_recv_cb on empty line (#2323) 2026-06-06 07:01:18 +02:00
aizu-m 328f86affc irc: fix out-of-bounds read in DCC command with quoted filename 2026-06-04 23:17:58 +02:00
Sébastien Helleu f4dc30ec58 tests: add tests on function xfer_file_find_filename 2026-06-04 23:17:58 +02:00
aizu-m 23291acb7b xfer: replace directory separator in remote nick by underscore in download filename 2026-06-04 22:38:08 +02:00
Sébastien Helleu b802681230 api: fix infinite loop in function string_replace when the search string is empty 2026-06-03 21:15:16 +02:00
Sébastien Helleu 3687ce0f0f relay: limit size of received websocket frame and HTTP body to prevent memory exhaustion
A relay client could announce a huge websocket frame (or HTTP body via
"Content-Length") and dribble its payload, making WeeChat accumulate it
in a buffer that grew without limit, until all memory was exhausted. The
websocket frame path is reachable before authentication with the
"weechat" and "irc" protocols.

The announced websocket frame length and HTTP "Content-Length" are now
bounded by WEBSOCKET_FRAME_MAX_LENGTH and RELAY_HTTP_BODY_MAX_LENGTH: an
oversized websocket frame closes the connection, and an oversized body is
rejected.
2026-06-01 21:56:34 +02:00
Sébastien Helleu 1211510ded irc: limit size of data received from the server to prevent memory exhaustion
A malicious or compromised IRC server could send data with no end-of-line
(or a flood of "005" messages), making WeeChat accumulate it in a buffer
that grew without limit, until all memory was exhausted.

The unterminated received message and the accumulated "005" (ISUPPORT)
data are now bounded by IRC_SERVER_RECV_MSG_MAX_LENGTH and
IRC_SERVER_ISUPPORT_MAX_LENGTH: extra data is ignored once the limit is
reached.
2026-06-01 21:53:03 +02:00
aizu-m 07871f123f core: fix possible integer truncation in function eval_string_split (#2320) 2026-06-01 10:25:35 +02:00
Sébastien Helleu a0cf82d4a6 core: replace Bash/Ubuntu with WSL in README 2026-05-31 17:24:41 +02:00
Sébastien Helleu 13291b6b9a core: add missing trailing slash to Ruby scripts URL in README 2026-05-31 17:24:24 +02:00
Sébastien Helleu 76d652a513 core: fix multi-protocol feature wording in README 2026-05-31 17:24:13 +02:00
Sébastien Helleu ff9b698665 core: improve wording of semantic versioning section in README 2026-05-31 17:24:01 +02:00
Sébastien Helleu d5c985eb11 core: add security policy in SECURITY.md 2026-05-31 16:04:33 +02:00
Sébastien Helleu b29f464322 ci: enable ruby 3.3 module on Rocky Linux 9 2026-05-31 15:13:43 +02:00
Sébastien Helleu 171a9a9fc4 ci: install dnf-plugins-core on Rocky Linux 9 for dnf config-manager 2026-05-31 15:13:43 +02:00
Sébastien Helleu d7bc041098 core: add version 4.9.1 2026-05-31 15:09:01 +02:00
Sébastien Helleu 43a118ac47 core: fix timing attack on TOTP validation (GHSA-vhv8-g2r9-cwcc)
weecrypto_totp_validate compared the generated and client-supplied OTPs
with strcmp and broke out of the time-window loop on the first match.
Both choices leaked information via response timing: strcmp leaked the
expected OTP digit-by-digit (shrinking the brute-force search from
~10^digits to a handful of guesses within the 30-second window), and
the early break leaked which window offset matched.

Compare in constant time with string_memcmp_constant_time and always
iterate the full window, OR-ing the result into otp_ok without an
early exit.

This affects both relay protocols (which call totp_validate via the
public info hook) and any other caller of the info hook.
2026-05-31 09:16:46 +02:00
Sébastien Helleu e540d7a2cf relay/irc: fix timing attack on PASS command (GHSA-vhv8-g2r9-cwcc)
The IRC relay protocol's PASS handler compared the server password with
the client-supplied value using strcmp, leaking the password byte-by-byte
via response timing. This is the same class of bug fixed for the api and
weechat protocols, on a separate code path that did not go through
relay_auth_check_password_plain.

Extract the HMAC-then-constant-time-compare logic from
relay_auth_check_password_plain into relay_auth_password_equals, then
use it in both the plain-auth wrapper and the IRC PASS handler.
2026-05-31 09:16:36 +02:00
Sébastien Helleu 6948aea626 relay: fix timing attack on password authentication (GHSA-vhv8-g2r9-cwcc)
The relay authentication used non-constant-time comparisons (strcasecmp,
strcmp) to verify password hashes and plaintext passwords, allowing an
attacker to derive the expected hash byte-by-byte from response timing
and then authenticate without knowing the password.

- SHA/PBKDF2 hex hash comparisons: normalize the client-supplied hash to
  uppercase and compare in constant time over the fixed expected length.
- Plaintext password comparison: HMAC-SHA256 both passwords with a fresh
  per-call random key and compare the fixed-size MACs in constant time,
  hiding both per-byte timing and the password length.

Add string_memcmp_constant_time helper in core, exposed via the plugin
API. Bump WEECHAT_PLUGIN_API_VERSION accordingly.
2026-05-31 09:16:15 +02:00
Sébastien Helleu 5dbb96b66a relay: limit size of decompressed websocket frame to prevent memory exhaustion (GHSA-v2v4-45wm-5cr3)
An authenticated relay client using the permessage-deflate websocket
extension could send a small compressed frame that decompresses to an
unbounded amount of data, exhausting all memory and crashing WeeChat.

The output buffer in relay_websocket_inflate is now capped to
WEBSOCKET_INFLATE_MAX_SIZE: frames decompressing beyond this limit are
rejected and the connection is closed.
2026-05-31 09:16:06 +02:00
Sébastien Helleu 4fdcbf8f93 irc: fix description of info "irc_nick_from_host"
This fixes the following warning from xgettext:

src/plugins/irc/irc-info.c:1361: warning: Message contains an embedded email address.  Better move it out of the translatable string, see https://www.gnu.org/software/gettext/manual/html_node/No-embedded-URLs.html
2026-05-30 15:36:26 +02:00
Sébastien Helleu e4b70ad252 core: update translations 2026-05-30 14:00:43 +02:00
Sébastien Helleu d7fd2b7b0b core: define author name/email as constants
This fixes the following compiler warning:

src/core/core-args.c:180: warning: Message contains an embedded email address.  Better move it out of the translatable string, see https://www.gnu.org/software/gettext/manual/html_node/No-embedded-URLs.html
2026-05-30 13:39:45 +02:00
Sébastien Helleu 73cf57742e doc: make pygmentize optional at build time
If pygmentize is not found, the build now emits a CMake warning and
proceeds with an empty dark theme stylesheet rather than aborting.
A non-zero exit from pygmentize is also downgraded from SEND_ERROR to
WARNING for the same reason. This restores the pre-existing behavior
where the documentation could be built without any pygments tooling
installed (Asciidoctor then renders code blocks as plain text).
2026-05-24 18:03:12 +02:00
Sébastien Helleu bf7b8484cd doc: switch syntax highlighting to automatic light/dark theme with bevel on code blocks
Syntax highlighting now follows the user's `prefers-color-scheme`:

- Light theme uses the pygments `default` style, embedded by Asciidoctor as before.
- Dark theme uses the pygments `monokai` style, generated at CMake
  configure time via `pygmentize` and injected into the docinfo through a
  `@PYGMENTS_DARK_CSS@` placeholder, scoped under
  `@media (prefers-color-scheme: dark)`.

To support template substitution, `doc/docinfo.html` is renamed to
`docinfo.html.in` and produced into the build directory via
`configure_file`; all HTML targets now depend on the generated docinfo
and the `docinfodir` attribute points to the binary dir.

Code blocks also gain a subtle 3D bevel:

- `pre` borders use theme-specific bevel colors (`--pre-bevel-light` on
  top/left, `--pre-bevel-dark` on bottom/right) for a raised look in both
  themes.
- A shared `--pre-bevel-bg` surface color is applied to literalblock,
  listingblock and `pre.pygments`, so all code blocks sit on the same
  background regardless of the pygments style.
- `pre { line-height: 1.25 }` is forced to keep line spacing consistent
  between light (Asciidoctor base `1.45`) and dark (pygments `125%`).

`python3-pygments` is added to the documented build dependencies (the
`pygmentize` binary it provides is required at configure time).
2026-05-24 16:46:36 +02:00
weechatter 86f51b66b3 core: update German translations 2026-05-23 21:42:48 +02:00
Sébastien Helleu 1400b6c197 core: add fix of IRC tag in ChangeLog 2026-05-23 13:23:26 +02:00
Sébastien Helleu c71978c0b3 core: fix option weechat.look.color_real_white not applied when color is "white" on 16+ colors terminals (closes #1742) 2026-05-23 12:15:04 +02:00
Sébastien Helleu 4c38ce050b irc, script: display all input actions and in the same way in /list and /script buffers title 2026-05-22 07:56:31 +02:00
Sébastien Helleu 5520ed1950 fset: remove error displayed in core buffer when clicking with the mouse below the last option displayed 2026-05-21 13:55:15 +02:00
Sébastien Helleu ad35aef1f4 core: fix French translations 2026-05-20 21:56:45 +02:00
Sébastien Helleu 88f0070674 irc: fix tag in message with list of tags when joining a channel
The message with list of nicks on the channel has now tag irc_353 instead of
irc_366.
2026-05-20 20:24:06 +02:00
Sébastien Helleu 7683287f71 relay: add "api" protocol in help on options relay.network.password_hash_algo and relay.network.password_hash_iterations 2026-05-20 20:19:30 +02:00
Sébastien Helleu 33adaef85c core: add missing word in French translation of the welcome message 2026-05-20 20:13:26 +02:00
Sébastien Helleu 6f3c804379 core: add missing word in French translation of /help upgrade 2026-05-20 20:12:37 +02:00
Sébastien Helleu 617b4e4dee core: fix option name in French translation of /help buffer 2026-05-20 08:31:55 +02:00
Sébastien Helleu ea1eb76b2d core: fix trailing punctuation in German translation of /help script.look.use_keys 2026-05-17 20:59:07 +02:00
weechatter ad12925d6c core: update German translations 2026-05-13 21:04:45 +02:00
Sébastien Helleu a5fcf898b9 ci: bump poexam to version 0.0.10 2026-05-13 07:43:47 +02:00
Ivan Pešić 14d544be39 core: update Serbian translation (#2318) 2026-05-12 22:40:12 +02:00
Sébastien Helleu 3e994996c6 core: set max curl version to 8.21.0 for symbol CURLAUTH_DIGEST_IE 2026-05-12 13:12:12 +02:00
Sébastien Helleu 3341b9a2d2 core: remove zero width spaces (U+200B) in German translation of /help pipe 2026-05-10 19:28:25 +02:00
Sébastien Helleu 815640b840 relay: add option relay.network.unix_socket_permissions (closes #2317) 2026-05-10 19:22:57 +02:00
Sébastien Helleu acd3d91318 core: fix "Language" field in German translations
Country code is unnecessary: language "de" is equivalent to "de_DE".
2026-05-10 10:04:21 +02:00
Sébastien Helleu ef5f4d8ee6 core: fix "Language-Team" field in gettext file headers 2026-05-10 10:04:19 +02:00
weechatter d40217d1e6 core: update German translations 2026-05-06 15:59:20 +02:00
Sébastien Helleu 17b593325a core: complete /help away by mentioning the option irc.look.display_away 2026-05-04 18:47:04 +02:00
weechatter 3456e848da core: update German translations 2026-04-30 14:33:33 +02:00
Sébastien Helleu 723232ac35 ci: bump Lua from 5.3 to 5.4 2026-04-30 00:17:54 +02:00
Sébastien Helleu 5f5f9f35e7 debian: bump Lua from 5.3 to 5.4 2026-04-30 00:17:23 +02:00
Sébastien Helleu 86a6c4f5ff debian: remove patch for build of Debian packages on Ubuntu Focal 2026-04-29 23:58:22 +02:00
Sébastien Helleu 3082c2e4e5 core: add condition on connected relay api clients in default value of option weechat.look.hotlist_add_conditions 2026-04-28 21:30:51 +02:00
Sébastien Helleu 062109e33d relay: add protocol "api" in description of info "relay_client_count" 2026-04-28 21:22:38 +02:00
Sébastien Helleu fd88c9a45b relay: remove protocols from the plugin description 2026-04-28 21:19:10 +02:00
Sébastien Helleu a8c4d5604e ci: bump poexam to version 0.0.9 2026-04-16 20:32:06 +02:00
Emir SARI ef4c657157 core: update Turkish translations
Signed-off-by: Emir SARI <emir_sari@icloud.com>
2026-04-15 13:20:06 +02:00
Sébastien Helleu 0c29e5a630 core: fix possible integer truncation in functions eval_string_cut and eval_string_repeat 2026-04-10 21:48:56 +02:00
Sébastien Helleu 77a0dbfd44 core: remove dead code 2026-04-10 21:48:37 +02:00
weechatter afa42ec851 core: update German translations 2026-04-06 11:29:02 +02:00
Sébastien Helleu 8da86431da logger: fix file size example in /help logger.file.rotation_size_max 2026-04-05 21:50:41 +02:00
Sébastien Helleu 3d7f988973 core: use util functions to parse integers in bar functions 2026-04-05 16:53:05 +02:00
Sébastien Helleu 5ed21d7dad core: use util functions to parse integers in gui curses functions 2026-04-05 15:33:33 +02:00
Sébastien Helleu 54eff44d74 core: check error ERANGE after call to strtoul in function util_version_number 2026-04-05 15:33:33 +02:00
Sébastien Helleu 83d760deae core: check error ERANGE after call to strtoull in function util_parse_delay 2026-04-05 15:33:33 +02:00
Sébastien Helleu 5147b19e51 core: use function util_parse_longlong in function util_parse_time 2026-04-05 15:33:33 +02:00
Sébastien Helleu 50959eeb01 core: use function util_parse_longlong in upgrade functions 2026-04-05 15:33:33 +02:00
Sébastien Helleu ac2ed69c0b core: use function util_parse_longlong in function sys_setrlimit 2026-04-05 15:33:33 +02:00
Sébastien Helleu 2f7f707df0 core: use function util_parse_longlong in function string_parse_size 2026-04-05 15:33:33 +02:00
Sébastien Helleu 94e5de4836 core: use function util_parse_int in function string_get_priority_and_name 2026-04-05 15:33:33 +02:00
Sébastien Helleu 38f9a5587f core: use util functions to parse integers in function network_connect_child_read_cb 2026-04-05 15:33:33 +02:00
Sébastien Helleu 6432711798 core: use util functions to parse integers in hook functions 2026-04-05 15:33:33 +02:00
Sébastien Helleu 81c23a5134 core: use util functions to parse integers in hdata functions 2026-04-05 15:33:33 +02:00
Sébastien Helleu 6336c22293 core: use util functions to parse integers in eval functions 2026-04-05 15:33:33 +02:00
Sébastien Helleu 6658122b03 core: use util functions to parse integers in config functions 2026-04-05 15:33:33 +02:00
Sébastien Helleu 7e8f8b5178 core: use util functions to parse integers in core commands 2026-04-05 15:33:33 +02:00
Sébastien Helleu d00e334738 core: add missing non-breaking spaces in French translations 2026-04-05 09:58:44 +02:00
Sébastien Helleu f48b0bae2e core: fix URL in /help relay.network.websocket_allowed_origins (Polish) 2026-04-02 19:59:25 +02:00
Sébastien Helleu d3d18cd4c2 core: add missing double quotes in /help relay.network.websocket_allowed_origins (German) 2026-04-02 19:30:28 +02:00
Sébastien Helleu cead39b52f core: add /mute in default command for key alt+"=" (toggle filters)
Since v4.8.0 and commit d0298b4738, toggling
filters with `/filter toggle` displays a message on core buffer.

This is OK when running the command manually, but not when pressing the key
alt+"=".
2026-03-31 19:12:46 +02:00
Emil Velikov 7d88e53182 Bump required zstd to v1.4.0
Bump the requirement to v1.4.0, which means we can remove all the ifdef
guards.

It was released over 6 years ago, with latest release being 1.5.7.

The oldest distributions we target Ubuntu 20.04 and Debian Bullseye,
have 1.4.4 and 1.4.8 respectively.

Signed-off-by: Emil Velikov <emil.l.velikov@gmail.com>
2026-03-29 18:39:02 +02:00
Luc Schrijvers 8fe741e057 Build fix for Haiku 2026-03-29 18:31:27 +02:00
LuK1337 b6ef936cca cmake: enable position independent code (PIE)
Fixes the following build error when compiling Fedora 45 RPM:

/usr/bin/ld.bfd: tests/unit/CMakeFiles/tests.dir/tests.cpp.o: relocation R_X86_64_32 against `.rodata' can not be used when making a PIE object; recompile with -fPIE
/usr/bin/ld.bfd: failed to set dynamic section sizes: bad value
collect2: error: ld returned 1 exit status

See: https://cmake.org/cmake/help/latest/prop_tgt/POSITION_INDEPENDENT_CODE.html
     https://cmake.org/cmake/help/latest/policy/CMP0083.html
2026-03-29 18:28:48 +02:00
Sébastien Helleu 7c2bae9faf ci: add tests with Fedora 43 2026-03-29 12:36:30 +02:00
Sébastien Helleu 2b48eba784 Version 4.10.0-dev 2026-03-29 10:24:55 +02:00
147 changed files with 2916 additions and 2388 deletions
+58 -13
View File
@@ -51,7 +51,7 @@ env:
ruby-pygments.rb ruby-pygments.rb
tcl8.6-dev tcl8.6-dev
zlib1g-dev zlib1g-dev
WEECHAT_DEPS_ROCKYLINUX: >- WEECHAT_DEPS_REDHAT: >-
asciidoctor asciidoctor
aspell-devel aspell-devel
cjson-devel cjson-devel
@@ -118,7 +118,7 @@ jobs:
strategy: strategy:
matrix: matrix:
os: os:
- ubuntu-24.04 - ubuntu-26.04
runs-on: ${{ matrix.os }} runs-on: ${{ matrix.os }}
@@ -131,7 +131,7 @@ jobs:
sudo apt-get update -qq sudo apt-get update -qq
sudo apt-get --yes --no-install-recommends install ${{ env.CHECK_DEPS_UBUNTU }} sudo apt-get --yes --no-install-recommends install ${{ env.CHECK_DEPS_UBUNTU }}
pipx install msgcheck ruff pipx install msgcheck ruff
cargo install --version 0.0.10 poexam cargo install --version 0.0.11 poexam
- name: Check gettext files (msgcheck) - name: Check gettext files (msgcheck)
run: msgcheck po/*.po run: msgcheck po/*.po
@@ -153,7 +153,7 @@ jobs:
strategy: strategy:
matrix: matrix:
os: os:
- ubuntu-24.04 - ubuntu-26.04
config: config:
- name: "gcc" - name: "gcc"
cc: "gcc" cc: "gcc"
@@ -194,6 +194,8 @@ jobs:
name: "install (${{ matrix.os }}, ${{ matrix.config.name }})" name: "install (${{ matrix.os }}, ${{ matrix.config.name }})"
runs-on: ${{ matrix.os }} runs-on: ${{ matrix.os }}
env:
PHP_INI_SCAN_DIR: /tmp/php-noscan # embed PHP loads no add-on extensions (see #2009)
steps: steps:
@@ -203,8 +205,7 @@ jobs:
run: | run: |
sudo apt-get update -qq sudo apt-get update -qq
sudo apt-get --yes --no-install-recommends install ${{ env.WEECHAT_DEPS_UBUNTU }} sudo apt-get --yes --no-install-recommends install ${{ env.WEECHAT_DEPS_UBUNTU }}
# uninstall php imagick as is causes a crash when loading php plugin (see #2009) mkdir -p /tmp/php-noscan
sudo apt-get --yes purge php8.3-imagick
pipx install schemathesis pipx install schemathesis
- name: Build and run tests - name: Build and run tests
@@ -253,12 +254,58 @@ jobs:
lcov --list coverage.info lcov --list coverage.info
bash <(curl -s https://codecov.io/bash) -f coverage.info || echo 'Codecov error' bash <(curl -s https://codecov.io/bash) -f coverage.info || echo 'Codecov error'
install_fedora:
strategy:
matrix:
os:
- ubuntu-26.04
config:
- name: "gcc"
cc: "gcc"
cxx: "g++"
buildargs: "-DENABLE_MAN=ON -DENABLE_DOC=ON -DENABLE_TESTS=ON"
- name: "clang"
cc: "clang"
cxx: "clang++"
buildargs: "-DENABLE_MAN=ON -DENABLE_DOC=ON -DENABLE_TESTS=ON -DENABLE_CODE_COVERAGE=ON -DENABLE_FUZZ=ON"
name: "install (fedora:43, ${{ matrix.config.name }})"
runs-on: ${{ matrix.os }}
container:
image: fedora:43
steps:
- uses: actions/checkout@v6
- name: Install dependencies
run: dnf install -y ${{ env.WEECHAT_DEPS_REDHAT }}
- name: Build and run tests
env:
CC: ${{ matrix.config.cc }}
CXX: ${{ matrix.config.cxx }}
run: ./tools/build_test.sh ${{ matrix.config.buildargs }}
- name: Run WeeChat
env:
TERM: xterm-256color
run: |
weechat --help
weechat-curses --help
weechat --version
weechat --build-info
weechat --colors
weechat --license
weechat --run-command "/debug dirs;/debug libs" --run-command "/quit"
install_rockylinux: install_rockylinux:
strategy: strategy:
matrix: matrix:
os: os:
- ubuntu-24.04 - ubuntu-26.04
config: config:
- name: "gcc" - name: "gcc"
cc: "gcc" cc: "gcc"
@@ -284,7 +331,7 @@ jobs:
dnf config-manager --set-enabled crb dnf config-manager --set-enabled crb
# pin a working ruby stream (ruby:4.0 has broken module metadata on Rocky 9.8) # pin a working ruby stream (ruby:4.0 has broken module metadata on Rocky 9.8)
dnf module enable -y ruby:3.3 dnf module enable -y ruby:3.3
dnf install -y ${{ env.WEECHAT_DEPS_ROCKYLINUX }} dnf install -y ${{ env.WEECHAT_DEPS_REDHAT }}
- name: Build and run tests - name: Build and run tests
env: env:
@@ -309,7 +356,7 @@ jobs:
strategy: strategy:
matrix: matrix:
os: os:
- ubuntu-24.04 - ubuntu-26.04
config: config:
# - name: "gcc" # - name: "gcc"
# cc: "gcc" # cc: "gcc"
@@ -404,7 +451,7 @@ jobs:
strategy: strategy:
matrix: matrix:
os: os:
- ubuntu-24.04 - ubuntu-26.04
runs-on: ${{ matrix.os }} runs-on: ${{ matrix.os }}
@@ -441,7 +488,7 @@ jobs:
strategy: strategy:
matrix: matrix:
os: os:
- ubuntu-24.04 - ubuntu-26.04
runs-on: ${{ matrix.os }} runs-on: ${{ matrix.os }}
@@ -459,8 +506,6 @@ jobs:
run: | run: |
sudo apt-get update -qq sudo apt-get update -qq
sudo apt-get --yes --no-install-recommends install ${{ env.WEECHAT_DEPS_UBUNTU }} sudo apt-get --yes --no-install-recommends install ${{ env.WEECHAT_DEPS_UBUNTU }}
# uninstall php imagick as is causes a crash when loading php plugin (see #2009)
sudo apt-get --yes purge php8.3-imagick
- name: Initialize CodeQL - name: Initialize CodeQL
uses: github/codeql-action/init@v3 uses: github/codeql-action/init@v3
+1
View File
@@ -573,6 +573,7 @@ users
usr usr
util util
valer valer
valgrind
verbose verbose
verify verify
versiongit versiongit
+2 -3
View File
@@ -7,15 +7,14 @@ select = [
"checks", "checks",
] ]
ignore = [ ignore = [
"acronyms",
"brackets", "brackets",
"double-quotes", "double-quotes",
"double-words", "double-words",
"header", "functions",
"html-tags", "html-tags",
"paths", "paths",
"punc-space-str",
"unchanged", "unchanged",
"unicode-ctrl",
"urls", "urls",
] ]
path_words = "." path_words = "."
+28 -1
View File
@@ -6,12 +6,39 @@ SPDX-License-Identifier: GPL-3.0-or-later
# WeeChat ChangeLog # WeeChat ChangeLog
## Version 4.9.3 (under dev) ## Version 4.10.0 (under dev)
### Changed
- core: add condition on connected relay api clients in default value of option weechat.look.hotlist_add_conditions
- core: add `/mute` in default command for key `Alt`+`=` (toggle filters)
- api: change type of parameter "pos_option_name" to "const char **" in function config_search_with_string
- relay/api: add field "last_read_line_id" in GET /api/buffers
### Added
- relay/api: add resource `GET /api/scripts`
- relay: add option relay.network.unix_socket_permissions ([#2317](https://github.com/weechat/weechat/issues/2317))
- script: add info "script_languages"
### Fixed ### Fixed
- core: fix option weechat.look.color_real_white not applied when color is "white" on 16+ colors terminals ([#1742](https://github.com/weechat/weechat/issues/1742))
- core: fix buffer overflow in connection to SOCKS5 proxy ([#2325](https://github.com/weechat/weechat/issues/2325)) - core: fix buffer overflow in connection to SOCKS5 proxy ([#2325](https://github.com/weechat/weechat/issues/2325))
- api: fix infinite loop in function string_replace when the search string is empty
- irc: fix tag in message with list of names when joining a channel
- fset: remove error displayed in core buffer when clicking with the mouse below the last option displayed
- irc: limit size of data received from the server to prevent memory exhaustion
- irc: fix out-of-bounds read on incoming DCC command with a quoted filename ending the message ([#2322](https://github.com/weechat/weechat/issues/2322))
- relay: limit size of decompressed websocket frame with permessage-deflate to prevent memory exhaustion ([GHSA-v2v4-45wm-5cr3](https://github.com/weechat/weechat/security/advisories/GHSA-v2v4-45wm-5cr3), [CVE-2026-53524](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2026-53524))
- relay: limit size of received websocket frame and HTTP body to prevent memory exhaustion
- relay: limit size of partial message received while reading an HTTP request to prevent memory exhaustion
- relay: fix timing attack on password authentication ([GHSA-vhv8-g2r9-cwcc](https://github.com/weechat/weechat/security/advisories/GHSA-vhv8-g2r9-cwcc), [CVE-2026-53525](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2026-53525))
- relay: fix out-of-bounds read in dump of data ([#2324](https://github.com/weechat/weechat/issues/2324))
- relay/api: fix memory leak in resources "handshake", "input" and "completion" - relay/api: fix memory leak in resources "handshake", "input" and "completion"
- api, relay: fix timing attack on TOTP validation ([GHSA-vhv8-g2r9-cwcc](https://github.com/weechat/weechat/security/advisories/GHSA-vhv8-g2r9-cwcc), [CVE-2026-53525](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2026-53525))
- xfer: replace directory separator in remote nick by underscore in download filename to prevent writing the file outside the download directory ([#2321](https://github.com/weechat/weechat/issues/2321))
- xfer: fix out-of-bounds read when receiving empty line in DCC chat ([#2323](https://github.com/weechat/weechat/issues/2323))
- xfer: fix out-of-bounds write in xfer file transfer resume ([#2326](https://github.com/weechat/weechat/issues/2326)) - xfer: fix out-of-bounds write in xfer file transfer resume ([#2326](https://github.com/weechat/weechat/issues/2326))
## Version 4.9.2 (2026-06-07) ## Version 4.9.2 (2026-06-07)
+1 -1
View File
@@ -246,7 +246,7 @@ list(APPEND EXTRA_LIBS ${ZLIB_LIBRARY})
# Check for zstd # Check for zstd
if(ENABLE_ZSTD) if(ENABLE_ZSTD)
pkg_check_modules(LIBZSTD REQUIRED libzstd) pkg_check_modules(LIBZSTD REQUIRED libzstd>=1.4.0)
include_directories(${LIBZSTD_INCLUDE_DIRS}) include_directories(${LIBZSTD_INCLUDE_DIRS})
list(APPEND EXTRA_LIBS ${LIBZSTD_LDFLAGS}) list(APPEND EXTRA_LIBS ${LIBZSTD_LDFLAGS})
add_definitions(-DHAVE_ZSTD) add_definitions(-DHAVE_ZSTD)
+1 -2
View File
@@ -19,8 +19,7 @@ First, some basic things:
### Security reports ### Security reports
Please **DO NOT** file a GitHub issue for security related problems, but send an Please **DO NOT** file a GitHub issue for security related problems; see [SECURITY.md](SECURITY.md) instead.
email to [security@weechat.org](mailto:security@weechat.org) instead.
### Required info ### Required info
+4 -4
View File
@@ -27,11 +27,11 @@ Homepage: [https://weechat.org/](https://weechat.org/)
## Features ## Features
- **Modular chat client**: WeeChat has a lightweight core and optional [plugins](https://weechat.org/doc/weechat/user/#plugins). All plugins (including [IRC](https://weechat.org/doc/weechat/user/#irc)) are independent and can be unloaded. - **Modular chat client**: WeeChat has a lightweight core and optional [plugins](https://weechat.org/doc/weechat/user/#plugins). All plugins (including [IRC](https://weechat.org/doc/weechat/user/#irc)) are independent and can be unloaded.
- **Multi-platform**: WeeChat runs on GNU/Linux, *BSD, GNU/Hurd, Haiku, macOS and Windows (Bash/Ubuntu and Cygwin). - **Multi-platform**: WeeChat runs on GNU/Linux, *BSD, GNU/Hurd, Haiku, macOS and Windows (WSL and Cygwin).
- **Multi-protocols**: WeeChat is designed to support multiple protocols by plugins, like IRC. - **Multi-protocol**: WeeChat is designed to support multiple protocols via plugins, like IRC.
- **Standards-compliant**: the IRC plugin is compliant with RFCs [1459](https://datatracker.ietf.org/doc/html/rfc1459), [2810](https://datatracker.ietf.org/doc/html/rfc2810), [2811](https://datatracker.ietf.org/doc/html/rfc2811), [2812](https://datatracker.ietf.org/doc/html/rfc2812), [2813](https://datatracker.ietf.org/doc/html/rfc2813) and [7194](https://datatracker.ietf.org/doc/html/rfc7194). - **Standards-compliant**: the IRC plugin is compliant with RFCs [1459](https://datatracker.ietf.org/doc/html/rfc1459), [2810](https://datatracker.ietf.org/doc/html/rfc2810), [2811](https://datatracker.ietf.org/doc/html/rfc2811), [2812](https://datatracker.ietf.org/doc/html/rfc2812), [2813](https://datatracker.ietf.org/doc/html/rfc2813) and [7194](https://datatracker.ietf.org/doc/html/rfc7194).
- **Small, fast, and very light**: the core is and should stay as light and fast as possible. - **Small, fast, and very light**: the core is and should stay as light and fast as possible.
- **Customizable and extensible**: there are a lot of options to customize WeeChat, and it is extensible with C plugins and [scripts](https://weechat.org/scripts/) ([Perl](https://weechat.org/scripts/language/perl/), [Python](https://weechat.org/scripts/language/python/), [Ruby](https://weechat.org/scripts/language/ruby), [Lua](https://weechat.org/scripts/language/lua/), [Tcl](https://weechat.org/scripts/language/tcl/), [Scheme](https://weechat.org/scripts/language/guile/), [JavaScript](https://weechat.org/scripts/language/javascript/) and [PHP](https://weechat.org/scripts/language/php/)). - **Customizable and extensible**: there are a lot of options to customize WeeChat, and it is extensible with C plugins and [scripts](https://weechat.org/scripts/) ([Perl](https://weechat.org/scripts/language/perl/), [Python](https://weechat.org/scripts/language/python/), [Ruby](https://weechat.org/scripts/language/ruby/), [Lua](https://weechat.org/scripts/language/lua/), [Tcl](https://weechat.org/scripts/language/tcl/), [Scheme](https://weechat.org/scripts/language/guile/), [JavaScript](https://weechat.org/scripts/language/javascript/) and [PHP](https://weechat.org/scripts/language/php/)).
- **Fully documented**: there is comprehensive [documentation](https://weechat.org/doc/weechat/), which is [translated](https://weechat.org/doc/weechat/dev/#translations) into several languages. - **Fully documented**: there is comprehensive [documentation](https://weechat.org/doc/weechat/), which is [translated](https://weechat.org/doc/weechat/dev/#translations) into several languages.
- **Developed from scratch**: WeeChat was built from scratch and is not based on any other client. - **Developed from scratch**: WeeChat was built from scratch and is not based on any other client.
- **Free software**: WeeChat is released under [GPLv3](https://www.gnu.org/licenses/gpl-3.0.html). - **Free software**: WeeChat is released under [GPLv3](https://www.gnu.org/licenses/gpl-3.0.html).
@@ -49,7 +49,7 @@ For detailed instructions, please check the [WeeChat user's guide](https://weech
## Semantic versioning ## Semantic versioning
WeeChat is following a "practical" semantic versioning, see file [CONTRIBUTING.md](CONTRIBUTING.md#semantic-versioning). WeeChat follows "practical" semantic versioning; see [CONTRIBUTING.md](CONTRIBUTING.md#semantic-versioning).
## Copyright ## Copyright
+26
View File
@@ -0,0 +1,26 @@
<!--
SPDX-FileCopyrightText: 2026 Sébastien Helleu <flashcode@flashtux.org>
SPDX-License-Identifier: GPL-3.0-or-later
-->
# Security Policy
## Supported versions
Only the latest stable version of WeeChat is supported.
| Version | Supported | Notes |
| -------------- | ------------------ | --------------------------------------------------- |
| Latest stable | :white_check_mark: | Fully supported. |
| Older releases | :x: | Not supported. Contact us in case of specific need. |
However, we may help to backport fixes on older versions, especially when they are used in released distributions with no way to upgrade to the latest stable release (please contact us).
## Reporting a vulnerability
Please report security issues using <https://github.com/weechat/weechat/security/advisories/new>.
Alternatively, if you are not able to use this form, you can send an email to [security@weechat.org](mailto:security@weechat.org) instead.
We will investigate all legitimate reports and do our best to quickly fix the problem.
+13
View File
@@ -13,6 +13,19 @@ When upgrading from version X to Y, please read and apply all instructions from
For a list of all changes in each version, please see [CHANGELOG.md](CHANGELOG.md). For a list of all changes in each version, please see [CHANGELOG.md](CHANGELOG.md).
## Version 4.10.0
### Command on mouse click in fset buffer
The command executed when clicking in the fset buffer has been updated to prevent
errors on the core buffer when the click is done below the last option.
To reset the key and use the new default command:
```text
/reset weechat.key_mouse.@chat(fset.fset):button1
```
## Version 4.8.0 ## Version 4.8.0
### IRC temporary servers ### IRC temporary servers
+36 -11
View File
@@ -30,12 +30,37 @@ if(ENABLE_MAN OR ENABLE_DOC)
set(SCRIPTING_LANG de en fr it ja pl sr) set(SCRIPTING_LANG de en fr it ja pl sr)
set(FAQ_LANG de en es fr it ja pl sr) set(FAQ_LANG de en es fr it ja pl sr)
set(QUICKSTART_LANG cs de en es fr it ja pl ru sr) set(QUICKSTART_LANG cs de en es fr it ja pl ru sr)
set(RELAY_API_LANG en fr) set(RELAY_API_LANG en fr sr)
set(RELAY_WEECHAT_LANG en fr ja sr) set(RELAY_WEECHAT_LANG en fr ja sr)
set(DEV_LANG en fr ja sr) set(DEV_LANG en fr ja sr)
find_package(Asciidoctor) find_package(Asciidoctor)
if(ASCIIDOCTOR_FOUND) if(ASCIIDOCTOR_FOUND)
# Asciidoctor embeds the light style automatically; the dark stylesheet
# is generated below and scoped via @media in docinfo.html.in.
set(PYGMENTS_LIGHT_STYLE "default")
set(PYGMENTS_DARK_STYLE "monokai")
find_program(PYGMENTIZE_EXECUTABLE pygmentize)
set(PYGMENTS_DARK_CSS "")
if(PYGMENTIZE_EXECUTABLE)
execute_process(
COMMAND "${PYGMENTIZE_EXECUTABLE}" -O "classprefix=tok-" -f html -a "pre.pygments" -S "${PYGMENTS_DARK_STYLE}"
OUTPUT_VARIABLE PYGMENTS_DARK_CSS
RESULT_VARIABLE _pygmentize_result
)
if(NOT _pygmentize_result EQUAL 0)
message(WARNING "Failed to generate pygments CSS for dark theme (style: ${PYGMENTS_DARK_STYLE}); doc will be built without dark theme syntax highlighting")
set(PYGMENTS_DARK_CSS "")
endif()
else()
message(WARNING "pygmentize not found (install python3-pygments); doc will be built without syntax highlighting colors")
endif()
configure_file(
"${CMAKE_CURRENT_SOURCE_DIR}/docinfo.html.in"
"${CMAKE_CURRENT_BINARY_DIR}/docinfo.html"
@ONLY
)
# common asciidoctor arguments # common asciidoctor arguments
set(ASCIIDOCTOR_ARGS set(ASCIIDOCTOR_ARGS
-v -v
@@ -46,8 +71,8 @@ if(ENABLE_MAN OR ENABLE_DOC)
-a revnumber="${VERSION}" -a revnumber="${VERSION}"
-a sectanchors -a sectanchors
-a source-highlighter=pygments -a source-highlighter=pygments
-a pygments-style=native -a pygments-style=${PYGMENTS_LIGHT_STYLE}
-a docinfodir="${CMAKE_CURRENT_SOURCE_DIR}" -a docinfodir="${CMAKE_CURRENT_BINARY_DIR}"
-a autogendir="${CMAKE_CURRENT_BINARY_DIR}/autogen" -a autogendir="${CMAKE_CURRENT_BINARY_DIR}/autogen"
) )
@@ -205,7 +230,7 @@ if(ENABLE_MAN OR ENABLE_DOC)
OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/weechat_user.${lang}.html" OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/weechat_user.${lang}.html"
COMMAND "${ASCIIDOCTOR_EXECUTABLE}" ARGS ${ASCIIDOCTOR_ARGS} ${ASCIIDOCTOR_USER_ARGS} -o "weechat_user.${lang}.html" "${CMAKE_CURRENT_SOURCE_DIR}/${lang}/weechat_user.${lang}.adoc" COMMAND "${ASCIIDOCTOR_EXECUTABLE}" ARGS ${ASCIIDOCTOR_ARGS} ${ASCIIDOCTOR_USER_ARGS} -o "weechat_user.${lang}.html" "${CMAKE_CURRENT_SOURCE_DIR}/${lang}/weechat_user.${lang}.adoc"
DEPENDS DEPENDS
"${CMAKE_CURRENT_SOURCE_DIR}/docinfo.html" "${CMAKE_CURRENT_BINARY_DIR}/docinfo.html"
"${CMAKE_CURRENT_SOURCE_DIR}/${lang}/weechat_user.${lang}.adoc" "${CMAKE_CURRENT_SOURCE_DIR}/${lang}/weechat_user.${lang}.adoc"
"${CMAKE_CURRENT_SOURCE_DIR}/${lang}/includes/attributes-${lang}.adoc" "${CMAKE_CURRENT_SOURCE_DIR}/${lang}/includes/attributes-${lang}.adoc"
"${CMAKE_CURRENT_SOURCE_DIR}/${lang}/includes/cmdline_options.${lang}.adoc" "${CMAKE_CURRENT_SOURCE_DIR}/${lang}/includes/cmdline_options.${lang}.adoc"
@@ -226,7 +251,7 @@ if(ENABLE_MAN OR ENABLE_DOC)
OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/weechat_plugin_api.${lang}.html" OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/weechat_plugin_api.${lang}.html"
COMMAND "${ASCIIDOCTOR_EXECUTABLE}" ARGS ${ASCIIDOCTOR_ARGS} ${ASCIIDOCTOR_PLUGIN_API_ARGS} -o "weechat_plugin_api.${lang}.html" "${CMAKE_CURRENT_SOURCE_DIR}/${lang}/weechat_plugin_api.${lang}.adoc" COMMAND "${ASCIIDOCTOR_EXECUTABLE}" ARGS ${ASCIIDOCTOR_ARGS} ${ASCIIDOCTOR_PLUGIN_API_ARGS} -o "weechat_plugin_api.${lang}.html" "${CMAKE_CURRENT_SOURCE_DIR}/${lang}/weechat_plugin_api.${lang}.adoc"
DEPENDS DEPENDS
"${CMAKE_CURRENT_SOURCE_DIR}/docinfo.html" "${CMAKE_CURRENT_BINARY_DIR}/docinfo.html"
"${CMAKE_CURRENT_SOURCE_DIR}/${lang}/weechat_plugin_api.${lang}.adoc" "${CMAKE_CURRENT_SOURCE_DIR}/${lang}/weechat_plugin_api.${lang}.adoc"
"${CMAKE_CURRENT_SOURCE_DIR}/${lang}/includes/attributes-${lang}.adoc" "${CMAKE_CURRENT_SOURCE_DIR}/${lang}/includes/attributes-${lang}.adoc"
doc-autogen doc-autogen
@@ -250,7 +275,7 @@ if(ENABLE_MAN OR ENABLE_DOC)
OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/weechat_scripting.${lang}.html" OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/weechat_scripting.${lang}.html"
COMMAND "${ASCIIDOCTOR_EXECUTABLE}" ARGS ${ASCIIDOCTOR_ARGS} ${ASCIIDOCTOR_SCRIPTING_ARGS} -o "weechat_scripting.${lang}.html" "${CMAKE_CURRENT_SOURCE_DIR}/${lang}/weechat_scripting.${lang}.adoc" COMMAND "${ASCIIDOCTOR_EXECUTABLE}" ARGS ${ASCIIDOCTOR_ARGS} ${ASCIIDOCTOR_SCRIPTING_ARGS} -o "weechat_scripting.${lang}.html" "${CMAKE_CURRENT_SOURCE_DIR}/${lang}/weechat_scripting.${lang}.adoc"
DEPENDS DEPENDS
"${CMAKE_CURRENT_SOURCE_DIR}/docinfo.html" "${CMAKE_CURRENT_BINARY_DIR}/docinfo.html"
"${CMAKE_CURRENT_SOURCE_DIR}/${lang}/weechat_scripting.${lang}.adoc" "${CMAKE_CURRENT_SOURCE_DIR}/${lang}/weechat_scripting.${lang}.adoc"
"${CMAKE_CURRENT_SOURCE_DIR}/${lang}/includes/attributes-${lang}.adoc" "${CMAKE_CURRENT_SOURCE_DIR}/${lang}/includes/attributes-${lang}.adoc"
doc-autogen doc-autogen
@@ -268,7 +293,7 @@ if(ENABLE_MAN OR ENABLE_DOC)
OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/weechat_faq.${lang}.html" OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/weechat_faq.${lang}.html"
COMMAND "${ASCIIDOCTOR_EXECUTABLE}" ARGS ${ASCIIDOCTOR_ARGS} ${ASCIIDOCTOR_FAQ_ARGS} -o "weechat_faq.${lang}.html" "${CMAKE_CURRENT_SOURCE_DIR}/${lang}/weechat_faq.${lang}.adoc" COMMAND "${ASCIIDOCTOR_EXECUTABLE}" ARGS ${ASCIIDOCTOR_ARGS} ${ASCIIDOCTOR_FAQ_ARGS} -o "weechat_faq.${lang}.html" "${CMAKE_CURRENT_SOURCE_DIR}/${lang}/weechat_faq.${lang}.adoc"
DEPENDS DEPENDS
"${CMAKE_CURRENT_SOURCE_DIR}/docinfo.html" "${CMAKE_CURRENT_BINARY_DIR}/docinfo.html"
"${CMAKE_CURRENT_SOURCE_DIR}/${lang}/weechat_faq.${lang}.adoc" "${CMAKE_CURRENT_SOURCE_DIR}/${lang}/weechat_faq.${lang}.adoc"
"${CMAKE_CURRENT_SOURCE_DIR}/${lang}/includes/attributes-${lang}.adoc" "${CMAKE_CURRENT_SOURCE_DIR}/${lang}/includes/attributes-${lang}.adoc"
WORKING_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}" WORKING_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}"
@@ -283,7 +308,7 @@ if(ENABLE_MAN OR ENABLE_DOC)
OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/weechat_quickstart.${lang}.html" OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/weechat_quickstart.${lang}.html"
COMMAND "${ASCIIDOCTOR_EXECUTABLE}" ARGS ${ASCIIDOCTOR_ARGS} ${ASCIIDOCTOR_QUICKSTART_ARGS} -o "weechat_quickstart.${lang}.html" "${CMAKE_CURRENT_SOURCE_DIR}/${lang}/weechat_quickstart.${lang}.adoc" COMMAND "${ASCIIDOCTOR_EXECUTABLE}" ARGS ${ASCIIDOCTOR_ARGS} ${ASCIIDOCTOR_QUICKSTART_ARGS} -o "weechat_quickstart.${lang}.html" "${CMAKE_CURRENT_SOURCE_DIR}/${lang}/weechat_quickstart.${lang}.adoc"
DEPENDS DEPENDS
"${CMAKE_CURRENT_SOURCE_DIR}/docinfo.html" "${CMAKE_CURRENT_BINARY_DIR}/docinfo.html"
"${CMAKE_CURRENT_SOURCE_DIR}/${lang}/weechat_quickstart.${lang}.adoc" "${CMAKE_CURRENT_SOURCE_DIR}/${lang}/weechat_quickstart.${lang}.adoc"
"${CMAKE_CURRENT_SOURCE_DIR}/${lang}/includes/attributes-${lang}.adoc" "${CMAKE_CURRENT_SOURCE_DIR}/${lang}/includes/attributes-${lang}.adoc"
WORKING_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}" WORKING_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}"
@@ -298,7 +323,7 @@ if(ENABLE_MAN OR ENABLE_DOC)
OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/weechat_relay_api.${lang}.html" OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/weechat_relay_api.${lang}.html"
COMMAND "${ASCIIDOCTOR_EXECUTABLE}" ARGS ${ASCIIDOCTOR_ARGS} ${ASCIIDOCTOR_RELAY_API_ARGS} -o "weechat_relay_api.${lang}.html" "${CMAKE_CURRENT_SOURCE_DIR}/${lang}/weechat_relay_api.${lang}.adoc" COMMAND "${ASCIIDOCTOR_EXECUTABLE}" ARGS ${ASCIIDOCTOR_ARGS} ${ASCIIDOCTOR_RELAY_API_ARGS} -o "weechat_relay_api.${lang}.html" "${CMAKE_CURRENT_SOURCE_DIR}/${lang}/weechat_relay_api.${lang}.adoc"
DEPENDS DEPENDS
"${CMAKE_CURRENT_SOURCE_DIR}/docinfo.html" "${CMAKE_CURRENT_BINARY_DIR}/docinfo.html"
"${CMAKE_CURRENT_SOURCE_DIR}/${lang}/weechat_relay_api.${lang}.adoc" "${CMAKE_CURRENT_SOURCE_DIR}/${lang}/weechat_relay_api.${lang}.adoc"
"${CMAKE_CURRENT_SOURCE_DIR}/${lang}/includes/attributes-${lang}.adoc" "${CMAKE_CURRENT_SOURCE_DIR}/${lang}/includes/attributes-${lang}.adoc"
"${CMAKE_CURRENT_SOURCE_DIR}/${lang}/includes/relay.${lang}.adoc" "${CMAKE_CURRENT_SOURCE_DIR}/${lang}/includes/relay.${lang}.adoc"
@@ -314,7 +339,7 @@ if(ENABLE_MAN OR ENABLE_DOC)
OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/weechat_relay_weechat.${lang}.html" OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/weechat_relay_weechat.${lang}.html"
COMMAND "${ASCIIDOCTOR_EXECUTABLE}" ARGS ${ASCIIDOCTOR_ARGS} ${ASCIIDOCTOR_RELAY_WEECHAT_ARGS} -o "weechat_relay_weechat.${lang}.html" "${CMAKE_CURRENT_SOURCE_DIR}/${lang}/weechat_relay_weechat.${lang}.adoc" COMMAND "${ASCIIDOCTOR_EXECUTABLE}" ARGS ${ASCIIDOCTOR_ARGS} ${ASCIIDOCTOR_RELAY_WEECHAT_ARGS} -o "weechat_relay_weechat.${lang}.html" "${CMAKE_CURRENT_SOURCE_DIR}/${lang}/weechat_relay_weechat.${lang}.adoc"
DEPENDS DEPENDS
"${CMAKE_CURRENT_SOURCE_DIR}/docinfo.html" "${CMAKE_CURRENT_BINARY_DIR}/docinfo.html"
"${CMAKE_CURRENT_SOURCE_DIR}/${lang}/weechat_relay_weechat.${lang}.adoc" "${CMAKE_CURRENT_SOURCE_DIR}/${lang}/weechat_relay_weechat.${lang}.adoc"
"${CMAKE_CURRENT_SOURCE_DIR}/${lang}/includes/attributes-${lang}.adoc" "${CMAKE_CURRENT_SOURCE_DIR}/${lang}/includes/attributes-${lang}.adoc"
"${CMAKE_CURRENT_SOURCE_DIR}/${lang}/includes/relay.${lang}.adoc" "${CMAKE_CURRENT_SOURCE_DIR}/${lang}/includes/relay.${lang}.adoc"
@@ -330,7 +355,7 @@ if(ENABLE_MAN OR ENABLE_DOC)
OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/weechat_dev.${lang}.html" OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/weechat_dev.${lang}.html"
COMMAND "${ASCIIDOCTOR_EXECUTABLE}" ARGS ${ASCIIDOCTOR_ARGS} ${ASCIIDOCTOR_DEV_ARGS} -o "weechat_dev.${lang}.html" "${CMAKE_CURRENT_SOURCE_DIR}/${lang}/weechat_dev.${lang}.adoc" COMMAND "${ASCIIDOCTOR_EXECUTABLE}" ARGS ${ASCIIDOCTOR_ARGS} ${ASCIIDOCTOR_DEV_ARGS} -o "weechat_dev.${lang}.html" "${CMAKE_CURRENT_SOURCE_DIR}/${lang}/weechat_dev.${lang}.adoc"
DEPENDS DEPENDS
"${CMAKE_CURRENT_SOURCE_DIR}/docinfo.html" "${CMAKE_CURRENT_BINARY_DIR}/docinfo.html"
"${CMAKE_CURRENT_SOURCE_DIR}/${lang}/weechat_dev.${lang}.adoc" "${CMAKE_CURRENT_SOURCE_DIR}/${lang}/weechat_dev.${lang}.adoc"
"${CMAKE_CURRENT_SOURCE_DIR}/${lang}/includes/attributes-${lang}.adoc" "${CMAKE_CURRENT_SOURCE_DIR}/${lang}/includes/attributes-${lang}.adoc"
WORKING_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}" WORKING_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}"
+1 -1
View File
@@ -212,7 +212,7 @@ WeeChat optional sind:
| asciidoctor | ≥ 1.5.4 | asciidoctor | ≥ 1.5.4
| zum Erstellen der man page und der Dokumentation. | zum Erstellen der man page und der Dokumentation.
| ruby-pygments.rb | | python3-pygments, ruby-pygments.rb |
| Build Dokumentation. | Build Dokumentation.
| libcpputest-dev | ≥ 3.4 | libcpputest-dev | ≥ 3.4
+13 -26
View File
@@ -26,9 +26,6 @@ SPDX-License-Identifier: GPL-3.0-or-later
--header-details-color: #aaa; --header-details-color: #aaa;
--border: 1px solid #444; --border: 1px solid #444;
--code-bg-color: #252525; --code-bg-color: #252525;
--pre-color: #ddd;
--pre-bg-color: #202020;
--pre-code-bg-color: #202020;
--keyseq-color: #777; --keyseq-color: #777;
--kbd-bg-color: #252525; --kbd-bg-color: #252525;
--kbd-border: 1px solid #333; --kbd-border: 1px solid #333;
@@ -39,7 +36,11 @@ SPDX-License-Identifier: GPL-3.0-or-later
--icon-caution-color: #bf3400; --icon-caution-color: #bf3400;
--icon-important-color: #f44336; --icon-important-color: #f44336;
--mark-bg-color: #007; --mark-bg-color: #007;
--pre-bevel-light: #3e3e3e;
--pre-bevel-dark: #2a2a2a;
--pre-bevel-bg: #1f1f1f;
} }
@PYGMENTS_DARK_CSS@
} }
@media (not (prefers-color-scheme: dark)), (prefers-color-scheme: light) { @media (not (prefers-color-scheme: dark)), (prefers-color-scheme: light) {
@@ -59,9 +60,6 @@ SPDX-License-Identifier: GPL-3.0-or-later
--border: 1px solid #dddddf; --border: 1px solid #dddddf;
--code-bg-color: #f7f7f8; --code-bg-color: #f7f7f8;
--keyseq-color: #333c; --keyseq-color: #333c;
--pre-color: #353535;
--pre-bg-color: #f7f7f8;
--pre-code-bg-color: #202020;
--kbd-bg-color: #f7f7f7; --kbd-bg-color: #f7f7f7;
--kbd-border: 1px solid #ccc; --kbd-border: 1px solid #ccc;
--kbd-box-shadow: 0 1px 0 rgba(0, 0, 0, .2), inset 0 0 0 .1em #fff; --kbd-box-shadow: 0 1px 0 rgba(0, 0, 0, .2), inset 0 0 0 .1em #fff;
@@ -71,6 +69,9 @@ SPDX-License-Identifier: GPL-3.0-or-later
--icon-caution-color: #ff0000; --icon-caution-color: #ff0000;
--icon-important-color: #bf0000; --icon-important-color: #bf0000;
--mark-bg-color: #9df; --mark-bg-color: #9df;
--pre-bevel-light: #e5e5e7;
--pre-bevel-dark: #b4b4b8;
--pre-bevel-bg: #f6f6f7;
} }
} }
@@ -145,6 +146,10 @@ code, .prettyprint {
pre { pre {
color: var(--pre-color) !important; color: var(--pre-color) !important;
border: 1px solid;
border-color: var(--pre-bevel-light) var(--pre-bevel-dark) var(--pre-bevel-dark) var(--pre-bevel-light);
border-radius: 3px;
line-height: 1.25;
} }
pre > code { pre > code {
@@ -162,8 +167,8 @@ kbd {
color: var(--body-color); color: var(--body-color);
} }
.literalblock pre, .listingblock > .content > pre:not(.highlight), .listingblock > .content > pre[class="highlight"], .listingblock > .content > pre[class^="highlight "] { .literalblock pre, .listingblock > .content > pre:not(.highlight), .listingblock > .content > pre[class="highlight"], .listingblock > .content > pre[class^="highlight "], pre.pygments {
background-color: var(--pre-bg-color); background-color: var(--pre-bg-color, var(--pre-bevel-bg));
color: var(--body-color); color: var(--body-color);
} }
@@ -200,24 +205,6 @@ mark {
color: var(--body-color); color: var(--body-color);
} }
/* syntax highlighting tuning */
pre.pygments {
color: #ddd !important;
}
pre.pygments .tok-cp {
color: #44cfaf;
}
pre.pygments .tok-nc, pre.pygments .tok-nf {
color: #649fef;
}
pre.pygments .tok-gu, pre.pygments .tok-nc, pre.pygments .tok-nn {
text-decoration: none;
}
/* asciidoctor styles tuning */ /* asciidoctor styles tuning */
#header, #content, #footnotes, #footer { #header, #content, #footnotes, #footer {
+5 -5
View File
@@ -4348,7 +4348,7 @@ Prototype:
[source,c] [source,c]
---- ----
int weechat_mkdir_home (char *directory, int mode); int weechat_mkdir_home (const char *directory, int mode);
---- ----
Arguments: Arguments:
@@ -4395,7 +4395,7 @@ Prototype:
[source,c] [source,c]
---- ----
int weechat_mkdir (char *directory, int mode); int weechat_mkdir (const char *directory, int mode);
---- ----
Arguments: Arguments:
@@ -4436,7 +4436,7 @@ Prototype:
[source,c] [source,c]
---- ----
int weechat_mkdir_parents (char *directory, int mode); int weechat_mkdir_parents (const char *directory, int mode);
---- ----
Arguments: Arguments:
@@ -7709,7 +7709,7 @@ void weechat_config_search_with_string (const char *option_name,
struct t_config_file **config_file, struct t_config_file **config_file,
struct t_config_section **section, struct t_config_section **section,
struct t_config_option **option, struct t_config_option **option,
char **pos_option_name); const char **pos_option_name);
---- ----
Arguments: Arguments:
@@ -7731,7 +7731,7 @@ C example:
struct t_config_file *ptr_config_file; struct t_config_file *ptr_config_file;
struct t_config_section *ptr_section; struct t_config_section *ptr_section;
struct t_config_option *ptr_option; struct t_config_option *ptr_option;
char *option_name; const char *option_name;
weechat_config_search_with_string ("file.section.option", weechat_config_search_with_string ("file.section.option",
&ptr_config_file, &ptr_config_file,
+57 -5
View File
@@ -541,7 +541,8 @@ HTTP/1.1 200 OK
"plugin": "core", "plugin": "core",
"name": "weechat" "name": "weechat"
}, },
"keys": [] "keys": [],
"last_read_line_id": -1
}, },
{ {
"id": 1709932823423765, "id": 1709932823423765,
@@ -571,7 +572,8 @@ HTTP/1.1 200 OK
"tls_version": "TLS1.3", "tls_version": "TLS1.3",
"host": "~alice@example.com" "host": "~alice@example.com"
}, },
"keys": [] "keys": [],
"last_read_line_id": -1
}, },
{ {
"id": 1709932823649069, "id": 1709932823649069,
@@ -599,7 +601,8 @@ HTTP/1.1 200 OK
"nick": "alice", "nick": "alice",
"host": "~alice@example.com" "host": "~alice@example.com"
}, },
"keys": [] "keys": [],
"last_read_line_id": -1
} }
] ]
---- ----
@@ -655,7 +658,8 @@ HTTP/1.1 200 OK
"message": "Plugins loaded: alias, buflist, charset, exec, fifo, fset, guile, irc, javascript, logger, lua, perl, php, python, relay, ruby, script, spell, tcl, trigger, typing, xfer", "message": "Plugins loaded: alias, buflist, charset, exec, fifo, fset, guile, irc, javascript, logger, lua, perl, php, python, relay, ruby, script, spell, tcl, trigger, typing, xfer",
"tags": [] "tags": []
} }
] ],
"last_read_line_id": -1
} }
---- ----
@@ -702,6 +706,7 @@ HTTP/1.1 200 OK
"host": "~alice@example.com" "host": "~alice@example.com"
}, },
"keys": [], "keys": [],
"last_read_line_id": -1,
"nicklist_root": { "nicklist_root": {
"id": 0, "id": 0,
"parent_group_id": -1, "parent_group_id": -1,
@@ -900,7 +905,8 @@ HTTP/1.1 200 OK
"key": "up", "key": "up",
"command": "/fset -up" "command": "/fset -up"
} }
] ],
"last_read_line_id": -1
} }
---- ----
@@ -1173,6 +1179,51 @@ HTTP/1.1 200 OK
] ]
---- ----
[[resource_scripts]]
=== Scripts
Return loaded scripts (all languages).
Endpoint:
----
GET /api/scripts
----
Request example:
[source,shell]
----
curl -L -u 'plain:secret_password' 'https://localhost:9000/api/scripts'
----
Response:
[source,http]
----
HTTP/1.1 200 OK
----
[source,json]
----
[
{
"name": "highmon.pl",
"version": "2.7",
"description": "Highlight Monitor",
"author": "KenjiE20",
"license": "GPL3"
},
{
"name": "go.py",
"version": "3.1.1",
"description": "Quick jump to buffers",
"author": "Sébastien Helleu <flashcode@flashtux.org>",
"license": "GPL3"
}
]
----
[[resource_input]] [[resource_input]]
=== Input === Input
@@ -1504,6 +1555,7 @@ Body types that can be returned:
* `nick_group` (object) * `nick_group` (object)
* `nick` (object) * `nick` (object)
* `hotlist` (object) * `hotlist` (object)
* `scripts` (array)
* `ping` (object) * `ping` (object)
[TIP] [TIP]
+1 -1
View File
@@ -210,7 +210,7 @@ WeeChat:
| asciidoctor | ≥ 1.5.4 | asciidoctor | ≥ 1.5.4
| Build man page and documentation. | Build man page and documentation.
| ruby-pygments.rb | | python3-pygments, ruby-pygments.rb |
| Build documentation. | Build documentation.
| libcpputest-dev | ≥ 3.4 | libcpputest-dev | ≥ 3.4
+5 -5
View File
@@ -4424,7 +4424,7 @@ Prototype :
[source,c] [source,c]
---- ----
int weechat_mkdir_home (char *directory, int mode); int weechat_mkdir_home (const char *directory, int mode);
---- ----
Paramètres : Paramètres :
@@ -4471,7 +4471,7 @@ Prototype :
[source,c] [source,c]
---- ----
int weechat_mkdir (char *directory, int mode); int weechat_mkdir (const char *directory, int mode);
---- ----
Paramètres : Paramètres :
@@ -4512,7 +4512,7 @@ Prototype :
[source,c] [source,c]
---- ----
int weechat_mkdir_parents (char *directory, int mode); int weechat_mkdir_parents (const char *directory, int mode);
---- ----
Paramètres : Paramètres :
@@ -7838,7 +7838,7 @@ void weechat_config_search_with_string (const char *option_name,
struct t_config_file **config_file, struct t_config_file **config_file,
struct t_config_section **section, struct t_config_section **section,
struct t_config_option **option, struct t_config_option **option,
char **pos_option_name); const char **pos_option_name);
---- ----
Paramètres : Paramètres :
@@ -7861,7 +7861,7 @@ Exemple en C :
struct t_config_file *ptr_config_file; struct t_config_file *ptr_config_file;
struct t_config_section *ptr_section; struct t_config_section *ptr_section;
struct t_config_option *ptr_option; struct t_config_option *ptr_option;
char *option_name; const char *option_name;
weechat_config_search_with_string ("fichier.section.option", weechat_config_search_with_string ("fichier.section.option",
&ptr_config_file, &ptr_config_file,
+57 -5
View File
@@ -551,7 +551,8 @@ HTTP/1.1 200 OK
"plugin": "core", "plugin": "core",
"name": "weechat" "name": "weechat"
}, },
"keys": [] "keys": [],
"last_read_line_id": -1
}, },
{ {
"id": 1709932823423765, "id": 1709932823423765,
@@ -580,7 +581,8 @@ HTTP/1.1 200 OK
"tls_version": "TLS1.3", "tls_version": "TLS1.3",
"host": "~alice@example.com" "host": "~alice@example.com"
}, },
"keys": [] "keys": [],
"last_read_line_id": -1
}, },
{ {
"id": 1709932823649069, "id": 1709932823649069,
@@ -607,7 +609,8 @@ HTTP/1.1 200 OK
"nick": "alice", "nick": "alice",
"host": "~alice@example.com" "host": "~alice@example.com"
}, },
"keys": [] "keys": [],
"last_read_line_id": -1
} }
] ]
---- ----
@@ -663,7 +666,8 @@ HTTP/1.1 200 OK
"message": "Plugins loaded: alias, buflist, charset, exec, fifo, fset, guile, irc, javascript, logger, lua, perl, php, python, relay, ruby, script, spell, tcl, trigger, typing, xfer", "message": "Plugins loaded: alias, buflist, charset, exec, fifo, fset, guile, irc, javascript, logger, lua, perl, php, python, relay, ruby, script, spell, tcl, trigger, typing, xfer",
"tags": [] "tags": []
} }
] ],
"last_read_line_id": -1
} }
---- ----
@@ -709,6 +713,7 @@ HTTP/1.1 200 OK
"host": "~alice@example.com" "host": "~alice@example.com"
}, },
"keys": [], "keys": [],
"last_read_line_id": -1,
"nicklist_root": { "nicklist_root": {
"id": 0, "id": 0,
"parent_group_id": -1, "parent_group_id": -1,
@@ -906,7 +911,8 @@ HTTP/1.1 200 OK
"key": "up", "key": "up",
"command": "/fset -up" "command": "/fset -up"
} }
] ],
"last_read_line_id": -1
} }
---- ----
@@ -1185,6 +1191,51 @@ HTTP/1.1 200 OK
] ]
---- ----
[[resource_scripts]]
=== Scripts
Retourner la liste des scripts chargés (tous les langages).
Point de terminaison:
----
GET /api/scripts
----
Exemple de requête:
[source,shell]
----
curl -L -u 'plain:secret_password' 'https://localhost:9000/api/scripts'
----
Réponse:
[source,http]
----
HTTP/1.1 200 OK
----
[source,json]
----
[
{
"name": "highmon.pl",
"version": "2.7",
"description": "Highlight Monitor",
"author": "KenjiE20",
"license": "GPL3"
},
{
"name": "go.py",
"version": "3.1.1",
"description": "Quick jump to buffers",
"author": "Sébastien Helleu <flashcode@flashtux.org>",
"license": "GPL3"
}
]
----
[[resource_input]] [[resource_input]]
=== Entrée === Entrée
@@ -1524,6 +1575,7 @@ Les types de corps qui peuvent être retournés :
* `nick_group` (objet) * `nick_group` (objet)
* `nick` (objet) * `nick` (objet)
* `hotlist` (objet) * `hotlist` (objet)
* `scripts` (tableau)
* `ping` (objet) * `ping` (objet)
[TIP] [TIP]
+1 -1
View File
@@ -208,7 +208,7 @@ Le tableau suivant liste les paquets optionnels pour compiler WeeChat :
| asciidoctor | ≥ 1.5.4 | asciidoctor | ≥ 1.5.4
| Construction de la page man et de la documentation. | Construction de la page man et de la documentation.
| ruby-pygments.rb | | python3-pygments, ruby-pygments.rb |
| Construction de la documentation. | Construction de la documentation.
| libcpputest-dev | ≥ 3.4 | libcpputest-dev | ≥ 3.4
+5 -5
View File
@@ -4549,7 +4549,7 @@ Prototipo:
[source,c] [source,c]
---- ----
int weechat_mkdir_home (char *directory, int mode); int weechat_mkdir_home (const char *directory, int mode);
---- ----
Argomenti: Argomenti:
@@ -4597,7 +4597,7 @@ Prototipo:
[source,c] [source,c]
---- ----
int weechat_mkdir (char *directory, int mode); int weechat_mkdir (const char *directory, int mode);
---- ----
Argomenti: Argomenti:
@@ -4638,7 +4638,7 @@ Prototipo:
[source,c] [source,c]
---- ----
int weechat_mkdir_parents (char *directory, int mode); int weechat_mkdir_parents (const char *directory, int mode);
---- ----
Argomenti: Argomenti:
@@ -8011,7 +8011,7 @@ void weechat_config_search_with_string (const char *option_name,
struct t_config_file **config_file, struct t_config_file **config_file,
struct t_config_section **section, struct t_config_section **section,
struct t_config_option **option, struct t_config_option **option,
char **pos_option_name); const char **pos_option_name);
---- ----
Argomenti: Argomenti:
@@ -8034,7 +8034,7 @@ Esempio in C:
struct t_config_file *ptr_config_file; struct t_config_file *ptr_config_file;
struct t_config_section *ptr_section; struct t_config_section *ptr_section;
struct t_config_option *ptr_option; struct t_config_option *ptr_option;
char *option_name; const char *option_name;
weechat_config_search_with_string ("file.section.option", weechat_config_search_with_string ("file.section.option",
&ptr_config_file, &ptr_config_file,
+1 -1
View File
@@ -245,7 +245,7 @@ WeeChat:
| Build man page and documentation. | Build man page and documentation.
// TRANSLATION MISSING // TRANSLATION MISSING
| ruby-pygments.rb | | python3-pygments, ruby-pygments.rb |
| Build documentation. | Build documentation.
// TRANSLATION MISSING // TRANSLATION MISSING
+5 -5
View File
@@ -4477,7 +4477,7 @@ WeeChat ホームディレクトリの下にディレクトリを作成。
[source,c] [source,c]
---- ----
int weechat_mkdir_home (char *directory, int mode); int weechat_mkdir_home (const char *directory, int mode);
---- ----
引数: 引数:
@@ -4525,7 +4525,7 @@ weechat.mkdir_home("${weechat_cache_dir}/temp", 0755)
[source,c] [source,c]
---- ----
int weechat_mkdir (char *directory, int mode); int weechat_mkdir (const char *directory, int mode);
---- ----
引数: 引数:
@@ -4566,7 +4566,7 @@ weechat.mkdir("/tmp/mydir", 0755)
[source,c] [source,c]
---- ----
int weechat_mkdir_parents (char *directory, int mode); int weechat_mkdir_parents (const char *directory, int mode);
---- ----
引数: 引数:
@@ -7816,7 +7816,7 @@ void weechat_config_search_with_string (const char *option_name,
struct t_config_file **config_file, struct t_config_file **config_file,
struct t_config_section **section, struct t_config_section **section,
struct t_config_option **option, struct t_config_option **option,
char **pos_option_name); const char **pos_option_name);
---- ----
引数: 引数:
@@ -7838,7 +7838,7 @@ C 言語での使用例:
struct t_config_file *ptr_config_file; struct t_config_file *ptr_config_file;
struct t_config_section *ptr_section; struct t_config_section *ptr_section;
struct t_config_option *ptr_option; struct t_config_option *ptr_option;
char *option_name; const char *option_name;
weechat_config_search_with_string ("file.section.option", weechat_config_search_with_string ("file.section.option",
&ptr_config_file, &ptr_config_file,
+1 -1
View File
@@ -229,7 +229,7 @@ WeeChat:
| man ページと文書のビルド | man ページと文書のビルド
// TRANSLATION MISSING // TRANSLATION MISSING
| ruby-pygments.rb | | python3-pygments, ruby-pygments.rb |
| Build documentation. | Build documentation.
| libcpputest-dev | 3.4 以上 | libcpputest-dev | 3.4 以上
+1 -1
View File
@@ -210,7 +210,7 @@ WeeChat:
| asciidoctor | ≥ 1.5.4 | asciidoctor | ≥ 1.5.4
| Tworzenie strony man i dokumentacji. | Tworzenie strony man i dokumentacji.
| ruby-pygments.rb | | python3-pygments, ruby-pygments.rb |
| Dokumentacja budowania. | Dokumentacja budowania.
| libcpputest-dev | ≥ 3.4 | libcpputest-dev | ≥ 3.4
+1 -2
View File
@@ -128,8 +128,7 @@ WeeChat „језгро” се налази у следећим директо
|=== |===
| Путања/фајл | Опис | Путања/фајл | Опис
| core/ | Функције језгра: тачка улаза, интерне структуре. | core/ | Функције језгра: тачка улаза, интерне структуре.
// TRANSLATION MISSING |    core-args.c | Аргументи командне-линије.
|    core-args.c | Command-line arguments.
|    core-arraylist.c | Листе низова. |    core-arraylist.c | Листе низова.
|    core-backtrace.c | Испис трага након краха. |    core-backtrace.c | Испис трага након краха.
|    core-calc.c | Израчунавање резултата израза. |    core-calc.c | Израчунавање резултата израза.
+5 -5
View File
@@ -4209,7 +4209,7 @@ _Ажурирано у верзији 3.2._
[source,c] [source,c]
---- ----
int weechat_mkdir_home (char *directory, int mode); int weechat_mkdir_home (const char *directory, int mode);
---- ----
Аргументи: Аргументи:
@@ -4255,7 +4255,7 @@ weechat.mkdir_home("${weechat_cache_dir}/temp", 0755)
[source,c] [source,c]
---- ----
int weechat_mkdir (char *directory, int mode); int weechat_mkdir (const char *directory, int mode);
---- ----
Аргументи: Аргументи:
@@ -4296,7 +4296,7 @@ weechat.mkdir("/tmp/mydir", 0755)
[source,c] [source,c]
---- ----
int weechat_mkdir_parents (char *directory, int mode); int weechat_mkdir_parents (const char *directory, int mode);
---- ----
Аргументи: Аргументи:
@@ -7492,7 +7492,7 @@ void weechat_config_search_with_string (const char *option_name,
struct t_config_file **config_file, struct t_config_file **config_file,
struct t_config_section **section, struct t_config_section **section,
struct t_config_option **option, struct t_config_option **option,
char **pos_option_name); const char **pos_option_name);
---- ----
Аргументи: Аргументи:
@@ -7510,7 +7510,7 @@ C пример:
struct t_config_file *ptr_config_file; struct t_config_file *ptr_config_file;
struct t_config_section *ptr_section; struct t_config_section *ptr_section;
struct t_config_option *ptr_option; struct t_config_option *ptr_option;
char *option_name; const char *option_name;
weechat_config_search_with_string ("file.section.option", weechat_config_search_with_string ("file.section.option",
&ptr_config_file, &ptr_config_file,
+59 -5
View File
@@ -543,7 +543,8 @@ HTTP/1.1 200 OK
"plugin": "core", "plugin": "core",
"name": "weechat" "name": "weechat"
}, },
"keys": [] "keys": [],
"last_read_line_id": -1
}, },
{ {
"id": 1709932823423765, "id": 1709932823423765,
@@ -573,7 +574,8 @@ HTTP/1.1 200 OK
"tls_version": "TLS1.3", "tls_version": "TLS1.3",
"host": "~alice@example.com" "host": "~alice@example.com"
}, },
"keys": [] "keys": [],
"last_read_line_id": -1
}, },
{ {
"id": 1709932823649069, "id": 1709932823649069,
@@ -601,7 +603,8 @@ HTTP/1.1 200 OK
"nick": "alice", "nick": "alice",
"host": "~alice@example.com" "host": "~alice@example.com"
}, },
"keys": [] "keys": [],
"last_read_line_id": -1
} }
] ]
---- ----
@@ -657,7 +660,8 @@ HTTP/1.1 200 OK
"message": "Учитани додаци: alias, buflist, charset, exec, fifo, fset, guile, irc, javascript, logger, lua, perl, php, python, relay, ruby, script, spell, tcl, trigger, typing, xfer", "message": "Учитани додаци: alias, buflist, charset, exec, fifo, fset, guile, irc, javascript, logger, lua, perl, php, python, relay, ruby, script, spell, tcl, trigger, typing, xfer",
"tags": [] "tags": []
} }
] ],
"last_read_line_id": -1
} }
---- ----
@@ -704,6 +708,7 @@ HTTP/1.1 200 OK
"host": "~alice@example.com" "host": "~alice@example.com"
}, },
"keys": [], "keys": [],
"last_read_line_id": -1,
"nicklist_root": { "nicklist_root": {
"id": 0, "id": 0,
"parent_group_id": -1, "parent_group_id": -1,
@@ -902,7 +907,8 @@ HTTP/1.1 200 OK
"key": "up", "key": "up",
"command": "/fset -up" "command": "/fset -up"
} }
] ],
"last_read_line_id": -1
} }
---- ----
@@ -1175,6 +1181,53 @@ HTTP/1.1 200 OK
] ]
---- ----
// TRANSLATION MISSING
[[resource_scripts]]
=== Scripts
// TRANSLATION MISSING
Return loaded scripts (all languages).
Крајња тачка:
----
GET /api/scripts
----
Пример захтева:
[source,shell]
----
curl -L -u 'plain:secret_password' 'https://localhost:9000/api/scripts'
----
Одговор:
[source,http]
----
HTTP/1.1 200 OK
----
[source,json]
----
[
{
"name": "highmon.pl",
"version": "2.7",
"description": "Highlight Monitor",
"author": "KenjiE20",
"license": "GPL3"
},
{
"name": "go.py",
"version": "3.1.1",
"description": "Quick jump to buffers",
"author": "Sébastien Helleu <flashcode@flashtux.org>",
"license": "GPL3"
}
]
----
[[resource_input]] [[resource_input]]
=== Input === Input
@@ -1504,6 +1557,7 @@ GUID `258EAFA5-E914-47DA-95CA-C5AB0DC85B11` (SHA-1 се кодира у base64).
* `nick_group` (објекат) * `nick_group` (објекат)
* `nick` (објекат) * `nick` (објекат)
* `hotlist` (објекат) * `hotlist` (објекат)
* `scripts` (низ)
* `ping` (објекат) * `ping` (објекат)
[TIP] [TIP]
+1 -1
View File
@@ -203,7 +203,7 @@ WeeChat мора да се изгради са CMake.
| asciidoctor | ≥ 1.5.4 | asciidoctor | ≥ 1.5.4
| Изградња man странице и документације. | Изградња man странице и документације.
| ruby-pygments.rb | | python3-pygments, ruby-pygments.rb |
| Документација изградње. | Документација изградње.
| libcpputest-dev | ≥ 3.4 | libcpputest-dev | ≥ 3.4
+53 -25
View File
@@ -23,10 +23,10 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: WeeChat\n" "Project-Id-Version: WeeChat\n"
"Report-Msgid-Bugs-To: flashcode@flashtux.org\n" "Report-Msgid-Bugs-To: flashcode@flashtux.org\n"
"POT-Creation-Date: 2026-03-21 17:24+0100\n" "POT-Creation-Date: 2026-06-08 22:23+0200\n"
"PO-Revision-Date: 2026-03-12 20:24+0100\n" "PO-Revision-Date: 2026-05-30 14:01+0200\n"
"Last-Translator: Ondřej Súkup <mimi.vx@gmail.com>\n" "Last-Translator: Ondřej Súkup <mimi.vx@gmail.com>\n"
"Language-Team: weechat-dev <weechat-dev@nongnu.org>\n" "Language-Team: Czech <weechat-dev@nongnu.org>\n"
"Language: cs\n" "Language: cs\n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
@@ -164,10 +164,10 @@ msgstr ""
#, c-format #, c-format
msgid "" msgid ""
"WeeChat %s Copyright %s, compiled on %s %s\n" "WeeChat %s Copyright %s, compiled on %s %s\n"
"Developed by Sébastien Helleu <flashcode@flashtux.org> - %s" "Developed by %s <%s> - %s"
msgstr "" msgstr ""
"WeeChat %s Copyright %s, zkompilováno %s %s\n" "WeeChat %s Copyright %s, zkompilováno %s %s\n"
"Vyvinutý Sébastienem Helleu <flashcode@flashtux.org> - %s" "Vyvinutý %s <%s> - %s"
msgid "Usage:" msgid "Usage:"
msgstr "" msgstr ""
@@ -1178,6 +1178,16 @@ msgstr ""
"zpráva: zpráva pro nepřítomnost (pokud není zadána je status nepřítomnosti " "zpráva: zpráva pro nepřítomnost (pokud není zadána je status nepřítomnosti "
"odebrán)" "odebrán)"
msgid ""
"By default the away status is displayed only locally by the irc plugin (see /"
"help irc.look.display_away)."
msgstr ""
msgid ""
"This command can be caught by other plugins and scripts (see \"Plugin API "
"reference\", function \"hook_command_run\")."
msgstr ""
msgid "manage bars" msgid "manage bars"
msgstr "řídit pole" msgstr "řídit pole"
@@ -11806,8 +11816,8 @@ msgstr "jméno serveru"
msgid "get nick from IRC host" msgid "get nick from IRC host"
msgstr "získat přezdívku od IRC hosta" msgstr "získat přezdívku od IRC hosta"
msgid "IRC host (like `:nick!name@server.com`)" msgid "IRC host (like `:nick!name@server`)"
msgstr "IRC host (jako `:nick!name@server.com`)" msgstr "IRC host (jako `:nick!name@server`)"
msgid "" msgid ""
"get nick color code (*deprecated* since version 1.5, replaced by " "get nick color code (*deprecated* since version 1.5, replaced by "
@@ -12037,8 +12047,8 @@ msgstr "%s%s: tenhle buffer není kanál!"
#, c-format #, c-format
msgid "" msgid ""
"%d channels (total: %d) | Filter: %s | Sort: %s | Key(input): ctrl+j=join " "%d channels (total: %d) | Filter: %s | Sort: %s | Keys: ctrl+j=join channel "
"channel, ($)=refresh, (q)=close buffer" "| Input: $=refresh, s:x,y=sort, words=filter, *=reset filter, q=close buffer"
msgstr "" msgstr ""
msgid "Empty list of channels, try \"$\" to refresh list" msgid "Empty list of channels, try \"$\" to refresh list"
@@ -13235,7 +13245,7 @@ msgid ""
"and the current file is renamed with extension .1; an integer number with a " "and the current file is renamed with extension .1; an integer number with a "
"suffix is allowed: b = bytes (default if no unit given), k = kilobytes, m = " "suffix is allowed: b = bytes (default if no unit given), k = kilobytes, m = "
"megabytes, g = gigabytes, t = terabytes; example: \"2g\" causes a rotation " "megabytes, g = gigabytes, t = terabytes; example: \"2g\" causes a rotation "
"if the file size is > 2,000,000,000 bytes; if set to \"0\", no rotation is " "if the file size is greater than 2 GB; if set to \"0\", no rotation is "
"performed (unlimited log size); WARNING: before changing this option, you " "performed (unlimited log size); WARNING: before changing this option, you "
"should first set the compression type via option " "should first set the compression type via option "
"logger.file.rotation_compression_type" "logger.file.rotation_compression_type"
@@ -15086,11 +15096,11 @@ msgstr ""
#, fuzzy #, fuzzy
msgid "" msgid ""
"comma separated list of hash algorithms used for password authentication in " "comma separated list of hash algorithms used for password authentication in "
"weechat protocol, among these values: \"plain\" (password in plain text, not " "\"api\" and \"weechat\" protocols, among these values: \"plain\" (password "
"hashed), \"sha256\", \"sha512\", \"pbkdf2+sha256\", \"pbkdf2+sha512\"), " "in plain text, not hashed), \"sha256\", \"sha512\", \"pbkdf2+sha256\", "
"\"*\" means all algorithms, a name beginning with \"!\" is a negative value " "\"pbkdf2+sha512\"), \"*\" means all algorithms, a name beginning with \"!\" "
"to prevent an algorithm from being used, wildcard \"*\" is allowed in names " "is a negative value to prevent an algorithm from being used, wildcard \"*\" "
"(examples: \"*\", \"pbkdf2*\", \"*,!plain\")" "is allowed in names (examples: \"*\", \"pbkdf2*\", \"*,!plain\")"
msgstr "" msgstr ""
"čárkou rozdělený seznam pluginů pro automatické načtení při spuštění \"*\" " "čárkou rozdělený seznam pluginů pro automatické načtení při spuštění \"*\" "
"znamená všechny nalezené pluginy, jméno začínající \"!\" je negativní " "znamená všechny nalezené pluginy, jméno začínající \"!\" je negativní "
@@ -15098,10 +15108,10 @@ msgstr ""
"pro vybrání několika pluginů (příklady: \"*\" nebo \"*,!lua,!tcl\")" "pro vybrání několika pluginů (příklady: \"*\" nebo \"*,!lua,!tcl\")"
msgid "" msgid ""
"number of iterations asked to the client in weechat protocol when a hashed " "number of iterations asked to the client in \"api\" and \"weechat\" "
"password with algorithm PBKDF2 is used for authentication; more iterations " "protocols when a hashed password with algorithm PBKDF2 is used for "
"is better in term of security but is slower to compute; this number should " "authentication; more iterations is better in term of security but is slower "
"not be too high if your CPU is slow" "to compute; this number should not be too high if your CPU is slow"
msgstr "" msgstr ""
msgid "" msgid ""
@@ -15132,6 +15142,11 @@ msgid ""
"1 are recommended values)" "1 are recommended values)"
msgstr "" msgstr ""
msgid ""
"permissions for the Unix socket, as octal value (see man chmod); it must be "
"a number with 3 digits, each between 0 and 7"
msgstr ""
msgid "" msgid ""
"POSIX extended regular expression with origins allowed in websockets (case-" "POSIX extended regular expression with origins allowed in websockets (case-"
"insensitive, use \"(?-i)\" at beginning to make it case-sensitive), example: " "insensitive, use \"(?-i)\" at beginning to make it case-sensitive), example: "
@@ -15241,7 +15256,7 @@ msgstr "Klienti pro přenos:"
#, fuzzy #, fuzzy
msgid "" msgid ""
"protocol,status (both are optional, for each argument \"*\" means all; " "protocol,status (both are optional, for each argument \"*\" means all; "
"protocols: irc, weechat; statuses: connecting, waiting_auth, connected, " "protocols: api, irc, weechat; statuses: connecting, waiting_auth, connected, "
"auth_failed, disconnected)" "auth_failed, disconnected)"
msgstr "" msgstr ""
"jména stavů (volitelné): connecting, waiting_auth, connected, auth_failed, " "jména stavů (volitelné): connecting, waiting_auth, connected, auth_failed, "
@@ -15380,6 +15395,10 @@ msgstr "%s%s: nemohu se \"navázat\" na port %d (%s): chyba %d %s"
msgid "%s%s: cannot \"bind\" on port %d (%s): error %d %s" msgid "%s%s: cannot \"bind\" on port %d (%s): error %d %s"
msgstr "%s%s: nemohu se \"navázat\" na port %d (%s): chyba %d %s" msgstr "%s%s: nemohu se \"navázat\" na port %d (%s): chyba %d %s"
#, fuzzy, c-format
msgid "%s%s: warning: failed to set permissions on path %s (%s): error %d %s"
msgstr "%s%s: nemohu \"naslouchat\" na portu %d (%s): chyba %d %s"
#, fuzzy, c-format #, fuzzy, c-format
msgid "%s%s: cannot \"listen\" on path %s (%s): error %d %s" msgid "%s%s: cannot \"listen\" on path %s (%s): error %d %s"
msgstr "%s%s: nemohu \"naslouchat\" na portu %d (%s): chyba %d %s" msgstr "%s%s: nemohu \"naslouchat\" na portu %d (%s): chyba %d %s"
@@ -15424,8 +15443,8 @@ msgstr ""
msgid "%s%s: not enough memory for listening on new port" msgid "%s%s: not enough memory for listening on new port"
msgstr "%s%s: nedostatek paměti pro poslouchání na portu" msgstr "%s%s: nedostatek paměti pro poslouchání na portu"
msgid "Relay WeeChat data to remote application (irc/weechat protocols)" msgid "Relay WeeChat data to remote applications"
msgstr "Předání dat WeeChatu do vzdálené aplikace (irc/weechat protokoly)" msgstr "Předání dat WeeChatu do vzdálené aplikace"
msgid "connecting" msgid "connecting"
msgstr "připojuji" msgstr "připojuji"
@@ -15660,11 +15679,16 @@ msgstr "(nic)"
msgid "Alt+key/input: v=back to list d=jump to diff" msgid "Alt+key/input: v=back to list d=jump to diff"
msgstr "Alt+klávesa/vstup: v=zpět na seznam d=skoč na rozdíl" msgstr "Alt+klávesa/vstup: v=zpět na seznam d=skoč na rozdíl"
#, c-format #, fuzzy, c-format
#| msgid ""
#| "%d/%d scripts (filter: %s) | Sort: %s | Alt+key/input: i=install, "
#| "r=remove, l=load, L=reload, u=unload, A=autoload, h=(un)hold, v=view "
#| "script | Input: q=close, $=refresh, s:x,y=sort, words=filter, *=reset "
#| "filter | Mouse: left=select, right=install/remove"
msgid "" msgid ""
"%d/%d scripts (filter: %s) | Sort: %s | Alt+key/input: i=install, r=remove, " "%d/%d scripts | Filter: %s | Sort: %s | Alt+key/input: i=install, r=remove, "
"l=load, L=reload, u=unload, A=autoload, h=(un)hold, v=view script | Input: " "l=load, L=reload, u=unload, A=autoload, h=(un)hold, v=view script | Input: "
"q=close, $=refresh, s:x,y=sort, words=filter, *=reset filter | Mouse: " "$=refresh, s:x,y=sort, words=filter, *=reset filter, q=close buffer | Mouse: "
"left=select, right=install/remove" "left=select, right=install/remove"
msgstr "" msgstr ""
"%d/%d scripty (filtr: %s) | Seřaď: %s | Alt+klavesa/vstup: i=instalace, " "%d/%d scripty (filtr: %s) | Seřaď: %s | Alt+klavesa/vstup: i=instalace, "
@@ -16044,6 +16068,10 @@ msgstr "načteny %s skripty:"
msgid "script name with extension" msgid "script name with extension"
msgstr "seznam skriptů" msgstr "seznam skriptů"
#, fuzzy
msgid "comma-separated list of plugin:extension with supported languages"
msgstr "čárkami oddělený seznam slovníků, které použít pro tento buffer"
#, fuzzy #, fuzzy
msgid "script name with extension (wildcard \"*\" is allowed) (optional)" msgid "script name with extension (wildcard \"*\" is allowed) (optional)"
msgstr "jméno serveru (zástupný znak \"*\" je povolen) (volitelné)" msgstr "jméno serveru (zástupný znak \"*\" je povolen) (volitelné)"
+98 -72
View File
@@ -23,21 +23,22 @@
# #
# #
# w8rabbit <w8rabbit@mail.i2p>, 2018. # w8rabbit <w8rabbit@mail.i2p>, 2018.
# Nils Görs <weechatter@arcor.de>, 2022-2023. # Nils Görs <>, 2022-2026.
#
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: WeeChat\n" "Project-Id-Version: WeeChat\n"
"Report-Msgid-Bugs-To: flashcode@flashtux.org\n" "Report-Msgid-Bugs-To: flashcode@flashtux.org\n"
"POT-Creation-Date: 2026-03-21 17:24+0100\n" "POT-Creation-Date: 2026-06-08 22:23+0200\n"
"PO-Revision-Date: 2026-03-21 17:24+0100\n" "PO-Revision-Date: 2026-06-09 10:41+0200\n"
"Last-Translator: Nils Görs <weechatter@arcor.de>\n" "Last-Translator: Nils Görs <weechatter@arcor.de>\n"
"Language-Team: German <kde-i18n-de@kde.org>\n" "Language-Team: German - Germany <weechat-dev@nongnu.org>\n"
"Language: de_DE\n" "Language: de\n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Generator: Poedit 3.4.2\n" "X-Generator: Poedit 3.9\n"
"X-Poedit-Bookmarks: -1,-1,180,-1,-1,-1,-1,-1,-1,-1\n" "X-Poedit-Bookmarks: -1,-1,180,-1,-1,-1,-1,-1,-1,-1\n"
"X-Poedit-SourceCharset: utf-8\n" "X-Poedit-SourceCharset: utf-8\n"
@@ -181,10 +182,10 @@ msgstr "deaktiviere init/deinit von gcrypt"
#, c-format #, c-format
msgid "" msgid ""
"WeeChat %s Copyright %s, compiled on %s %s\n" "WeeChat %s Copyright %s, compiled on %s %s\n"
"Developed by Sébastien Helleu <flashcode@flashtux.org> - %s" "Developed by %s <%s> - %s"
msgstr "" msgstr ""
"WeeChat %s Copyright %s, kompiliert am %s %s\n" "WeeChat %s Copyright %s, kompiliert am %s %s\n"
"Entwickelt von Sébastien Helleu <flashcode@flashtux.org> - %s" "Entwickelt von %s <%s> - %s"
msgid "Usage:" msgid "Usage:"
msgstr "Aufruf:" msgstr "Aufruf:"
@@ -1170,6 +1171,20 @@ msgstr ""
"Nachricht: Abwesenheitsnachricht (ohne Angabe einer Nachricht wird der " "Nachricht: Abwesenheitsnachricht (ohne Angabe einer Nachricht wird der "
"Abwesenheitszustand entfernt)" "Abwesenheitszustand entfernt)"
msgid ""
"By default the away status is displayed only locally by the irc plugin (see /"
"help irc.look.display_away)."
msgstr ""
"Standardmäßig wird der Abwesenheitsstatus durch die IRC-Erweiterung nur "
"lokal angezeigt (siehe /help irc.look.display_away)."
msgid ""
"This command can be caught by other plugins and scripts (see \"Plugin API "
"reference\", function \"hook_command_run\")."
msgstr ""
"Dieser Befehl kann von anderen Erweiterungen und Skripten abgefangen werden. "
"(siehe \"Anleitung für API Erweiterung\", Funktion \"hook_command_run\")."
msgid "manage bars" msgid "manage bars"
msgstr "Infobars verwalten" msgstr "Infobars verwalten"
@@ -1275,16 +1290,12 @@ msgstr "Maske: Name, wobei der Platzhalter \"*\" zulässig ist"
msgid "raw[set]: set a value for a bar property" msgid "raw[set]: set a value for a bar property"
msgstr "raw[set]: legt einen Wert für eine Bar-Eigenschaft fest" msgstr "raw[set]: legt einen Wert für eine Bar-Eigenschaft fest"
#, fuzzy
#| msgid ""
#| "option: option to change (for options list, look at /set weechat.bar."
#| "<barname>.*)"
msgid "" msgid ""
"option: option to change (for options list, look at /set weechat.bar." "option: option to change (for options list, look at /set weechat.bar."
"<bar_name>.*)" "<bar_name>.*)"
msgstr "" msgstr ""
"option: Option die geändert werden soll (eine Liste der möglichen Optionen " "option: Option die geändert werden soll (eine Liste der möglichen Optionen "
"findet man unter /set weechat.bar.<barname>.*)" "findet man unter /set weechat.bar.<bar_name>.*)"
msgid "value: new value for option" msgid "value: new value for option"
msgstr "Wert: neuer Wert für die Option" msgstr "Wert: neuer Wert für die Option"
@@ -3314,7 +3325,7 @@ msgstr ""
"werden" "werden"
msgid "raw[-c]: alias for \"-concat \\x20 -strip \\x20 -skipempty\"" msgid "raw[-c]: alias for \"-concat \\x20 -strip \\x20 -skipempty\""
msgstr "raw[-c]: Alias für \"-concat \\x20 -strip \\x20 -skipempty\"" msgstr "raw[-c]: Alias für \"-concat \\x20 -strip \\x20 -skipempty\""
msgid "" msgid ""
"raw[-nl]: display messages in English during the command execution (do not " "raw[-nl]: display messages in English during the command execution (do not "
@@ -3629,16 +3640,12 @@ msgstr "raw[del]: entfernt einen oder mehrere Proxy"
msgid "raw[set]: set a value for a proxy property" msgid "raw[set]: set a value for a proxy property"
msgstr "raw[set]: setzt einen Wert für Proxy-Eigenschaft" msgstr "raw[set]: setzt einen Wert für Proxy-Eigenschaft"
#, fuzzy
#| msgid ""
#| "option: option to change (for options list, look at /set weechat.proxy."
#| "<proxyname>.*)"
msgid "" msgid ""
"option: option to change (for options list, look at /set weechat.proxy." "option: option to change (for options list, look at /set weechat.proxy."
"<proxy_name>.*)" "<proxy_name>.*)"
msgstr "" msgstr ""
"Option: Option, die geändert werden soll (für eine Liste der möglichen " "Option: Option, die geändert werden soll (für eine Liste der möglichen "
"Optionen, bitte folgenden Befehl nutzen: /set weechat.proxy.<proxyname>.*)" "Optionen, bitte folgenden Befehl nutzen: /set weechat.proxy.<proxy_name>.*)"
msgid " add a http proxy, running on local host, port 8888:" msgid " add a http proxy, running on local host, port 8888:"
msgstr "" msgstr ""
@@ -3932,7 +3939,7 @@ msgid " /secure set oftc my_password"
msgstr " /secure set oftc Mein_Passwort" msgstr " /secure set oftc Mein_Passwort"
msgid " alias to ghost the nick \"andrew\":" msgid " alias to ghost the nick \"andrew\":"
msgstr "" msgstr " Alias zum ghosten des Nicks \"andrew\":"
msgid "" msgid ""
" /alias add ghost /eval /msg -server libera nickserv ghost andrew $" " /alias add ghost /eval /msg -server libera nickserv ghost andrew $"
@@ -11181,9 +11188,7 @@ msgid "[-noswitch] [-server <server>] <nick>[,<nick>...] [<text>]"
msgstr "[-noswitch] [-server <server>] <nick>[,<nick>...] [<text>]" msgstr "[-noswitch] [-server <server>] <nick>[,<nick>...] [<text>]"
msgid "quiet nicks or hosts" msgid "quiet nicks or hosts"
msgstr "" msgstr "Nicks oder Hosts das Wort entziehen"
"Nicks oder Hosts das Wort entziehen (User können im Kanal erst schreiben, "
"wenn sie \"+v\" oder höher besitzen)"
msgid "" msgid ""
"Without argument, this command displays the quiet list for current channel." "Without argument, this command displays the quiet list for current channel."
@@ -11688,7 +11693,7 @@ msgid "privates on all IRC servers"
msgstr "Private auf allen IRC Servern" msgstr "Private auf allen IRC Servern"
msgid "default kick message" msgid "default kick message"
msgstr "Standardmitteilung wenn man jemanden aus einem Kanal wirftchannel" msgstr "Standardmitteilung wenn man jemanden aus einem Kanal wirft"
msgid "default part message for IRC channel" msgid "default part message for IRC channel"
msgstr "Standardmitteilung beim Verlassen (/part) eines IRC-Kanals" msgstr "Standardmitteilung beim Verlassen (/part) eines IRC-Kanals"
@@ -13121,8 +13126,8 @@ msgstr "Servername"
msgid "get nick from IRC host" msgid "get nick from IRC host"
msgstr "Nicknamen des IRC-Hosts erhalten" msgstr "Nicknamen des IRC-Hosts erhalten"
msgid "IRC host (like `:nick!name@server.com`)" msgid "IRC host (like `:nick!name@server`)"
msgstr "IRC host (in der Form `:nick!name@server.com`)" msgstr "IRC host (in der Form `:nick!name@server`)"
msgid "" msgid ""
"get nick color code (*deprecated* since version 1.5, replaced by " "get nick color code (*deprecated* since version 1.5, replaced by "
@@ -13348,11 +13353,12 @@ msgstr "%s%s: Dieser Buffer ist kein Kanal!"
#, c-format #, c-format
msgid "" msgid ""
"%d channels (total: %d) | Filter: %s | Sort: %s | Key(input): ctrl+j=join " "%d channels (total: %d) | Filter: %s | Sort: %s | Keys: ctrl+j=join channel "
"channel, ($)=refresh, (q)=close buffer" "| Input: $=refresh, s:x,y=sort, words=filter, *=reset filter, q=close buffer"
msgstr "" msgstr ""
"%d Kanäle (Total: %d) | Filter: %s | Sortierung: %s | Taste(Eingabe): " "%d Kanäle (Total: %d) | Filter: %s | Sortierung: %s | Tastenbefehl: "
"ctrl+j=Kanal betreten, ($)=Aktualisierung, (q)=Buffer schließen" "ctrl+j=Kanal betreten | Eingabezeile: $=Aktualisierung, s:x,y=Sortierung, "
"Text=Filter, *= Filter zurücksetzen, q=Buffer schließen"
msgid "Empty list of channels, try \"$\" to refresh list" msgid "Empty list of channels, try \"$\" to refresh list"
msgstr "Liste der Kanäle leeren, nutze \"$\" um die Liste zu aktualisieren" msgstr "Liste der Kanäle leeren, nutze \"$\" um die Liste zu aktualisieren"
@@ -14582,21 +14588,21 @@ msgid ""
"and the current file is renamed with extension .1; an integer number with a " "and the current file is renamed with extension .1; an integer number with a "
"suffix is allowed: b = bytes (default if no unit given), k = kilobytes, m = " "suffix is allowed: b = bytes (default if no unit given), k = kilobytes, m = "
"megabytes, g = gigabytes, t = terabytes; example: \"2g\" causes a rotation " "megabytes, g = gigabytes, t = terabytes; example: \"2g\" causes a rotation "
"if the file size is > 2,000,000,000 bytes; if set to \"0\", no rotation is " "if the file size is greater than 2 GB; if set to \"0\", no rotation is "
"performed (unlimited log size); WARNING: before changing this option, you " "performed (unlimited log size); WARNING: before changing this option, you "
"should first set the compression type via option " "should first set the compression type via option "
"logger.file.rotation_compression_type" "logger.file.rotation_compression_type"
msgstr "" msgstr ""
"Wenn diese Größe erreicht ist, wird eine Rotation der Protokolldateien " "Wenn diese Größe erreicht ist, wird eine Rotation der Protokolldateien "
"durchgeführt: dievorhandene rotierte Protokolldateien werden umbenannt (.1 " "durchgeführt: die vorhandenen rotierten Protokolldateien werden umbenannt "
"wird zu .2, .2 wird zu .3 usw.).Die aktuelle Datei erhält wird umbenannt und " "(.1 wird zu .2, .2 wird zu .3 usw.).Die aktuelle Datei wird umbenannt und "
"erhält .1 als Erweiterung; eine ganze Zahl mitSuffix ist erlaubt: b = Bytes " "erhält .1 als Dateierweiterung; eine ganze Zahl mit Suffix ist erlaubt: b = "
"(Standard, wenn keine Einheit angegeben ist), k = Kilobytes, m =Megabyte, g " "Bytes (Standard, wenn keine Einheit angegeben ist), k = Kilobytes, m = "
"= Gigabyte, t = Terabyte; Beispiel: \"2g\" bewirkt eine Rotationsobald die " "Megabyte, g = Gigabyte, t = Terabyte; Beispiel: \"2g\" startet eine Rotation "
"Dateigröße > 2.000.000.000 Byte ist; wenn auf „0“ gesetzt, erfolgt keine " "sobald die Dateigröße > 2GB ist; wenn auf „0“ gesetzt, erfolgt keine "
"Rotation der Dateien (unbegrenzte Protokollgröße); WARNUNG: Bevor Sie diese " "Rotation der Dateien (unbegrenzte Protokollgröße); WARNUNG: Bevor Sie diese "
"Option ändern,sollte sie zuerst den Komprimierungstyp über die Option " "Option ändern,sollte sie zuerst den Komprimierungstyp über die Option "
"logger.file festlegen.rotation_compression_type" "logger.file.rotation_compression_type festlegen"
msgid "" msgid ""
"timestamp used in log files (see man strftime for date/time specifiers, " "timestamp used in log files (see man strftime for date/time specifiers, "
@@ -16446,31 +16452,33 @@ msgstr ""
msgid "" msgid ""
"comma separated list of hash algorithms used for password authentication in " "comma separated list of hash algorithms used for password authentication in "
"weechat protocol, among these values: \"plain\" (password in plain text, not " "\"api\" and \"weechat\" protocols, among these values: \"plain\" (password "
"hashed), \"sha256\", \"sha512\", \"pbkdf2+sha256\", \"pbkdf2+sha512\"), " "in plain text, not hashed), \"sha256\", \"sha512\", \"pbkdf2+sha256\", "
"\"*\" means all algorithms, a name beginning with \"!\" is a negative value " "\"pbkdf2+sha512\"), \"*\" means all algorithms, a name beginning with \"!\" "
"to prevent an algorithm from being used, wildcard \"*\" is allowed in names " "is a negative value to prevent an algorithm from being used, wildcard \"*\" "
"(examples: \"*\", \"pbkdf2*\", \"*,!plain\")" "is allowed in names (examples: \"*\", \"pbkdf2*\", \"*,!plain\")"
msgstr "" msgstr ""
"durch Kommata getrennte Liste der Hash-Algorithmen, die für die " "durch Kommata getrennte Liste der Hash-Algorithmen, die für die "
"Kennwortauthentifizierung im Weechat-Protokoll verwendet werden, unter " "Kennwortauthentifizierung für die \"api\" und \"weechat\" Protokolle "
"diesen Werten: \"plain\" (Kennwort im Klartext, nicht gehasht), \"sha256\", " "verwendet werden. Mögliche Werte sind: \"plain\" (Kennwort im Klartext, "
"\"sha512\", \"pbkdf2 + sha256\", \"pbkdf2 + sha512\" ), \"*\" bedeutet alle " "nicht gehasht), \"sha256\", \"sha512\", \"pbkdf2+sha256\", "
"Algorithmen, ein Name, der mit \"!\" beginnt ist ein negativer Wert, um die " "\"pbkdf2+sha512\" ), \"*\" bedeutet alle Algorithmen, ein Name, der mit \"!"
"Verwendung eines Algorithmus zu vermeiden. Ein Platzhalter \"*\" im Namen " "\" beginnt ist ein negativer Wert, um die Verwendung eines Algorithmus zu "
"ist zulässig (Beispiele: \"*\", \"pbkdf2 *\", \"*,! plain\")" "unterbinden. Ein Platzhalter \"*\" im Namen ist zulässig (Beispiele: \"*\", "
"\"pbkdf2 *\", \"*,! plain\")"
msgid "" msgid ""
"number of iterations asked to the client in weechat protocol when a hashed " "number of iterations asked to the client in \"api\" and \"weechat\" "
"password with algorithm PBKDF2 is used for authentication; more iterations " "protocols when a hashed password with algorithm PBKDF2 is used for "
"is better in term of security but is slower to compute; this number should " "authentication; more iterations is better in term of security but is slower "
"not be too high if your CPU is slow" "to compute; this number should not be too high if your CPU is slow"
msgstr "" msgstr ""
"Anzahl der Iterationen, die im Weechat-Protokoll an den Client gesendet " "Anzahl der Iterationen, die bei den Protokollen \"api\" und \"weechat\" vom "
"werden, wenn ein Hash-Passwort mit dem Algorithmus PBKDF2 zur " "Client angefordert wird, wenn zur Authentifizierung ein gehashtes Passwort "
"Authentifizierung verwendet wird; Mehr Iterationen sind aus " "mit dem Algorithmus PBKDF2 zur Authentifizierung verwendet wird. Eine höhere "
"Sicherheitsgründen besser, aber langsamer zu berechnen. Diese Zahl sollte " "Anzahl an Iterationen bietet zwar mehr Sicherheit, erfordert jedoch eine "
"nicht zu hoch sein, wenn Ihre CPU langsam ist" "verlängerte Rechenzeit; dieser Wert sollte deshalb nicht zu hoch gewählt "
"werden, falls Ihre CPU leistungsschwach ist"
msgid "" msgid ""
"number of seconds to allow before and after the current time for the hash of " "number of seconds to allow before and after the current time for the hash of "
@@ -16516,6 +16524,13 @@ msgstr ""
"danach, ...; umso höher die genutzte Zahl umso unsicherer das Verfahren (0 " "danach, ...; umso höher die genutzte Zahl umso unsicherer das Verfahren (0 "
"oder 1 sind empfohlene Werte)" "oder 1 sind empfohlene Werte)"
msgid ""
"permissions for the Unix socket, as octal value (see man chmod); it must be "
"a number with 3 digits, each between 0 and 7"
msgstr ""
"Berechtigungen für den Unix-Socket als Oktalwert (siehe man chmod); es muss "
"eine dreistellige Zahl sein, wobei jede Ziffer zwischen 0 und 7 liegen muss"
msgid "" msgid ""
"POSIX extended regular expression with origins allowed in websockets (case-" "POSIX extended regular expression with origins allowed in websockets (case-"
"insensitive, use \"(?-i)\" at beginning to make it case-sensitive), example: " "insensitive, use \"(?-i)\" at beginning to make it case-sensitive), example: "
@@ -16523,7 +16538,7 @@ msgid ""
msgstr "" msgstr ""
"Erweiterter regulärer POSIX Ausdruck für Origins in WebSockets (Groß- und " "Erweiterter regulärer POSIX Ausdruck für Origins in WebSockets (Groß- und "
"Kleinschreibung wird ignoriert. Um Groß- und Kleinschreibung zu " "Kleinschreibung wird ignoriert. Um Groß- und Kleinschreibung zu "
"unterscheiden kann \"(?-i)\" vorangestellt werden), Beispiel: ^https?://" "unterscheiden kann \"(?-i)\" vorangestellt werden), Beispiel: \"^https?://"
"(www\\.)?example\\.(com|org)\"" "(www\\.)?example\\.(com|org)\""
msgid "" msgid ""
@@ -16649,12 +16664,12 @@ msgstr "Anzahl an Clients für Relay"
#. TRANSLATORS: please do not translate the status names, they must be used in English #. TRANSLATORS: please do not translate the status names, they must be used in English
msgid "" msgid ""
"protocol,status (both are optional, for each argument \"*\" means all; " "protocol,status (both are optional, for each argument \"*\" means all; "
"protocols: irc, weechat; statuses: connecting, waiting_auth, connected, " "protocols: api, irc, weechat; statuses: connecting, waiting_auth, connected, "
"auth_failed, disconnected)" "auth_failed, disconnected)"
msgstr "" msgstr ""
"Protokoll,Status (beide sind Optional, bei beiden Argumenten bedeutet \"*\", " "Protokoll,Status (beide sind Optional, bei beiden Argumenten bedeutet \"*\", "
"alle; Protokolle: irc, weechat; Status: connecting, waiting_auth, connected, " "alle; Protokolle: api, irc, weechat; Status: connecting, waiting_auth, "
"auth_failed, disconnected)" "connected, auth_failed, disconnected)"
msgid "list of relay clients" msgid "list of relay clients"
msgstr "Liste der Relay-Clients" msgstr "Liste der Relay-Clients"
@@ -16783,6 +16798,12 @@ msgstr "%s%s: \"bind\" an Pfad %s (%s) nicht möglich: Fehler %d %s"
msgid "%s%s: cannot \"bind\" on port %d (%s): error %d %s" msgid "%s%s: cannot \"bind\" on port %d (%s): error %d %s"
msgstr "%s%s: \"bind\" an Port %d (%s) nicht möglich: Fehler %d %s" msgstr "%s%s: \"bind\" an Port %d (%s) nicht möglich: Fehler %d %s"
#, c-format
msgid "%s%s: warning: failed to set permissions on path %s (%s): error %d %s"
msgstr ""
"%s%s: Warnung: Fehler beim Setzen der Berechtigungen für den Pfad %s (%s): "
"Fehler %d %s"
#, c-format #, c-format
msgid "%s%s: cannot \"listen\" on path %s (%s): error %d %s" msgid "%s%s: cannot \"listen\" on path %s (%s): error %d %s"
msgstr "%s%s: kann nicht an Pfad %s (%s) lauschen: Fehler %d %s" msgstr "%s%s: kann nicht an Pfad %s (%s) lauschen: Fehler %d %s"
@@ -16821,9 +16842,8 @@ msgstr ""
msgid "%s%s: not enough memory for listening on new port" msgid "%s%s: not enough memory for listening on new port"
msgstr "%s%s: Nicht genug Speicher um an einem neuen Port zu lauschen" msgstr "%s%s: Nicht genug Speicher um an einem neuen Port zu lauschen"
msgid "Relay WeeChat data to remote application (irc/weechat protocols)" msgid "Relay WeeChat data to remote applications"
msgstr "" msgstr "Übertragung von WeeChat Daten an andere Anwendungen"
"Übertragung von WeeChat Daten an andere Anwendungen (irc/weechat Protokoll)"
msgid "connecting" msgid "connecting"
msgstr "verbinden" msgstr "verbinden"
@@ -17062,16 +17082,17 @@ msgstr "Alt+Taste/Eingabezeile: v=zurück zur Auswahl d=zeigt Unterschiede an"
#, c-format #, c-format
msgid "" msgid ""
"%d/%d scripts (filter: %s) | Sort: %s | Alt+key/input: i=install, r=remove, " "%d/%d scripts | Filter: %s | Sort: %s | Alt+key/input: i=install, r=remove, "
"l=load, L=reload, u=unload, A=autoload, h=(un)hold, v=view script | Input: " "l=load, L=reload, u=unload, A=autoload, h=(un)hold, v=view script | Input: "
"q=close, $=refresh, s:x,y=sort, words=filter, *=reset filter | Mouse: " "$=refresh, s:x,y=sort, words=filter, *=reset filter, q=close buffer | Mouse: "
"left=select, right=install/remove" "left=select, right=install/remove"
msgstr "" msgstr ""
"%d/%d Skripten (Filter: %s) | Sortierung: %s | Alt+Taste/Eingabe: " "%d/%d Skripts | Filter: %s) | Sortierung: %s | Alt+Taste/Eingabe: "
"i=installieren, r=entfernen, l=starten, L=erneut starten, u=beenden, " "i=installieren, r=entfernen, l=starten, L=erneut starten, u=beenden, "
"A=autoload, h=halten/freigeben, v=Skript anzeigen | Eingabe: q=beenden, " "A=Autoload, h=halten/freigeben, v=Skript anzeigen | Eingabe: "
"$=aktualisieren, s:x,y=Art der Sortierung, Text=Filterung, *=Filter " "$=aktualisieren, s:x,y=Art der Sortierung, Text=Filterung, *=Filter "
"zurücksetzen | Maus: links=Skript anwählen, rechts=installieren/entfernen" "zurücksetzen, q=Buffer schließen | Maus: links=Skript anwählen, "
"rechts=installieren/entfernen"
msgid "Scripts" msgid "Scripts"
msgstr "Skripten" msgstr "Skripten"
@@ -17330,7 +17351,7 @@ msgstr ""
"Um Tastenkurzbefehle im Skript-Buffer direkt nutzen zu können (zum Beispiel: " "Um Tastenkurzbefehle im Skript-Buffer direkt nutzen zu können (zum Beispiel: "
"alt+i = installieren, alt+r = entfernen, ...), muss diese Einstellung " "alt+i = installieren, alt+r = entfernen, ...), muss diese Einstellung "
"aktiviert werden. Andernfalls können Aktionen nur über die Eingabezeile " "aktiviert werden. Andernfalls können Aktionen nur über die Eingabezeile "
"durchgeführt werden: i,r..." "durchgeführt werden: i, r, ..."
msgid "color for status \"autoloaded\" (\"a\")" msgid "color for status \"autoloaded\" (\"a\")"
msgstr "Farbe in der der Status \"autoloaded\" (\"a\") dargestellt werden soll" msgstr "Farbe in der der Status \"autoloaded\" (\"a\") dargestellt werden soll"
@@ -17361,7 +17382,7 @@ msgid "background color in script buffer"
msgstr "Hintergrundfarbe im Skript-Buffer" msgstr "Hintergrundfarbe im Skript-Buffer"
msgid "background color for selected line in script buffer" msgid "background color for selected line in script buffer"
msgstr "Hintergrundfarbe" msgstr "Hintergrundfarbe für die ausgewählte Zeile im Skriptbuffer"
msgid "text color of dates in script buffer" msgid "text color of dates in script buffer"
msgstr "Textfarbe für das Datum im Skript-Buffer" msgstr "Textfarbe für das Datum im Skript-Buffer"
@@ -17489,6 +17510,11 @@ msgstr "1 falls Skript geladen wurde"
msgid "script name with extension" msgid "script name with extension"
msgstr "Skriptname mit Erweiterung" msgstr "Skriptname mit Erweiterung"
msgid "comma-separated list of plugin:extension with supported languages"
msgstr ""
"durch Kommata getrennte Liste von Erweiterungen: Endung mit unterstützen "
"Sprachen"
msgid "script name with extension (wildcard \"*\" is allowed) (optional)" msgid "script name with extension (wildcard \"*\" is allowed) (optional)"
msgstr "" msgstr ""
"Name des Skriptes, mit Dateierweiterung (Platzhalter \"*\" kann verwendet " "Name des Skriptes, mit Dateierweiterung (Platzhalter \"*\" kann verwendet "
+47 -23
View File
@@ -24,10 +24,10 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: WeeChat\n" "Project-Id-Version: WeeChat\n"
"Report-Msgid-Bugs-To: flashcode@flashtux.org\n" "Report-Msgid-Bugs-To: flashcode@flashtux.org\n"
"POT-Creation-Date: 2026-03-21 17:24+0100\n" "POT-Creation-Date: 2026-06-08 22:23+0200\n"
"PO-Revision-Date: 2026-03-12 20:24+0100\n" "PO-Revision-Date: 2026-05-30 14:01+0200\n"
"Last-Translator: Santiago Forero <santiago@forero.xyz>\n" "Last-Translator: Santiago Forero <santiago@forero.xyz>\n"
"Language-Team: weechat-dev <weechat-dev@nongnu.org>\n" "Language-Team: Spanish - Spain <weechat-dev@nongnu.org>\n"
"Language: es\n" "Language: es\n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
@@ -184,10 +184,10 @@ msgstr ""
#, c-format #, c-format
msgid "" msgid ""
"WeeChat %s Copyright %s, compiled on %s %s\n" "WeeChat %s Copyright %s, compiled on %s %s\n"
"Developed by Sébastien Helleu <flashcode@flashtux.org> - %s" "Developed by %s <%s> - %s"
msgstr "" msgstr ""
"WeeChat %s Copyright %s, compilado en %s %s\n" "WeeChat %s Copyright %s, compilado en %s %s\n"
"Desarrollado por Sébastien Helleu <flashcode@flashtux.org> - %s" "Desarrollado por %s <%s> - %s"
msgid "Usage:" msgid "Usage:"
msgstr "" msgstr ""
@@ -1222,6 +1222,16 @@ msgstr ""
"mensaje: mensaje de ausencia (si no se especifica ningún mensaje, se remueve " "mensaje: mensaje de ausencia (si no se especifica ningún mensaje, se remueve "
"el estado ausente)" "el estado ausente)"
msgid ""
"By default the away status is displayed only locally by the irc plugin (see /"
"help irc.look.display_away)."
msgstr ""
msgid ""
"This command can be caught by other plugins and scripts (see \"Plugin API "
"reference\", function \"hook_command_run\")."
msgstr ""
msgid "manage bars" msgid "manage bars"
msgstr "gestionar las barras" msgstr "gestionar las barras"
@@ -12081,8 +12091,8 @@ msgstr "nombre del servidor"
msgid "get nick from IRC host" msgid "get nick from IRC host"
msgstr "devuelve apodo de un host IRC" msgstr "devuelve apodo de un host IRC"
msgid "IRC host (like `:nick!name@server.com`)" msgid "IRC host (like `:nick!name@server`)"
msgstr "IRC host (como `:apodo!nombre@servidor.com`)" msgstr "IRC host (como `:apodo!nombre@servidor`)"
msgid "" msgid ""
"get nick color code (*deprecated* since version 1.5, replaced by " "get nick color code (*deprecated* since version 1.5, replaced by "
@@ -12324,8 +12334,8 @@ msgstr "%s%s: ¡este buffer no es un canal!"
#, c-format #, c-format
msgid "" msgid ""
"%d channels (total: %d) | Filter: %s | Sort: %s | Key(input): ctrl+j=join " "%d channels (total: %d) | Filter: %s | Sort: %s | Keys: ctrl+j=join channel "
"channel, ($)=refresh, (q)=close buffer" "| Input: $=refresh, s:x,y=sort, words=filter, *=reset filter, q=close buffer"
msgstr "" msgstr ""
msgid "Empty list of channels, try \"$\" to refresh list" msgid "Empty list of channels, try \"$\" to refresh list"
@@ -13526,7 +13536,7 @@ msgid ""
"and the current file is renamed with extension .1; an integer number with a " "and the current file is renamed with extension .1; an integer number with a "
"suffix is allowed: b = bytes (default if no unit given), k = kilobytes, m = " "suffix is allowed: b = bytes (default if no unit given), k = kilobytes, m = "
"megabytes, g = gigabytes, t = terabytes; example: \"2g\" causes a rotation " "megabytes, g = gigabytes, t = terabytes; example: \"2g\" causes a rotation "
"if the file size is > 2,000,000,000 bytes; if set to \"0\", no rotation is " "if the file size is greater than 2 GB; if set to \"0\", no rotation is "
"performed (unlimited log size); WARNING: before changing this option, you " "performed (unlimited log size); WARNING: before changing this option, you "
"should first set the compression type via option " "should first set the compression type via option "
"logger.file.rotation_compression_type" "logger.file.rotation_compression_type"
@@ -15390,11 +15400,11 @@ msgstr ""
#, fuzzy #, fuzzy
msgid "" msgid ""
"comma separated list of hash algorithms used for password authentication in " "comma separated list of hash algorithms used for password authentication in "
"weechat protocol, among these values: \"plain\" (password in plain text, not " "\"api\" and \"weechat\" protocols, among these values: \"plain\" (password "
"hashed), \"sha256\", \"sha512\", \"pbkdf2+sha256\", \"pbkdf2+sha512\"), " "in plain text, not hashed), \"sha256\", \"sha512\", \"pbkdf2+sha256\", "
"\"*\" means all algorithms, a name beginning with \"!\" is a negative value " "\"pbkdf2+sha512\"), \"*\" means all algorithms, a name beginning with \"!\" "
"to prevent an algorithm from being used, wildcard \"*\" is allowed in names " "is a negative value to prevent an algorithm from being used, wildcard \"*\" "
"(examples: \"*\", \"pbkdf2*\", \"*,!plain\")" "is allowed in names (examples: \"*\", \"pbkdf2*\", \"*,!plain\")"
msgstr "" msgstr ""
"lista de plugins separados por comas para cargar automáticamente al iniciar, " "lista de plugins separados por comas para cargar automáticamente al iniciar, "
"\"*\" significa todos los plugins encontrados, un nombre empezando con \"!\" " "\"*\" significa todos los plugins encontrados, un nombre empezando con \"!\" "
@@ -15402,10 +15412,10 @@ msgstr ""
"\"*\" para indicar varios plugins (ejemplo: \"*\" o \"*,!lua,!tcl\")" "\"*\" para indicar varios plugins (ejemplo: \"*\" o \"*,!lua,!tcl\")"
msgid "" msgid ""
"number of iterations asked to the client in weechat protocol when a hashed " "number of iterations asked to the client in \"api\" and \"weechat\" "
"password with algorithm PBKDF2 is used for authentication; more iterations " "protocols when a hashed password with algorithm PBKDF2 is used for "
"is better in term of security but is slower to compute; this number should " "authentication; more iterations is better in term of security but is slower "
"not be too high if your CPU is slow" "to compute; this number should not be too high if your CPU is slow"
msgstr "" msgstr ""
msgid "" msgid ""
@@ -15438,6 +15448,11 @@ msgid ""
"1 are recommended values)" "1 are recommended values)"
msgstr "" msgstr ""
msgid ""
"permissions for the Unix socket, as octal value (see man chmod); it must be "
"a number with 3 digits, each between 0 and 7"
msgstr ""
# why is case insensitive important? ips use numbers and urls are case insensible. # why is case insensitive important? ips use numbers and urls are case insensible.
#, fuzzy #, fuzzy
msgid "" msgid ""
@@ -15552,7 +15567,7 @@ msgstr "Lista de clientes a retransmitir"
#. TRANSLATORS: please do not translate the status names, they must be used in English #. TRANSLATORS: please do not translate the status names, they must be used in English
msgid "" msgid ""
"protocol,status (both are optional, for each argument \"*\" means all; " "protocol,status (both are optional, for each argument \"*\" means all; "
"protocols: irc, weechat; statuses: connecting, waiting_auth, connected, " "protocols: api, irc, weechat; statuses: connecting, waiting_auth, connected, "
"auth_failed, disconnected)" "auth_failed, disconnected)"
msgstr "" msgstr ""
@@ -15675,6 +15690,10 @@ msgstr "%s%s: error con \"bind\" en el puerto %d (%s)"
msgid "%s%s: cannot \"bind\" on port %d (%s): error %d %s" msgid "%s%s: cannot \"bind\" on port %d (%s): error %d %s"
msgstr "%s%s: error con \"bind\" en el puerto %d (%s)" msgstr "%s%s: error con \"bind\" en el puerto %d (%s)"
#, fuzzy, c-format
msgid "%s%s: warning: failed to set permissions on path %s (%s): error %d %s"
msgstr "%s%s: no se puede aceptar el cliente en el puerto %d (%s)"
#, fuzzy, c-format #, fuzzy, c-format
msgid "%s%s: cannot \"listen\" on path %s (%s): error %d %s" msgid "%s%s: cannot \"listen\" on path %s (%s): error %d %s"
msgstr "%s%s: no se puede aceptar el cliente en el puerto %d (%s)" msgstr "%s%s: no se puede aceptar el cliente en el puerto %d (%s)"
@@ -15711,7 +15730,7 @@ msgstr ""
msgid "%s%s: not enough memory for listening on new port" msgid "%s%s: not enough memory for listening on new port"
msgstr "%s%s: no hay memoria suficiente para escuchar en un nuevo puerto" msgstr "%s%s: no hay memoria suficiente para escuchar en un nuevo puerto"
msgid "Relay WeeChat data to remote application (irc/weechat protocols)" msgid "Relay WeeChat data to remote applications"
msgstr "" msgstr ""
msgid "connecting" msgid "connecting"
@@ -15960,9 +15979,9 @@ msgstr ""
#, c-format #, c-format
msgid "" msgid ""
"%d/%d scripts (filter: %s) | Sort: %s | Alt+key/input: i=install, r=remove, " "%d/%d scripts | Filter: %s | Sort: %s | Alt+key/input: i=install, r=remove, "
"l=load, L=reload, u=unload, A=autoload, h=(un)hold, v=view script | Input: " "l=load, L=reload, u=unload, A=autoload, h=(un)hold, v=view script | Input: "
"q=close, $=refresh, s:x,y=sort, words=filter, *=reset filter | Mouse: " "$=refresh, s:x,y=sort, words=filter, *=reset filter, q=close buffer | Mouse: "
"left=select, right=install/remove" "left=select, right=install/remove"
msgstr "" msgstr ""
@@ -16327,6 +16346,11 @@ msgstr "scripts en %s cargados:"
msgid "script name with extension" msgid "script name with extension"
msgstr "lista de scripts" msgstr "lista de scripts"
#, fuzzy
#| msgid "comma separated list of file name extensions for plugins"
msgid "comma-separated list of plugin:extension with supported languages"
msgstr "lista separada por comas de extensiones de archivo para plugins"
#, fuzzy #, fuzzy
msgid "script name with extension (wildcard \"*\" is allowed) (optional)" msgid "script name with extension (wildcard \"*\" is allowed) (optional)"
msgstr "" msgstr ""
+91 -59
View File
@@ -23,10 +23,10 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: WeeChat\n" "Project-Id-Version: WeeChat\n"
"Report-Msgid-Bugs-To: flashcode@flashtux.org\n" "Report-Msgid-Bugs-To: flashcode@flashtux.org\n"
"POT-Creation-Date: 2026-03-21 17:24+0100\n" "POT-Creation-Date: 2026-06-08 22:23+0200\n"
"PO-Revision-Date: 2026-03-21 17:29+0100\n" "PO-Revision-Date: 2026-06-08 23:14+0200\n"
"Last-Translator: Sébastien Helleu <flashcode@flashtux.org>\n" "Last-Translator: Sébastien Helleu <flashcode@flashtux.org>\n"
"Language-Team: weechat-dev <weechat-dev@nongnu.org>\n" "Language-Team: French - France <weechat-dev@nongnu.org>\n"
"Language: fr\n" "Language: fr\n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
@@ -139,7 +139,7 @@ msgid ""
"by default in headless mode WeeChat is blocking and does not run in " "by default in headless mode WeeChat is blocking and does not run in "
"background" "background"
msgstr "" msgstr ""
"lancer WeeChat comme un « daemon » (fork, nouveau groupe pour le processus, " "lancer WeeChat comme un « daemon » (fork, nouveau groupe pour le processus, "
"fermeture des descripteurs de fichiers); par défaut en mode sans interface " "fermeture des descripteurs de fichiers); par défaut en mode sans interface "
"WeeChat est bloquant et ne tourne pas en tâche de fond" "WeeChat est bloquant et ne tourne pas en tâche de fond"
@@ -168,10 +168,10 @@ msgstr "désactiver init/deinit de gcrypt"
#, c-format #, c-format
msgid "" msgid ""
"WeeChat %s Copyright %s, compiled on %s %s\n" "WeeChat %s Copyright %s, compiled on %s %s\n"
"Developed by Sébastien Helleu <flashcode@flashtux.org> - %s" "Developed by %s <%s> - %s"
msgstr "" msgstr ""
"WeeChat %s Copyright %s, compilé le %s %s\n" "WeeChat %s Copyright %s, compilé le %s %s\n"
"Développé par Sébastien Helleu <flashcode@flashtux.org> - %s" "Développé par %s <%s> - %s"
msgid "Usage:" msgid "Usage:"
msgstr "Utilisation:" msgstr "Utilisation:"
@@ -180,11 +180,11 @@ msgid "[option...] [plugin:option...]"
msgstr "[option...] [extension:option...]" msgstr "[option...] [extension:option...]"
msgid "Extra options in headless mode:" msgid "Extra options in headless mode:"
msgstr "Options supplémentaires en mode sans interface (« headless »):" msgstr "Options supplémentaires en mode sans interface (« headless »):"
msgid "Debug options (for tools like valgrind, DO NOT USE IN PRODUCTION):" msgid "Debug options (for tools like valgrind, DO NOT USE IN PRODUCTION):"
msgstr "" msgstr ""
"Options de debug (pour des outils comme Valgrind, NE PAS UTILISER EN " "Options de debug (pour des outils comme valgrind, NE PAS UTILISER EN "
"PRODUCTION) :" "PRODUCTION) :"
#, c-format #, c-format
@@ -1155,6 +1155,20 @@ msgstr ""
"message : message pour l'absence (si pas de message donné, le statut " "message : message pour l'absence (si pas de message donné, le statut "
"d'absence est supprimé)" "d'absence est supprimé)"
msgid ""
"By default the away status is displayed only locally by the irc plugin (see /"
"help irc.look.display_away)."
msgstr ""
"Par défaut le statut d'absence est affiché en local seulement par "
"l'extension irc (voir /help irc.look.display_away)."
msgid ""
"This command can be caught by other plugins and scripts (see \"Plugin API "
"reference\", function \"hook_command_run\")."
msgstr ""
"Cette commande peut être attrapée par d'autres extensions ou scripts (voir "
"la \"Référence API extension\", fonction \"hook_command_run\")."
msgid "manage bars" msgid "manage bars"
msgstr "gestion des barres" msgstr "gestion des barres"
@@ -1499,7 +1513,7 @@ msgid ""
"\"weechat.look.jump_current_to_previous_buffer\"" "\"weechat.look.jump_current_to_previous_buffer\""
msgstr "" msgstr ""
"> \"*\" : saut au numéro en utilisant l'option " "> \"*\" : saut au numéro en utilisant l'option "
"\"jump_current_to_previous_buffer\"" "\"weechat.look.jump_current_to_previous_buffer\""
msgid "raw[-]: jump to first buffer number" msgid "raw[-]: jump to first buffer number"
msgstr "raw[-] : sauter au premier numéro de tampon" msgstr "raw[-] : sauter au premier numéro de tampon"
@@ -1766,7 +1780,7 @@ msgid ""
"raw[key]: enable keyboard and mouse debug: display raw codes, expanded key " "raw[key]: enable keyboard and mouse debug: display raw codes, expanded key "
"name and associated command (\"q\" to quit this mode)" "name and associated command (\"q\" to quit this mode)"
msgstr "" msgstr ""
"raw[key] : activer le debug pour le clavier et la souris : afficher les " "raw[key] : activer le debug pour le clavier et la souris : afficher les "
"codes bruts, le nom étendu et la commande associée (\"q\" pour quitter ce " "codes bruts, le nom étendu et la commande associée (\"q\" pour quitter ce "
"mode)" "mode)"
@@ -3003,7 +3017,7 @@ msgid ""
"Key names allowed: f0 to f20, home, insert, delete, end, backspace, pgup, " "Key names allowed: f0 to f20, home, insert, delete, end, backspace, pgup, "
"pgdn, up, down, right, left, tab, return, comma, space." "pgdn, up, down, right, left, tab, return, comma, space."
msgstr "" msgstr ""
"Noms de touches autorisés : f0 à f20, home, insert, delete, end, backspace, " "Noms de touches autorisés: f0 à f20, home, insert, delete, end, backspace, "
"pgup, pgdn, up, down, right, left, tab, return, comma, space." "pgup, pgdn, up, down, right, left, tab, return, comma, space."
msgid "Combo of keys must be separated by a comma." msgid "Combo of keys must be separated by a comma."
@@ -3052,7 +3066,7 @@ msgid ""
"as argument." "as argument."
msgstr "" msgstr ""
"Une valeur spéciale pour la commande avec le format \"hsignal:nom\" peut " "Une valeur spéciale pour la commande avec le format \"hsignal:nom\" peut "
"être utilisée dans le contexte \"mouse\", cela enverra le signal \"nom\" " "être utilisée dans le contexte \"mouse\", cela enverra le hsignal \"nom\" "
"avec la table de hachage du focus comme paramètre." "avec la table de hachage du focus comme paramètre."
msgid "" msgid ""
@@ -3501,7 +3515,7 @@ msgid " display a reminder on core buffer with a highlight:"
msgstr " afficher un pense-bête sur le tampon core avec un highlight :" msgstr " afficher un pense-bête sur le tampon core avec un highlight :"
msgid " /print -core -tags notify_highlight Reminder: buy milk" msgid " /print -core -tags notify_highlight Reminder: buy milk"
msgstr " /print -core -tags notify_highlight Pense-bête : acheter du lait" msgstr " /print -core -tags notify_highlight Pense-bête: acheter du lait"
msgid " display an error on core buffer:" msgid " display an error on core buffer:"
msgstr " afficher une erreur sur le tampon core :" msgstr " afficher une erreur sur le tampon core :"
@@ -4100,7 +4114,8 @@ msgid ""
"makes possible a delayed restoration (see below)" "makes possible a delayed restoration (see below)"
msgstr "" msgstr ""
"raw[-quit] : fermer *TOUTES* les connexions, sauvegarder la session et " "raw[-quit] : fermer *TOUTES* les connexions, sauvegarder la session et "
"quitter, ce qui rend possible une restauration différée (voir ci-dessous)" "quitter WeeChat, ce qui rend possible une restauration différée (voir ci-"
"dessous)"
msgid "" msgid ""
"raw[-o]: send number of upgrades and date of first/last start to current " "raw[-o]: send number of upgrades and date of first/last start to current "
@@ -7059,7 +7074,8 @@ msgstr ""
"Si vous découvrez WeeChat, il est recommandé de lire au moins le guide de " "Si vous découvrez WeeChat, il est recommandé de lire au moins le guide de "
"démarrage rapide, et le guide utilisateur si vous avez le temps ; ils " "démarrage rapide, et le guide utilisateur si vous avez le temps ; ils "
"expliquent les concepts principaux de WeeChat.\n" "expliquent les concepts principaux de WeeChat.\n"
"Toutes les documentations sont disponibles ici : https://weechat.org/doc/\n" "Toutes les documentations WeeChat sont disponibles ici : https://weechat.org/"
"doc/\n"
"\n" "\n"
"De plus, il y a de l'aide en ligne avec /help sur toutes les commandes et " "De plus, il y a de l'aide en ligne avec /help sur toutes les commandes et "
"options (utilisez la touche Tab pour compléter le nom).\n" "options (utilisez la touche Tab pour compléter le nom).\n"
@@ -8007,7 +8023,7 @@ msgid ""
"careful, using more than one bar item slows down the display of buffers list" "careful, using more than one bar item slows down the display of buffers list"
msgstr "" msgstr ""
"nombre d'objets de barre buflist qui peuvent être utilisés ; les objets de " "nombre d'objets de barre buflist qui peuvent être utilisés ; les objets de "
"barre sont : \"buflist\", \"buflist2\", \"buflist3\", \"buflist4\" et " "barre sont : \"buflist\", \"buflist2\", \"buflist3\", \"buflist4\" et "
"\"buflist5\" ; attention, utiliser plus d'un objet de barre ralentit " "\"buflist5\" ; attention, utiliser plus d'un objet de barre ralentit "
"l'affichage de la liste des tampons" "l'affichage de la liste des tampons"
@@ -11184,7 +11200,7 @@ msgid ""
msgstr "" msgstr ""
"filtre : définir un nouveau filtre pour voir seulement les messages " "filtre : définir un nouveau filtre pour voir seulement les messages "
"correspondants (ce filtre peut aussi être utilisé en entrée du tampon des " "correspondants (ce filtre peut aussi être utilisé en entrée du tampon des "
"données brutes) ; les formats autorisés sont :" "données brutes IRC) ; les formats autorisés sont :"
msgid "> `*`: show all messages (no filter)" msgid "> `*`: show all messages (no filter)"
msgstr "> `*` : afficher tous les messages (pas de filtre)" msgstr "> `*` : afficher tous les messages (pas de filtre)"
@@ -12857,8 +12873,8 @@ msgstr "nom de serveur"
msgid "get nick from IRC host" msgid "get nick from IRC host"
msgstr "retourne le pseudo à partir d'un host IRC" msgstr "retourne le pseudo à partir d'un host IRC"
msgid "IRC host (like `:nick!name@server.com`)" msgid "IRC host (like `:nick!name@server`)"
msgstr "host IRC (comme `:pseudo!nom@serveur.com`)" msgstr "host IRC (comme `:pseudo!nom@serveur`)"
msgid "" msgid ""
"get nick color code (*deprecated* since version 1.5, replaced by " "get nick color code (*deprecated* since version 1.5, replaced by "
@@ -13082,11 +13098,12 @@ msgstr "%s%s : ce tampon n'est pas un canal !"
#, c-format #, c-format
msgid "" msgid ""
"%d channels (total: %d) | Filter: %s | Sort: %s | Key(input): ctrl+j=join " "%d channels (total: %d) | Filter: %s | Sort: %s | Keys: ctrl+j=join channel "
"channel, ($)=refresh, (q)=close buffer" "| Input: $=refresh, s:x,y=sort, words=filter, *=reset filter, q=close buffer"
msgstr "" msgstr ""
"%d canaux (total : %d) | Filtre : %s | Tri : %s | Touche(entrée) : " "%d canaux (total : %d) | Filtre : %s | Tri : %s | Touches : ctrl+j=rejoindre "
"ctrl+j=rejoindre canal, ($)=rafraîchir, (q)=fermer le tampon" "canal | Entrée: $=rafraîchir, s:x,y=trier, mots=filtrer, *=réinit filtre, "
"q=fermer le tampon"
msgid "Empty list of channels, try \"$\" to refresh list" msgid "Empty list of channels, try \"$\" to refresh list"
msgstr "La liste de canaux est vide, essayez \"$\" pour rafraîchir la liste" msgstr "La liste de canaux est vide, essayez \"$\" pour rafraîchir la liste"
@@ -14294,7 +14311,7 @@ msgid ""
"and the current file is renamed with extension .1; an integer number with a " "and the current file is renamed with extension .1; an integer number with a "
"suffix is allowed: b = bytes (default if no unit given), k = kilobytes, m = " "suffix is allowed: b = bytes (default if no unit given), k = kilobytes, m = "
"megabytes, g = gigabytes, t = terabytes; example: \"2g\" causes a rotation " "megabytes, g = gigabytes, t = terabytes; example: \"2g\" causes a rotation "
"if the file size is > 2,000,000,000 bytes; if set to \"0\", no rotation is " "if the file size is greater than 2 GB; if set to \"0\", no rotation is "
"performed (unlimited log size); WARNING: before changing this option, you " "performed (unlimited log size); WARNING: before changing this option, you "
"should first set the compression type via option " "should first set the compression type via option "
"logger.file.rotation_compression_type" "logger.file.rotation_compression_type"
@@ -14305,7 +14322,7 @@ msgstr ""
"entier avec un suffixe est accepté : b = octets (par défaut si pas d'unité " "entier avec un suffixe est accepté : b = octets (par défaut si pas d'unité "
"spécifiée), k = kilo-octets, m = méga-octets, g = giga-octets, t = téra-" "spécifiée), k = kilo-octets, m = méga-octets, g = giga-octets, t = téra-"
"octets ; exemple : \"2g\" provoque une rotation si la taille du fichier est " "octets ; exemple : \"2g\" provoque une rotation si la taille du fichier est "
"> 2 000 000 000 octets ; si défini à \"0\", aucune rotation n'est effectuée " "supérieure à 2 Go ; si défini à \"0\", aucune rotation n'est effectuée "
"(taille de log illimitée) ; ATTENTION : avant de changer cette option, vous " "(taille de log illimitée) ; ATTENTION : avant de changer cette option, vous "
"devriez d'abord définir le type de compression via l'option " "devriez d'abord définir le type de compression via l'option "
"logger.file.rotation_compression_type" "logger.file.rotation_compression_type"
@@ -15330,7 +15347,8 @@ msgstr "%sremote[%s] : impossible de créer le socket"
#, c-format #, c-format
msgid "%sremote[%s]: gnutls: failed to initialize certificate structure" msgid "%sremote[%s]: gnutls: failed to initialize certificate structure"
msgstr "%sremote[%s] : échec d'initialisation de la structure du certificat" msgstr ""
"%sremote[%s] : gnutls: échec d'initialisation de la structure du certificat"
#, c-format #, c-format
msgid "remote[%s]: gnutls: receiving %d certificate" msgid "remote[%s]: gnutls: receiving %d certificate"
@@ -16133,31 +16151,31 @@ msgstr ""
msgid "" msgid ""
"comma separated list of hash algorithms used for password authentication in " "comma separated list of hash algorithms used for password authentication in "
"weechat protocol, among these values: \"plain\" (password in plain text, not " "\"api\" and \"weechat\" protocols, among these values: \"plain\" (password "
"hashed), \"sha256\", \"sha512\", \"pbkdf2+sha256\", \"pbkdf2+sha512\"), " "in plain text, not hashed), \"sha256\", \"sha512\", \"pbkdf2+sha256\", "
"\"*\" means all algorithms, a name beginning with \"!\" is a negative value " "\"pbkdf2+sha512\"), \"*\" means all algorithms, a name beginning with \"!\" "
"to prevent an algorithm from being used, wildcard \"*\" is allowed in names " "is a negative value to prevent an algorithm from being used, wildcard \"*\" "
"(examples: \"*\", \"pbkdf2*\", \"*,!plain\")" "is allowed in names (examples: \"*\", \"pbkdf2*\", \"*,!plain\")"
msgstr "" msgstr ""
"liste des algorithmes de hachage pour l'authentification par mot de passe " "liste des algorithmes de hachage pour l'authentification par mot de passe "
"dans le protocole relay, parmi ces valeurs : \"plain\" (mot de passe en " "dans les protocoles \"api\" et \"weechat\", parmi ces valeurs : \"plain\" "
"clair, non haché), \"sha256\", \"sha512\", \"pbkdf2+sha256\", " "(mot de passe en clair, non haché), \"sha256\", \"sha512\", "
"\"pbkdf2+sha512\" ; \"*\" signifie tous les algorithmes, un nom commençant " "\"pbkdf2+sha256\", \"pbkdf2+sha512\" ; \"*\" signifie tous les algorithmes, "
"par \"!\" est une valeur négative pour empêcher un algorithme d'être " "un nom commençant par \"!\" est une valeur négative pour empêcher un "
"utilisé, le caractère joker \"*\" est autorisé dans les noms (exemples : " "algorithme d'être utilisé, le caractère joker \"*\" est autorisé dans les "
"\"*\", \"pbkdf2*\", \"*,!plain\")" "noms (exemples : \"*\", \"pbkdf2*\", \"*,!plain\")"
msgid "" msgid ""
"number of iterations asked to the client in weechat protocol when a hashed " "number of iterations asked to the client in \"api\" and \"weechat\" "
"password with algorithm PBKDF2 is used for authentication; more iterations " "protocols when a hashed password with algorithm PBKDF2 is used for "
"is better in term of security but is slower to compute; this number should " "authentication; more iterations is better in term of security but is slower "
"not be too high if your CPU is slow" "to compute; this number should not be too high if your CPU is slow"
msgstr "" msgstr ""
"nombre d'itérations demandées au client dans le protocole weechat lorsqu'un " "nombre d'itérations demandées au client dans les protocoles \"api\" et "
"mot de passe haché avec l'algorithme PBKDF2 est utilisé pour " "\"weechat\" lorsqu'un mot de passe haché avec l'algorithme PBKDF2 est "
"l'authentification ; plus d'itérations est mieux en terme de sécurité mais " "utilisé pour l'authentification ; plus d'itérations est mieux en terme de "
"est plus lent à calculer ; ce nombre ne doit pas être trop élevé si votre " "sécurité mais est plus lent à calculer ; ce nombre ne doit pas être trop "
"micro-processeur est lent" "élevé si votre micro-processeur est lent"
msgid "" msgid ""
"number of seconds to allow before and after the current time for the hash of " "number of seconds to allow before and after the current time for the hash of "
@@ -16202,6 +16220,13 @@ msgstr ""
"accepter deux mots de passe avant, le courant et deux après, ... ; un nombre " "accepter deux mots de passe avant, le courant et deux après, ... ; un nombre "
"élevé réduit le niveau de sécurité (0 ou 1 sont les valeurs recommandées)" "élevé réduit le niveau de sécurité (0 ou 1 sont les valeurs recommandées)"
msgid ""
"permissions for the Unix socket, as octal value (see man chmod); it must be "
"a number with 3 digits, each between 0 and 7"
msgstr ""
"permissions pour le socket Unix, sous forme de valeur octale (voir man "
"chmod); doit être un nombre avec 3 chiffres, chacun compris entre 0 et 7"
msgid "" msgid ""
"POSIX extended regular expression with origins allowed in websockets (case-" "POSIX extended regular expression with origins allowed in websockets (case-"
"insensitive, use \"(?-i)\" at beginning to make it case-sensitive), example: " "insensitive, use \"(?-i)\" at beginning to make it case-sensitive), example: "
@@ -16332,11 +16357,11 @@ msgstr "nombre de clients pour le relai"
#. TRANSLATORS: please do not translate the status names, they must be used in English #. TRANSLATORS: please do not translate the status names, they must be used in English
msgid "" msgid ""
"protocol,status (both are optional, for each argument \"*\" means all; " "protocol,status (both are optional, for each argument \"*\" means all; "
"protocols: irc, weechat; statuses: connecting, waiting_auth, connected, " "protocols: api, irc, weechat; statuses: connecting, waiting_auth, connected, "
"auth_failed, disconnected)" "auth_failed, disconnected)"
msgstr "" msgstr ""
"protocole,statut (les deux sont optionnels, pour chaque paramètre \"*\" " "protocole,statut (les deux sont optionnels, pour chaque paramètre \"*\" "
"signifie tous ; protocoles : irc, weechat ; statuts : connecting, " "signifie tous ; protocoles : api, irc, weechat ; statuts : connecting, "
"waiting_auth, connected, auth_failed, disconnected)" "waiting_auth, connected, auth_failed, disconnected)"
msgid "list of relay clients" msgid "list of relay clients"
@@ -16466,6 +16491,12 @@ msgstr "%s%s : \"bind\" impossible sur le chemin %s (%s) : erreur %d %s"
msgid "%s%s: cannot \"bind\" on port %d (%s): error %d %s" msgid "%s%s: cannot \"bind\" on port %d (%s): error %d %s"
msgstr "%s%s : \"bind\" impossible sur le port %d (%s) : erreur %d %s" msgstr "%s%s : \"bind\" impossible sur le port %d (%s) : erreur %d %s"
#, c-format
msgid "%s%s: warning: failed to set permissions on path %s (%s): error %d %s"
msgstr ""
"%s%s : attention: échec de changement des permissions sur le chemin %s "
"(%s) : erreur %d %s"
#, c-format #, c-format
msgid "%s%s: cannot \"listen\" on path %s (%s): error %d %s" msgid "%s%s: cannot \"listen\" on path %s (%s): error %d %s"
msgstr "%s%s : \"listen\" impossible sur le chemin %s (%s) : erreur %d %s" msgstr "%s%s : \"listen\" impossible sur le chemin %s (%s) : erreur %d %s"
@@ -16504,10 +16535,8 @@ msgstr ""
msgid "%s%s: not enough memory for listening on new port" msgid "%s%s: not enough memory for listening on new port"
msgstr "%s%s : pas assez de mémoire pour écouter sur le nouveau port" msgstr "%s%s : pas assez de mémoire pour écouter sur le nouveau port"
msgid "Relay WeeChat data to remote application (irc/weechat protocols)" msgid "Relay WeeChat data to remote applications"
msgstr "" msgstr "Relai des données WeeChat à des applications distantes"
"Relai des données WeeChat à des applications distantes (protocoles irc/"
"weechat)"
msgid "connecting" msgid "connecting"
msgstr "connexion" msgstr "connexion"
@@ -16743,16 +16772,16 @@ msgstr "Alt+touche/entrée : v=retour à la liste d=sauter au diff"
#, c-format #, c-format
msgid "" msgid ""
"%d/%d scripts (filter: %s) | Sort: %s | Alt+key/input: i=install, r=remove, " "%d/%d scripts | Filter: %s | Sort: %s | Alt+key/input: i=install, r=remove, "
"l=load, L=reload, u=unload, A=autoload, h=(un)hold, v=view script | Input: " "l=load, L=reload, u=unload, A=autoload, h=(un)hold, v=view script | Input: "
"q=close, $=refresh, s:x,y=sort, words=filter, *=reset filter | Mouse: " "$=refresh, s:x,y=sort, words=filter, *=reset filter, q=close buffer | Mouse: "
"left=select, right=install/remove" "left=select, right=install/remove"
msgstr "" msgstr ""
"%d/%d scripts (filtre : %s) | Tri : %s | Alt+touche/entrée : i=installer, " "%d/%d scripts | Filtre: %s | Tri : %s | Alt+touche/entrée : i=installer, "
"r=supprimer, l=charger, L=recharger, u=décharger, A=chargement auto, " "r=supprimer, l=charger, L=recharger, u=décharger, A=chargement auto, "
"h=(dé)figer, v=voir script | Entrée : q=fermer, $=rafraîchir, s:x,y=trier, " "h=(dé)figer, v=voir script | Entrée : $=rafraîchir, s:x,y=trier, "
"mots=filtrer, *=réinit filtre | Souris : gauche=sélectionner, " "mots=filtrer, *=réinit filtre, q=fermer le tampon | Souris : "
"droit=installer/supprimer" "gauche=sélectionner, droit=installer/supprimer"
msgid "Scripts" msgid "Scripts"
msgstr "Scripts" msgstr "Scripts"
@@ -17153,6 +17182,9 @@ msgstr "1 si le script est chargé"
msgid "script name with extension" msgid "script name with extension"
msgstr "nom du script avec l'extension" msgstr "nom du script avec l'extension"
msgid "comma-separated list of plugin:extension with supported languages"
msgstr "liste de extension:extension_fichier avec les langages supportés"
msgid "script name with extension (wildcard \"*\" is allowed) (optional)" msgid "script name with extension (wildcard \"*\" is allowed) (optional)"
msgstr "" msgstr ""
"nom du script avec extension (le caractère joker \"*\" est autorisé) " "nom du script avec extension (le caractère joker \"*\" est autorisé) "
@@ -17776,7 +17808,7 @@ msgid "> type `signal`: name(s) of signal (required)"
msgstr "> type `signal` : nom(s) de signal (obligatoire)" msgstr "> type `signal` : nom(s) de signal (obligatoire)"
msgid "> type `hsignal`: name(s) of hsignal (required)" msgid "> type `hsignal`: name(s) of hsignal (required)"
msgstr "> type `hsignal` : nom(s) de signal (obligatoire)" msgstr "> type `hsignal` : nom(s) de hsignal (obligatoire)"
msgid "> type `modifier`: name(s) of modifier (required)" msgid "> type `modifier`: name(s) of modifier (required)"
msgstr "> type `modifier` : nom(s) de modificateur (obligatoire)" msgstr "> type `modifier` : nom(s) de modificateur (obligatoire)"
+42 -20
View File
@@ -22,10 +22,10 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: WeeChat\n" "Project-Id-Version: WeeChat\n"
"Report-Msgid-Bugs-To: flashcode@flashtux.org\n" "Report-Msgid-Bugs-To: flashcode@flashtux.org\n"
"POT-Creation-Date: 2026-03-21 17:24+0100\n" "POT-Creation-Date: 2026-06-08 22:23+0200\n"
"PO-Revision-Date: 2026-03-08 08:59+0100\n" "PO-Revision-Date: 2026-03-08 08:59+0100\n"
"Last-Translator: Andras Voroskoi <voroskoi@frugalware.org>\n" "Last-Translator: Andras Voroskoi <voroskoi@frugalware.org>\n"
"Language-Team: weechat-dev <weechat-dev@nongnu.org>\n" "Language-Team: Hungarian <weechat-dev@nongnu.org>\n"
"Language: hu\n" "Language: hu\n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
@@ -159,7 +159,7 @@ msgstr ""
#, fuzzy, c-format #, fuzzy, c-format
msgid "" msgid ""
"WeeChat %s Copyright %s, compiled on %s %s\n" "WeeChat %s Copyright %s, compiled on %s %s\n"
"Developed by Sébastien Helleu <flashcode@flashtux.org> - %s" "Developed by %s <%s> - %s"
msgstr "" msgstr ""
"%s Copyright (C) 2003-2010, fordítva: %s %s\n" "%s Copyright (C) 2003-2010, fordítva: %s %s\n"
"Fejlesztő: Sébastien Helleu <flashcode@flashtux.org> - %s" "Fejlesztő: Sébastien Helleu <flashcode@flashtux.org> - %s"
@@ -1158,6 +1158,16 @@ msgstr ""
" üzenet: távolléti üzenet (ha nincs üzenet megadva, a távolléti státusz " " üzenet: távolléti üzenet (ha nincs üzenet megadva, a távolléti státusz "
"eltávolítása)" "eltávolítása)"
msgid ""
"By default the away status is displayed only locally by the irc plugin (see /"
"help irc.look.display_away)."
msgstr ""
msgid ""
"This command can be caught by other plugins and scripts (see \"Plugin API "
"reference\", function \"hook_command_run\")."
msgstr ""
#, fuzzy #, fuzzy
msgid "manage bars" msgid "manage bars"
msgstr "pufferek kezelése" msgstr "pufferek kezelése"
@@ -11281,7 +11291,7 @@ msgstr "cél: szerver neve"
msgid "get nick from IRC host" msgid "get nick from IRC host"
msgstr "név vagy gép letiltása" msgstr "név vagy gép letiltása"
msgid "IRC host (like `:nick!name@server.com`)" msgid "IRC host (like `:nick!name@server`)"
msgstr "" msgstr ""
msgid "" msgid ""
@@ -11515,8 +11525,8 @@ msgstr "Ez az ablak nem egy szoba!\n"
#, c-format #, c-format
msgid "" msgid ""
"%d channels (total: %d) | Filter: %s | Sort: %s | Key(input): ctrl+j=join " "%d channels (total: %d) | Filter: %s | Sort: %s | Keys: ctrl+j=join channel "
"channel, ($)=refresh, (q)=close buffer" "| Input: $=refresh, s:x,y=sort, words=filter, *=reset filter, q=close buffer"
msgstr "" msgstr ""
msgid "Empty list of channels, try \"$\" to refresh list" msgid "Empty list of channels, try \"$\" to refresh list"
@@ -12634,7 +12644,7 @@ msgid ""
"and the current file is renamed with extension .1; an integer number with a " "and the current file is renamed with extension .1; an integer number with a "
"suffix is allowed: b = bytes (default if no unit given), k = kilobytes, m = " "suffix is allowed: b = bytes (default if no unit given), k = kilobytes, m = "
"megabytes, g = gigabytes, t = terabytes; example: \"2g\" causes a rotation " "megabytes, g = gigabytes, t = terabytes; example: \"2g\" causes a rotation "
"if the file size is > 2,000,000,000 bytes; if set to \"0\", no rotation is " "if the file size is greater than 2 GB; if set to \"0\", no rotation is "
"performed (unlimited log size); WARNING: before changing this option, you " "performed (unlimited log size); WARNING: before changing this option, you "
"should first set the compression type via option " "should first set the compression type via option "
"logger.file.rotation_compression_type" "logger.file.rotation_compression_type"
@@ -14391,21 +14401,21 @@ msgstr ""
#, fuzzy #, fuzzy
msgid "" msgid ""
"comma separated list of hash algorithms used for password authentication in " "comma separated list of hash algorithms used for password authentication in "
"weechat protocol, among these values: \"plain\" (password in plain text, not " "\"api\" and \"weechat\" protocols, among these values: \"plain\" (password "
"hashed), \"sha256\", \"sha512\", \"pbkdf2+sha256\", \"pbkdf2+sha512\"), " "in plain text, not hashed), \"sha256\", \"sha512\", \"pbkdf2+sha256\", "
"\"*\" means all algorithms, a name beginning with \"!\" is a negative value " "\"pbkdf2+sha512\"), \"*\" means all algorithms, a name beginning with \"!\" "
"to prevent an algorithm from being used, wildcard \"*\" is allowed in names " "is a negative value to prevent an algorithm from being used, wildcard \"*\" "
"(examples: \"*\", \"pbkdf2*\", \"*,!plain\")" "is allowed in names (examples: \"*\", \"pbkdf2*\", \"*,!plain\")"
msgstr "" msgstr ""
"automatikusan betöltendő modulok vesszővel elválasztott listája, \"*\" " "automatikusan betöltendő modulok vesszővel elválasztott listája, \"*\" "
"esetén az összes fellelt modul (az elnevezés lehet részleges, például a " "esetén az összes fellelt modul (az elnevezés lehet részleges, például a "
"\"perl\" elegendő \"libperl.so\" helyett)" "\"perl\" elegendő \"libperl.so\" helyett)"
msgid "" msgid ""
"number of iterations asked to the client in weechat protocol when a hashed " "number of iterations asked to the client in \"api\" and \"weechat\" "
"password with algorithm PBKDF2 is used for authentication; more iterations " "protocols when a hashed password with algorithm PBKDF2 is used for "
"is better in term of security but is slower to compute; this number should " "authentication; more iterations is better in term of security but is slower "
"not be too high if your CPU is slow" "to compute; this number should not be too high if your CPU is slow"
msgstr "" msgstr ""
msgid "" msgid ""
@@ -14438,6 +14448,11 @@ msgid ""
"1 are recommended values)" "1 are recommended values)"
msgstr "" msgstr ""
msgid ""
"permissions for the Unix socket, as octal value (see man chmod); it must be "
"a number with 3 digits, each between 0 and 7"
msgstr ""
msgid "" msgid ""
"POSIX extended regular expression with origins allowed in websockets (case-" "POSIX extended regular expression with origins allowed in websockets (case-"
"insensitive, use \"(?-i)\" at beginning to make it case-sensitive), example: " "insensitive, use \"(?-i)\" at beginning to make it case-sensitive), example: "
@@ -14539,7 +14554,7 @@ msgstr "Nincs szerver.\n"
#. TRANSLATORS: please do not translate the status names, they must be used in English #. TRANSLATORS: please do not translate the status names, they must be used in English
msgid "" msgid ""
"protocol,status (both are optional, for each argument \"*\" means all; " "protocol,status (both are optional, for each argument \"*\" means all; "
"protocols: irc, weechat; statuses: connecting, waiting_auth, connected, " "protocols: api, irc, weechat; statuses: connecting, waiting_auth, connected, "
"auth_failed, disconnected)" "auth_failed, disconnected)"
msgstr "" msgstr ""
@@ -14660,6 +14675,10 @@ msgstr "%s nem sikerült a csatornát létrehozni\n"
msgid "%s%s: cannot \"bind\" on port %d (%s): error %d %s" msgid "%s%s: cannot \"bind\" on port %d (%s): error %d %s"
msgstr "%s nem sikerült a csatornát létrehozni\n" msgstr "%s nem sikerült a csatornát létrehozni\n"
#, fuzzy, c-format
msgid "%s%s: warning: failed to set permissions on path %s (%s): error %d %s"
msgstr "%s nem sikerült a csatornát létrehozni\n"
#, fuzzy, c-format #, fuzzy, c-format
msgid "%s%s: cannot \"listen\" on path %s (%s): error %d %s" msgid "%s%s: cannot \"listen\" on path %s (%s): error %d %s"
msgstr "%s nem sikerült a csatornát létrehozni\n" msgstr "%s nem sikerült a csatornát létrehozni\n"
@@ -14696,7 +14715,7 @@ msgstr ""
msgid "%s%s: not enough memory for listening on new port" msgid "%s%s: not enough memory for listening on new port"
msgstr "%s nincs elegendő memória új DCC számára\n" msgstr "%s nincs elegendő memória új DCC számára\n"
msgid "Relay WeeChat data to remote application (irc/weechat protocols)" msgid "Relay WeeChat data to remote applications"
msgstr "" msgstr ""
#, fuzzy #, fuzzy
@@ -14939,9 +14958,9 @@ msgstr ""
#, c-format #, c-format
msgid "" msgid ""
"%d/%d scripts (filter: %s) | Sort: %s | Alt+key/input: i=install, r=remove, " "%d/%d scripts | Filter: %s | Sort: %s | Alt+key/input: i=install, r=remove, "
"l=load, L=reload, u=unload, A=autoload, h=(un)hold, v=view script | Input: " "l=load, L=reload, u=unload, A=autoload, h=(un)hold, v=view script | Input: "
"q=close, $=refresh, s:x,y=sort, words=filter, *=reset filter | Mouse: " "$=refresh, s:x,y=sort, words=filter, *=reset filter, q=close buffer | Mouse: "
"left=select, right=install/remove" "left=select, right=install/remove"
msgstr "" msgstr ""
@@ -15295,6 +15314,9 @@ msgstr "FIFO cső bezárva\n"
msgid "script name with extension" msgid "script name with extension"
msgstr "Aliaszok listája:\n" msgstr "Aliaszok listája:\n"
msgid "comma-separated list of plugin:extension with supported languages"
msgstr ""
msgid "script name with extension (wildcard \"*\" is allowed) (optional)" msgid "script name with extension (wildcard \"*\" is allowed) (optional)"
msgstr "" msgstr ""
+48 -26
View File
@@ -22,10 +22,10 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: WeeChat\n" "Project-Id-Version: WeeChat\n"
"Report-Msgid-Bugs-To: flashcode@flashtux.org\n" "Report-Msgid-Bugs-To: flashcode@flashtux.org\n"
"POT-Creation-Date: 2026-03-21 17:24+0100\n" "POT-Creation-Date: 2026-06-08 22:23+0200\n"
"PO-Revision-Date: 2026-03-12 20:24+0100\n" "PO-Revision-Date: 2026-05-30 14:02+0200\n"
"Last-Translator: Esteban I. Ruiz Moreno <exio4.com@gmail.com>\n" "Last-Translator: Esteban I. Ruiz Moreno <exio4.com@gmail.com>\n"
"Language-Team: weechat-dev <weechat-dev@nongnu.org>\n" "Language-Team: Italian <weechat-dev@nongnu.org>\n"
"Language: it\n" "Language: it\n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
@@ -164,10 +164,10 @@ msgstr ""
#, c-format #, c-format
msgid "" msgid ""
"WeeChat %s Copyright %s, compiled on %s %s\n" "WeeChat %s Copyright %s, compiled on %s %s\n"
"Developed by Sébastien Helleu <flashcode@flashtux.org> - %s" "Developed by %s <%s> - %s"
msgstr "" msgstr ""
"WeeChat %s Copyright %s, compilato il %s %s\n" "WeeChat %s Copyright %s, compilato il %s %s\n"
"Sviluppato da Sébastien Helleu <flashcode@flashtux.org> - %s" "Sviluppato da %s <%s> - %s"
msgid "Usage:" msgid "Usage:"
msgstr "" msgstr ""
@@ -1174,6 +1174,16 @@ msgstr ""
"messaggio: messaggio di assenza (se non specificato, lo stato di assenza " "messaggio: messaggio di assenza (se non specificato, lo stato di assenza "
"viene rimosso)" "viene rimosso)"
msgid ""
"By default the away status is displayed only locally by the irc plugin (see /"
"help irc.look.display_away)."
msgstr ""
msgid ""
"This command can be caught by other plugins and scripts (see \"Plugin API "
"reference\", function \"hook_command_run\")."
msgstr ""
msgid "manage bars" msgid "manage bars"
msgstr "gestione delle barre" msgstr "gestione delle barre"
@@ -12120,8 +12130,8 @@ msgstr "nome server"
msgid "get nick from IRC host" msgid "get nick from IRC host"
msgstr "ottiene nick dall'host IRC" msgstr "ottiene nick dall'host IRC"
msgid "IRC host (like `:nick!name@server.com`)" msgid "IRC host (like `:nick!name@server`)"
msgstr "host IRC (come `:nick!nome@server.com`)" msgstr "host IRC (come `:nick!nome@server`)"
msgid "" msgid ""
"get nick color code (*deprecated* since version 1.5, replaced by " "get nick color code (*deprecated* since version 1.5, replaced by "
@@ -12361,8 +12371,8 @@ msgstr "%s%s: questo buffer non è un canale!"
#, c-format #, c-format
msgid "" msgid ""
"%d channels (total: %d) | Filter: %s | Sort: %s | Key(input): ctrl+j=join " "%d channels (total: %d) | Filter: %s | Sort: %s | Keys: ctrl+j=join channel "
"channel, ($)=refresh, (q)=close buffer" "| Input: $=refresh, s:x,y=sort, words=filter, *=reset filter, q=close buffer"
msgstr "" msgstr ""
msgid "Empty list of channels, try \"$\" to refresh list" msgid "Empty list of channels, try \"$\" to refresh list"
@@ -13552,7 +13562,7 @@ msgid ""
"and the current file is renamed with extension .1; an integer number with a " "and the current file is renamed with extension .1; an integer number with a "
"suffix is allowed: b = bytes (default if no unit given), k = kilobytes, m = " "suffix is allowed: b = bytes (default if no unit given), k = kilobytes, m = "
"megabytes, g = gigabytes, t = terabytes; example: \"2g\" causes a rotation " "megabytes, g = gigabytes, t = terabytes; example: \"2g\" causes a rotation "
"if the file size is > 2,000,000,000 bytes; if set to \"0\", no rotation is " "if the file size is greater than 2 GB; if set to \"0\", no rotation is "
"performed (unlimited log size); WARNING: before changing this option, you " "performed (unlimited log size); WARNING: before changing this option, you "
"should first set the compression type via option " "should first set the compression type via option "
"logger.file.rotation_compression_type" "logger.file.rotation_compression_type"
@@ -15443,11 +15453,11 @@ msgstr ""
#, fuzzy #, fuzzy
msgid "" msgid ""
"comma separated list of hash algorithms used for password authentication in " "comma separated list of hash algorithms used for password authentication in "
"weechat protocol, among these values: \"plain\" (password in plain text, not " "\"api\" and \"weechat\" protocols, among these values: \"plain\" (password "
"hashed), \"sha256\", \"sha512\", \"pbkdf2+sha256\", \"pbkdf2+sha512\"), " "in plain text, not hashed), \"sha256\", \"sha512\", \"pbkdf2+sha256\", "
"\"*\" means all algorithms, a name beginning with \"!\" is a negative value " "\"pbkdf2+sha512\"), \"*\" means all algorithms, a name beginning with \"!\" "
"to prevent an algorithm from being used, wildcard \"*\" is allowed in names " "is a negative value to prevent an algorithm from being used, wildcard \"*\" "
"(examples: \"*\", \"pbkdf2*\", \"*,!plain\")" "is allowed in names (examples: \"*\", \"pbkdf2*\", \"*,!plain\")"
msgstr "" msgstr ""
"elenco separato da virgole di plugin da caricare automaticamente all'avvio, " "elenco separato da virgole di plugin da caricare automaticamente all'avvio, "
"\"*\" equivale a tutti i plugin trovati. un nome che comincia con \"!\" è un " "\"*\" equivale a tutti i plugin trovati. un nome che comincia con \"!\" è un "
@@ -15456,10 +15466,10 @@ msgstr ""
"oppure \"*,!lua,!tcl\")" "oppure \"*,!lua,!tcl\")"
msgid "" msgid ""
"number of iterations asked to the client in weechat protocol when a hashed " "number of iterations asked to the client in \"api\" and \"weechat\" "
"password with algorithm PBKDF2 is used for authentication; more iterations " "protocols when a hashed password with algorithm PBKDF2 is used for "
"is better in term of security but is slower to compute; this number should " "authentication; more iterations is better in term of security but is slower "
"not be too high if your CPU is slow" "to compute; this number should not be too high if your CPU is slow"
msgstr "" msgstr ""
msgid "" msgid ""
@@ -15492,6 +15502,11 @@ msgid ""
"1 are recommended values)" "1 are recommended values)"
msgstr "" msgstr ""
msgid ""
"permissions for the Unix socket, as octal value (see man chmod); it must be "
"a number with 3 digits, each between 0 and 7"
msgstr ""
#, fuzzy #, fuzzy
msgid "" msgid ""
"POSIX extended regular expression with origins allowed in websockets (case-" "POSIX extended regular expression with origins allowed in websockets (case-"
@@ -15614,7 +15629,7 @@ msgstr "Elenco dei client per il relay"
#. TRANSLATORS: please do not translate the status names, they must be used in English #. TRANSLATORS: please do not translate the status names, they must be used in English
msgid "" msgid ""
"protocol,status (both are optional, for each argument \"*\" means all; " "protocol,status (both are optional, for each argument \"*\" means all; "
"protocols: irc, weechat; statuses: connecting, waiting_auth, connected, " "protocols: api, irc, weechat; statuses: connecting, waiting_auth, connected, "
"auth_failed, disconnected)" "auth_failed, disconnected)"
msgstr "" msgstr ""
@@ -15755,6 +15770,10 @@ msgstr "%s%s: \"bind\" impossibile sulla porta %d (%s): errore %d %s"
msgid "%s%s: cannot \"bind\" on port %d (%s): error %d %s" msgid "%s%s: cannot \"bind\" on port %d (%s): error %d %s"
msgstr "%s%s: \"bind\" impossibile sulla porta %d (%s): errore %d %s" msgstr "%s%s: \"bind\" impossibile sulla porta %d (%s): errore %d %s"
#, fuzzy, c-format
msgid "%s%s: warning: failed to set permissions on path %s (%s): error %d %s"
msgstr "%s%s: \"listen\" impossibile sulla porta %d (%s): errore %d %s"
#, fuzzy, c-format #, fuzzy, c-format
msgid "%s%s: cannot \"listen\" on path %s (%s): error %d %s" msgid "%s%s: cannot \"listen\" on path %s (%s): error %d %s"
msgstr "%s%s: \"listen\" impossibile sulla porta %d (%s): errore %d %s" msgstr "%s%s: \"listen\" impossibile sulla porta %d (%s): errore %d %s"
@@ -15791,10 +15810,8 @@ msgstr ""
msgid "%s%s: not enough memory for listening on new port" msgid "%s%s: not enough memory for listening on new port"
msgstr "%s%s: memoria non sufficiente per l'ascolto su una nuova porta" msgstr "%s%s: memoria non sufficiente per l'ascolto su una nuova porta"
msgid "Relay WeeChat data to remote application (irc/weechat protocols)" msgid "Relay WeeChat data to remote applications"
msgstr "" msgstr "Esegui il relay dei dati di WeeChat ad un'applicazione remota"
"Esegui il relay dei dati di WeeChat ad un'applicazione remota (protocolli "
"irc/weechat)"
msgid "connecting" msgid "connecting"
msgstr "connessione" msgstr "connessione"
@@ -16043,9 +16060,9 @@ msgstr ""
#, c-format #, c-format
msgid "" msgid ""
"%d/%d scripts (filter: %s) | Sort: %s | Alt+key/input: i=install, r=remove, " "%d/%d scripts | Filter: %s | Sort: %s | Alt+key/input: i=install, r=remove, "
"l=load, L=reload, u=unload, A=autoload, h=(un)hold, v=view script | Input: " "l=load, L=reload, u=unload, A=autoload, h=(un)hold, v=view script | Input: "
"q=close, $=refresh, s:x,y=sort, words=filter, *=reset filter | Mouse: " "$=refresh, s:x,y=sort, words=filter, *=reset filter, q=close buffer | Mouse: "
"left=select, right=install/remove" "left=select, right=install/remove"
msgstr "" msgstr ""
@@ -16415,6 +16432,11 @@ msgstr "script %s caricati:"
msgid "script name with extension" msgid "script name with extension"
msgstr "elenco degli script" msgstr "elenco degli script"
#, fuzzy
#| msgid "comma separated list of file name extensions for plugins"
msgid "comma-separated list of plugin:extension with supported languages"
msgstr "elenco separato da virgole di estensioni dei nomi file per i plugin"
#, fuzzy #, fuzzy
msgid "script name with extension (wildcard \"*\" is allowed) (optional)" msgid "script name with extension (wildcard \"*\" is allowed) (optional)"
msgstr "" msgstr ""
+57 -29
View File
@@ -22,11 +22,10 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: WeeChat\n" "Project-Id-Version: WeeChat\n"
"Report-Msgid-Bugs-To: flashcode@flashtux.org\n" "Report-Msgid-Bugs-To: flashcode@flashtux.org\n"
"POT-Creation-Date: 2026-03-21 17:24+0100\n" "POT-Creation-Date: 2026-06-08 22:23+0200\n"
"PO-Revision-Date: 2026-03-16 13:22+0100\n" "PO-Revision-Date: 2026-05-30 14:02+0200\n"
"Last-Translator: AYANOKOUZI, Ryuunosuke <i38w7i3@yahoo.co.jp>\n" "Last-Translator: AYANOKOUZI, Ryuunosuke <i38w7i3@yahoo.co.jp>\n"
"Language-Team: Japanese <https://github.com/l/weechat/tree/master/" "Language-Team: Japanese <weechat-dev@nongnu.org>\n"
"translation/ja_JP>\n"
"Language: ja\n" "Language: ja\n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
@@ -168,10 +167,10 @@ msgstr "gcrypt の init/deinit を無効化"
#, c-format #, c-format
msgid "" msgid ""
"WeeChat %s Copyright %s, compiled on %s %s\n" "WeeChat %s Copyright %s, compiled on %s %s\n"
"Developed by Sébastien Helleu <flashcode@flashtux.org> - %s" "Developed by %s <%s> - %s"
msgstr "" msgstr ""
"WeeChat %s 著作権 %s、%s %s にコンパイル\n" "WeeChat %s 著作権 %s、%s %s にコンパイル\n"
"開発者 Sébastien Helleu <flashcode@flashtux.org> - %s" "開発者 %s <%s> - %s"
msgid "Usage:" msgid "Usage:"
msgstr "使い方:" msgstr "使い方:"
@@ -1184,6 +1183,16 @@ msgstr ""
" -all: 全ての接続済みサーバに対して離席状態を切り替え\n" " -all: 全ての接続済みサーバに対して離席状態を切り替え\n"
"message: 離席メッセージ (メッセージが無い場合は、離席状態を解除)" "message: 離席メッセージ (メッセージが無い場合は、離席状態を解除)"
msgid ""
"By default the away status is displayed only locally by the irc plugin (see /"
"help irc.look.display_away)."
msgstr ""
msgid ""
"This command can be caught by other plugins and scripts (see \"Plugin API "
"reference\", function \"hook_command_run\")."
msgstr ""
msgid "manage bars" msgid "manage bars"
msgstr "バーの管理" msgstr "バーの管理"
@@ -12575,8 +12584,8 @@ msgstr "サーバ名"
msgid "get nick from IRC host" msgid "get nick from IRC host"
msgstr "IRC ホストからニックネームを取得" msgstr "IRC ホストからニックネームを取得"
msgid "IRC host (like `:nick!name@server.com`)" msgid "IRC host (like `:nick!name@server`)"
msgstr "IRC ホスト (例: `:nick!name@server.com`)" msgstr "IRC ホスト (例: `:nick!name@server`)"
msgid "" msgid ""
"get nick color code (*deprecated* since version 1.5, replaced by " "get nick color code (*deprecated* since version 1.5, replaced by "
@@ -12811,8 +12820,8 @@ msgstr "%s%s: このバッファはチャンネルではありません!"
#, c-format #, c-format
msgid "" msgid ""
"%d channels (total: %d) | Filter: %s | Sort: %s | Key(input): ctrl+j=join " "%d channels (total: %d) | Filter: %s | Sort: %s | Keys: ctrl+j=join channel "
"channel, ($)=refresh, (q)=close buffer" "| Input: $=refresh, s:x,y=sort, words=filter, *=reset filter, q=close buffer"
msgstr "" msgstr ""
msgid "Empty list of channels, try \"$\" to refresh list" msgid "Empty list of channels, try \"$\" to refresh list"
@@ -14028,7 +14037,7 @@ msgid ""
"and the current file is renamed with extension .1; an integer number with a " "and the current file is renamed with extension .1; an integer number with a "
"suffix is allowed: b = bytes (default if no unit given), k = kilobytes, m = " "suffix is allowed: b = bytes (default if no unit given), k = kilobytes, m = "
"megabytes, g = gigabytes, t = terabytes; example: \"2g\" causes a rotation " "megabytes, g = gigabytes, t = terabytes; example: \"2g\" causes a rotation "
"if the file size is > 2,000,000,000 bytes; if set to \"0\", no rotation is " "if the file size is greater than 2 GB; if set to \"0\", no rotation is "
"performed (unlimited log size); WARNING: before changing this option, you " "performed (unlimited log size); WARNING: before changing this option, you "
"should first set the compression type via option " "should first set the compression type via option "
"logger.file.rotation_compression_type" "logger.file.rotation_compression_type"
@@ -15951,21 +15960,21 @@ msgstr ""
#, fuzzy #, fuzzy
msgid "" msgid ""
"comma separated list of hash algorithms used for password authentication in " "comma separated list of hash algorithms used for password authentication in "
"weechat protocol, among these values: \"plain\" (password in plain text, not " "\"api\" and \"weechat\" protocols, among these values: \"plain\" (password "
"hashed), \"sha256\", \"sha512\", \"pbkdf2+sha256\", \"pbkdf2+sha512\"), " "in plain text, not hashed), \"sha256\", \"sha512\", \"pbkdf2+sha256\", "
"\"*\" means all algorithms, a name beginning with \"!\" is a negative value " "\"pbkdf2+sha512\"), \"*\" means all algorithms, a name beginning with \"!\" "
"to prevent an algorithm from being used, wildcard \"*\" is allowed in names " "is a negative value to prevent an algorithm from being used, wildcard \"*\" "
"(examples: \"*\", \"pbkdf2*\", \"*,!plain\")" "is allowed in names (examples: \"*\", \"pbkdf2*\", \"*,!plain\")"
msgstr "" msgstr ""
"スタートアップ時にロードするプラグインのコンマ区切りリスト、\"*\" は見つかっ" "スタートアップ時にロードするプラグインのコンマ区切りリスト、\"*\" は見つかっ"
"た全てのプラグイン、\"!\" から始まる名前はロードしないプラグイン、名前にワイ" "た全てのプラグイン、\"!\" から始まる名前はロードしないプラグイン、名前にワイ"
"ルドカード \"*\" を使うことができます (例: \"*\" または \"*,!lua,!tcl\")" "ルドカード \"*\" を使うことができます (例: \"*\" または \"*,!lua,!tcl\")"
msgid "" msgid ""
"number of iterations asked to the client in weechat protocol when a hashed " "number of iterations asked to the client in \"api\" and \"weechat\" "
"password with algorithm PBKDF2 is used for authentication; more iterations " "protocols when a hashed password with algorithm PBKDF2 is used for "
"is better in term of security but is slower to compute; this number should " "authentication; more iterations is better in term of security but is slower "
"not be too high if your CPU is slow" "to compute; this number should not be too high if your CPU is slow"
msgstr "" msgstr ""
msgid "" msgid ""
@@ -16013,6 +16022,11 @@ msgstr ""
"のパスワードを考慮、...; この値を大きくするとセキュリティレベルが低下します " "のパスワードを考慮、...; この値を大きくするとセキュリティレベルが低下します "
"(0 または 1 を推奨します)" "(0 または 1 を推奨します)"
msgid ""
"permissions for the Unix socket, as octal value (see man chmod); it must be "
"a number with 3 digits, each between 0 and 7"
msgstr ""
#, fuzzy #, fuzzy
#| msgid "" #| msgid ""
#| "POSIX extended regular expression with origins allowed in websockets " #| "POSIX extended regular expression with origins allowed in websockets "
@@ -16149,12 +16163,12 @@ msgstr "中継するクライアントのリスト"
#. TRANSLATORS: please do not translate the status names, they must be used in English #. TRANSLATORS: please do not translate the status names, they must be used in English
msgid "" msgid ""
"protocol,status (both are optional, for each argument \"*\" means all; " "protocol,status (both are optional, for each argument \"*\" means all; "
"protocols: irc, weechat; statuses: connecting, waiting_auth, connected, " "protocols: api, irc, weechat; statuses: connecting, waiting_auth, connected, "
"auth_failed, disconnected)" "auth_failed, disconnected)"
msgstr "" msgstr ""
"protocol,status (どちらも任意、引数の \"*\" はすべてを意味します; プロトコ" "protocol,status (どちらも任意、引数の \"*\" はすべてを意味します; プロトコ"
"ル: irc、weechat。状態: connecting、waiting_auth、connected、auth_failed、" "ル: api、irc、weechat。状態: connecting、waiting_auth、connected、"
"disconnected)" "auth_failed、disconnected)"
msgid "list of relay clients" msgid "list of relay clients"
msgstr "リレークライアントのリスト" msgstr "リレークライアントのリスト"
@@ -16296,6 +16310,11 @@ msgstr "%s%s: パス %s (%s) に \"bind\" できません: エラー %d %s"
msgid "%s%s: cannot \"bind\" on port %d (%s): error %d %s" msgid "%s%s: cannot \"bind\" on port %d (%s): error %d %s"
msgstr "%s%s: ポート %d (%s) に \"bind\" できません: エラー %d %s" msgstr "%s%s: ポート %d (%s) に \"bind\" できません: エラー %d %s"
#, fuzzy, c-format
#| msgid "%s%s: cannot \"listen\" on path %s (%s): error %d %s"
msgid "%s%s: warning: failed to set permissions on path %s (%s): error %d %s"
msgstr "%s%s: パス %s (%s) ではリッスンできません: エラー %d %s"
#, c-format #, c-format
msgid "%s%s: cannot \"listen\" on path %s (%s): error %d %s" msgid "%s%s: cannot \"listen\" on path %s (%s): error %d %s"
msgstr "%s%s: パス %s (%s) ではリッスンできません: エラー %d %s" msgstr "%s%s: パス %s (%s) ではリッスンできません: エラー %d %s"
@@ -16332,9 +16351,8 @@ msgstr ""
msgid "%s%s: not enough memory for listening on new port" msgid "%s%s: not enough memory for listening on new port"
msgstr "%s%s: 新しいポートをリッスンするためのメモリ不足" msgstr "%s%s: 新しいポートをリッスンするためのメモリ不足"
msgid "Relay WeeChat data to remote application (irc/weechat protocols)" msgid "Relay WeeChat data to remote applications"
msgstr "" msgstr "WeeChat データをリモートアプリケーションにリレー"
"WeeChat データをリモートアプリケーションにリレー (irc/weechat プロトコル)"
msgid "connecting" msgid "connecting"
msgstr "接続中" msgstr "接続中"
@@ -16578,11 +16596,16 @@ msgstr "(なし)"
msgid "Alt+key/input: v=back to list d=jump to diff" msgid "Alt+key/input: v=back to list d=jump to diff"
msgstr "Alt+key/input: v=リストに戻る d=比較する" msgstr "Alt+key/input: v=リストに戻る d=比較する"
#, c-format #, fuzzy, c-format
#| msgid ""
#| "%d/%d scripts (filter: %s) | Sort: %s | Alt+key/input: i=install, "
#| "r=remove, l=load, L=reload, u=unload, A=autoload, h=(un)hold, v=view "
#| "script | Input: q=close, $=refresh, s:x,y=sort, words=filter, *=reset "
#| "filter | Mouse: left=select, right=install/remove"
msgid "" msgid ""
"%d/%d scripts (filter: %s) | Sort: %s | Alt+key/input: i=install, r=remove, " "%d/%d scripts | Filter: %s | Sort: %s | Alt+key/input: i=install, r=remove, "
"l=load, L=reload, u=unload, A=autoload, h=(un)hold, v=view script | Input: " "l=load, L=reload, u=unload, A=autoload, h=(un)hold, v=view script | Input: "
"q=close, $=refresh, s:x,y=sort, words=filter, *=reset filter | Mouse: " "$=refresh, s:x,y=sort, words=filter, *=reset filter, q=close buffer | Mouse: "
"left=select, right=install/remove" "left=select, right=install/remove"
msgstr "" msgstr ""
"%d/%d 個のスクリプト (フィルタ: %s) | ソート: %s | Alt+key/input: i=インス" "%d/%d 個のスクリプト (フィルタ: %s) | ソート: %s | Alt+key/input: i=インス"
@@ -16973,6 +16996,11 @@ msgstr "ロードされた %s スクリプト:"
msgid "script name with extension" msgid "script name with extension"
msgstr "スクリプトの拡張子のリスト" msgstr "スクリプトの拡張子のリスト"
#, fuzzy
#| msgid "comma separated list of file name extensions for plugins"
msgid "comma-separated list of plugin:extension with supported languages"
msgstr "プラグインのファイル拡張子のコンマ区切りリスト"
msgid "script name with extension (wildcard \"*\" is allowed) (optional)" msgid "script name with extension (wildcard \"*\" is allowed) (optional)"
msgstr "" msgstr ""
"拡張子を含めたスクリプト名 (ワイルドカード \"*\" を使うことができます) (任意)" "拡張子を含めたスクリプト名 (ワイルドカード \"*\" を使うことができます) (任意)"
+91 -29
View File
@@ -24,10 +24,10 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: WeeChat\n" "Project-Id-Version: WeeChat\n"
"Report-Msgid-Bugs-To: flashcode@flashtux.org\n" "Report-Msgid-Bugs-To: flashcode@flashtux.org\n"
"POT-Creation-Date: 2026-03-21 17:24+0100\n" "POT-Creation-Date: 2026-06-08 22:23+0200\n"
"PO-Revision-Date: 2026-03-21 17:26+0100\n" "PO-Revision-Date: 2026-05-30 14:02+0200\n"
"Last-Translator: Krzysztof Korościk <soltys@soltys.info>\n" "Last-Translator: Krzysztof Korościk <soltys@soltys.info>\n"
"Language-Team: weechat-dev <weechat-dev@nongnu.org>\n" "Language-Team: Polish <weechat-dev@nongnu.org>\n"
"Language: pl\n" "Language: pl\n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
@@ -166,10 +166,10 @@ msgstr "wyłącza funkcje init/deinit z gcrypt"
#, c-format #, c-format
msgid "" msgid ""
"WeeChat %s Copyright %s, compiled on %s %s\n" "WeeChat %s Copyright %s, compiled on %s %s\n"
"Developed by Sébastien Helleu <flashcode@flashtux.org> - %s" "Developed by %s <%s> - %s"
msgstr "" msgstr ""
"WeeChat %s Copyright %s, skompilowano na %s %s\n" "WeeChat %s Copyright %s, skompilowano na %s %s\n"
"Rozwijane przez Sébastien Helleu <flashcode@flashtux.org> - %s" "Rozwijane przez %s <%s> - %s"
msgid "Usage:" msgid "Usage:"
msgstr "Użycie:" msgstr "Użycie:"
@@ -1148,6 +1148,21 @@ msgstr ""
"wiadomość: powód nieobecności (jeśli nie podano wiadomości status " "wiadomość: powód nieobecności (jeśli nie podano wiadomości status "
"nieobecności zostaje usunięty)" "nieobecności zostaje usunięty)"
msgid ""
"By default the away status is displayed only locally by the irc plugin (see /"
"help irc.look.display_away)."
msgstr ""
#, fuzzy
#| msgid ""
#| " - ${color:name}: the color (see \"Plugin API reference\", function "
#| "\"color\")"
msgid ""
"This command can be caught by other plugins and scripts (see \"Plugin API "
"reference\", function \"hook_command_run\")."
msgstr ""
" - ${color:nazwa}: kolor (zobacz „Opis API wtyczek”, funkcja \"color\")"
msgid "manage bars" msgid "manage bars"
msgstr "zarządzaj paskami" msgstr "zarządzaj paskami"
@@ -12466,8 +12481,8 @@ msgstr "nazwa serwera"
msgid "get nick from IRC host" msgid "get nick from IRC host"
msgstr "pobiera nick z hosta IRC" msgstr "pobiera nick z hosta IRC"
msgid "IRC host (like `:nick!name@server.com`)" msgid "IRC host (like `:nick!name@server`)"
msgstr "Host IRC (jak `:nick!nazwa@serwer.com`)" msgstr "Host IRC (jak `:nick!nazwa@serwer`)"
msgid "" msgid ""
"get nick color code (*deprecated* since version 1.5, replaced by " "get nick color code (*deprecated* since version 1.5, replaced by "
@@ -12686,10 +12701,13 @@ msgstr "%s%s: nie jesteś połączony z serwerem"
msgid "%s%s: this buffer is not a channel!" msgid "%s%s: this buffer is not a channel!"
msgstr "%s%s: to nie jest bufor kanału!" msgstr "%s%s: to nie jest bufor kanału!"
#, c-format #, fuzzy, c-format
#| msgid ""
#| "%d channels (total: %d) | Filter: %s | Sort: %s | Key(input): ctrl+j=join "
#| "channel, ($)=refresh, (q)=close buffer"
msgid "" msgid ""
"%d channels (total: %d) | Filter: %s | Sort: %s | Key(input): ctrl+j=join " "%d channels (total: %d) | Filter: %s | Sort: %s | Keys: ctrl+j=join channel "
"channel, ($)=refresh, (q)=close buffer" "| Input: $=refresh, s:x,y=sort, words=filter, *=reset filter, q=close buffer"
msgstr "" msgstr ""
"%d kanałów (łącznie: %d) | Filtr: %s | Sortowanie: %s | Key(input): " "%d kanałów (łącznie: %d) | Filtr: %s | Sortowanie: %s | Key(input): "
"ctrl+j=wejdź na kanał, ($)=odśwież, (q)=zamknij bufor" "ctrl+j=wejdź na kanał, ($)=odśwież, (q)=zamknij bufor"
@@ -13879,13 +13897,24 @@ msgstr ""
"wtyczkę logger, skompresować pliki na nowo (lub rozpakować), następnie " "wtyczkę logger, skompresować pliki na nowo (lub rozpakować), następnie "
"zmienić opcję w pliku logger.conf, następnie załadować wtyczkę logger" "zmienić opcję w pliku logger.conf, następnie załadować wtyczkę logger"
#, fuzzy
#| msgid ""
#| "when this size is reached, a rotation of log files is performed: the "
#| "existing rotated log files are renamed (.1 becomes .2, .2 becomes .3, "
#| "etc.) and the current file is renamed with extension .1; an integer "
#| "number with a suffix is allowed: b = bytes (default if no unit given), k "
#| "= kilobytes, m = megabytes, g = gigabytes, t = terabytes; example: \"2g\" "
#| "causes a rotation if the file size is > 2,000,000,000 bytes; if set to "
#| "\"0\", no rotation is performed (unlimited log size); WARNING: before "
#| "changing this option, you should first set the compression type via "
#| "option logger.file.rotation_compression_type"
msgid "" msgid ""
"when this size is reached, a rotation of log files is performed: the " "when this size is reached, a rotation of log files is performed: the "
"existing rotated log files are renamed (.1 becomes .2, .2 becomes .3, etc.) " "existing rotated log files are renamed (.1 becomes .2, .2 becomes .3, etc.) "
"and the current file is renamed with extension .1; an integer number with a " "and the current file is renamed with extension .1; an integer number with a "
"suffix is allowed: b = bytes (default if no unit given), k = kilobytes, m = " "suffix is allowed: b = bytes (default if no unit given), k = kilobytes, m = "
"megabytes, g = gigabytes, t = terabytes; example: \"2g\" causes a rotation " "megabytes, g = gigabytes, t = terabytes; example: \"2g\" causes a rotation "
"if the file size is > 2,000,000,000 bytes; if set to \"0\", no rotation is " "if the file size is greater than 2 GB; if set to \"0\", no rotation is "
"performed (unlimited log size); WARNING: before changing this option, you " "performed (unlimited log size); WARNING: before changing this option, you "
"should first set the compression type via option " "should first set the compression type via option "
"logger.file.rotation_compression_type" "logger.file.rotation_compression_type"
@@ -15688,13 +15717,21 @@ msgstr ""
"oznacza brak hasła, zobacz opcję relay.network.allow_empty_password) (uwaga: " "oznacza brak hasła, zobacz opcję relay.network.allow_empty_password) (uwaga: "
"zawartość jest przetwarzana, zobacz /help eval)" "zawartość jest przetwarzana, zobacz /help eval)"
#, fuzzy
#| msgid ""
#| "comma separated list of hash algorithms used for password authentication "
#| "in weechat protocol, among these values: \"plain\" (password in plain "
#| "text, not hashed), \"sha256\", \"sha512\", \"pbkdf2+sha256\", "
#| "\"pbkdf2+sha512\"), \"*\" means all algorithms, a name beginning with \"!"
#| "\" is a negative value to prevent an algorithm from being used, wildcard "
#| "\"*\" is allowed in names (examples: \"*\", \"pbkdf2*\", \"*,!plain\")"
msgid "" msgid ""
"comma separated list of hash algorithms used for password authentication in " "comma separated list of hash algorithms used for password authentication in "
"weechat protocol, among these values: \"plain\" (password in plain text, not " "\"api\" and \"weechat\" protocols, among these values: \"plain\" (password "
"hashed), \"sha256\", \"sha512\", \"pbkdf2+sha256\", \"pbkdf2+sha512\"), " "in plain text, not hashed), \"sha256\", \"sha512\", \"pbkdf2+sha256\", "
"\"*\" means all algorithms, a name beginning with \"!\" is a negative value " "\"pbkdf2+sha512\"), \"*\" means all algorithms, a name beginning with \"!\" "
"to prevent an algorithm from being used, wildcard \"*\" is allowed in names " "is a negative value to prevent an algorithm from being used, wildcard \"*\" "
"(examples: \"*\", \"pbkdf2*\", \"*,!plain\")" "is allowed in names (examples: \"*\", \"pbkdf2*\", \"*,!plain\")"
msgstr "" msgstr ""
"oddzielona przecinkami lista algorytmów hashujących używanych dla " "oddzielona przecinkami lista algorytmów hashujących używanych dla "
"uwierzytelnienia hasłem w protokole weechat, dostępne wartości: \"plain\" " "uwierzytelnienia hasłem w protokole weechat, dostępne wartości: \"plain\" "
@@ -15704,11 +15741,17 @@ msgstr ""
"użycia algorytmu, znak \"*\" może zostać użyty w nazwie (przykłady: \"*\", " "użycia algorytmu, znak \"*\" może zostać użyty w nazwie (przykłady: \"*\", "
"\"pbkdf2*\", \"*,!plain\")" "\"pbkdf2*\", \"*,!plain\")"
#, fuzzy
#| msgid ""
#| "number of iterations asked to the client in weechat protocol when a "
#| "hashed password with algorithm PBKDF2 is used for authentication; more "
#| "iterations is better in term of security but is slower to compute; this "
#| "number should not be too high if your CPU is slow"
msgid "" msgid ""
"number of iterations asked to the client in weechat protocol when a hashed " "number of iterations asked to the client in \"api\" and \"weechat\" "
"password with algorithm PBKDF2 is used for authentication; more iterations " "protocols when a hashed password with algorithm PBKDF2 is used for "
"is better in term of security but is slower to compute; this number should " "authentication; more iterations is better in term of security but is slower "
"not be too high if your CPU is slow" "to compute; this number should not be too high if your CPU is slow"
msgstr "" msgstr ""
"ilość iteracji zapytań klienta protokołu weechat w przypadku hashowania " "ilość iteracji zapytań klienta protokołu weechat w przypadku hashowania "
"haseł algorytmem PBKDF2 podczas uwierzytelnienia; im więcej iteracji tym " "haseł algorytmem PBKDF2 podczas uwierzytelnienia; im więcej iteracji tym "
@@ -15757,6 +15800,11 @@ msgstr ""
"hasła, ...; wysoka liczba obniża poziom bezpieczeństwa (0 lub 1 to zalecane " "hasła, ...; wysoka liczba obniża poziom bezpieczeństwa (0 lub 1 to zalecane "
"wartości)" "wartości)"
msgid ""
"permissions for the Unix socket, as octal value (see man chmod); it must be "
"a number with 3 digits, each between 0 and 7"
msgstr ""
msgid "" msgid ""
"POSIX extended regular expression with origins allowed in websockets (case-" "POSIX extended regular expression with origins allowed in websockets (case-"
"insensitive, use \"(?-i)\" at beginning to make it case-sensitive), example: " "insensitive, use \"(?-i)\" at beginning to make it case-sensitive), example: "
@@ -15765,7 +15813,7 @@ msgstr ""
"Rozszerzone wyrażenia regularne POSIX ze źródłami dozwolonymi dla gniazd " "Rozszerzone wyrażenia regularne POSIX ze źródłami dozwolonymi dla gniazd "
"webowych (nie wrażliwe na wielkość znaków, umieszczenie \"(?-i)\" na " "webowych (nie wrażliwe na wielkość znaków, umieszczenie \"(?-i)\" na "
"początku sprawi, że wielość znaków będzie miała znaczenie), przykład: " "początku sprawi, że wielość znaków będzie miała znaczenie), przykład: "
"\"^http://(www\\.)?przykład\\.(com|org)\"" "\"^https?://(www\\.)?example\\.(com|org)\""
msgid "" msgid ""
"enable websocket extension \"permessage-deflate\" to compress websocket " "enable websocket extension \"permessage-deflate\" to compress websocket "
@@ -15885,11 +15933,11 @@ msgstr "liczba podłączonych klientów"
#. TRANSLATORS: please do not translate the status names, they must be used in English #. TRANSLATORS: please do not translate the status names, they must be used in English
msgid "" msgid ""
"protocol,status (both are optional, for each argument \"*\" means all; " "protocol,status (both are optional, for each argument \"*\" means all; "
"protocols: irc, weechat; statuses: connecting, waiting_auth, connected, " "protocols: api, irc, weechat; statuses: connecting, waiting_auth, connected, "
"auth_failed, disconnected)" "auth_failed, disconnected)"
msgstr "" msgstr ""
"protokół, status (oba są opcjonalne, dla każdego argumentu „*” oznacza " "protokół, status (oba są opcjonalne, dla każdego argumentu „*” oznacza "
"wszystko; protokoły: irc, weechat; statusy: connecting, waiting_auth, " "wszystko; protokoły: api, irc, weechat; statusy: connecting, waiting_auth, "
"connected, auth_failed, disconnected)" "connected, auth_failed, disconnected)"
msgid "list of relay clients" msgid "list of relay clients"
@@ -16024,6 +16072,11 @@ msgstr "%s%s: nie można wykonać \"bind\" na ścieżce %s (%s): błąd %d %s"
msgid "%s%s: cannot \"bind\" on port %d (%s): error %d %s" msgid "%s%s: cannot \"bind\" on port %d (%s): error %d %s"
msgstr "%s%s: nie można wykonać \"bind\" na porcie %d (%s): błąd %d %s" msgstr "%s%s: nie można wykonać \"bind\" na porcie %d (%s): błąd %d %s"
#, fuzzy, c-format
#| msgid "%s%s: cannot \"listen\" on path %s (%s): error %d %s"
msgid "%s%s: warning: failed to set permissions on path %s (%s): error %d %s"
msgstr "%s%s: nie można wykonać \"listen\" na ścieżce %s (%s): błąd %d %s"
#, c-format #, c-format
msgid "%s%s: cannot \"listen\" on path %s (%s): error %d %s" msgid "%s%s: cannot \"listen\" on path %s (%s): error %d %s"
msgstr "%s%s: nie można wykonać \"listen\" na ścieżce %s (%s): błąd %d %s" msgstr "%s%s: nie można wykonać \"listen\" na ścieżce %s (%s): błąd %d %s"
@@ -16064,9 +16117,8 @@ msgstr ""
msgid "%s%s: not enough memory for listening on new port" msgid "%s%s: not enough memory for listening on new port"
msgstr "%s%s: za mało pamięci do nasłuchu na nowym porcie" msgstr "%s%s: za mało pamięci do nasłuchu na nowym porcie"
msgid "Relay WeeChat data to remote application (irc/weechat protocols)" msgid "Relay WeeChat data to remote applications"
msgstr "" msgstr "Przekazywanie danych WeeChat do zdalnych aplikacji"
"Przekazywanie danych WeeChat do zdalnych aplikacji (protokoły irc i weechat)"
msgid "connecting" msgid "connecting"
msgstr "łączę" msgstr "łączę"
@@ -16298,11 +16350,16 @@ msgstr "(brak)"
msgid "Alt+key/input: v=back to list d=jump to diff" msgid "Alt+key/input: v=back to list d=jump to diff"
msgstr "Alt+klawisz/wejście: v=wróć do listy d=skocz do diff" msgstr "Alt+klawisz/wejście: v=wróć do listy d=skocz do diff"
#, c-format #, fuzzy, c-format
#| msgid ""
#| "%d/%d scripts (filter: %s) | Sort: %s | Alt+key/input: i=install, "
#| "r=remove, l=load, L=reload, u=unload, A=autoload, h=(un)hold, v=view "
#| "script | Input: q=close, $=refresh, s:x,y=sort, words=filter, *=reset "
#| "filter | Mouse: left=select, right=install/remove"
msgid "" msgid ""
"%d/%d scripts (filter: %s) | Sort: %s | Alt+key/input: i=install, r=remove, " "%d/%d scripts | Filter: %s | Sort: %s | Alt+key/input: i=install, r=remove, "
"l=load, L=reload, u=unload, A=autoload, h=(un)hold, v=view script | Input: " "l=load, L=reload, u=unload, A=autoload, h=(un)hold, v=view script | Input: "
"q=close, $=refresh, s:x,y=sort, words=filter, *=reset filter | Mouse: " "$=refresh, s:x,y=sort, words=filter, *=reset filter, q=close buffer | Mouse: "
"left=select, right=install/remove" "left=select, right=install/remove"
msgstr "" msgstr ""
"%d/%d skrypty (filtr: %s) | Sort: %s | Alt+klawisz/wejście: i=instaluj " "%d/%d skrypty (filtr: %s) | Sort: %s | Alt+klawisz/wejście: i=instaluj "
@@ -16690,6 +16747,11 @@ msgstr "1 jeśli skrypt jest załadowany"
msgid "script name with extension" msgid "script name with extension"
msgstr "nazwa skryptu z rozszerzeniem" msgstr "nazwa skryptu z rozszerzeniem"
#, fuzzy
#| msgid "comma separated list of file name extensions for plugins"
msgid "comma-separated list of plugin:extension with supported languages"
msgstr "oddzielona przecinkami lista rozszerzeń nazw plików dla wtyczek"
msgid "script name with extension (wildcard \"*\" is allowed) (optional)" msgid "script name with extension (wildcard \"*\" is allowed) (optional)"
msgstr "" msgstr ""
"nazwa skryptu z rozszerzeniem (wildcard \"*\" jest dozwolony) (opcjonalne)\"" "nazwa skryptu z rozszerzeniem (wildcard \"*\" jest dozwolony) (opcjonalne)\""
+54 -27
View File
@@ -22,10 +22,10 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: WeeChat\n" "Project-Id-Version: WeeChat\n"
"Report-Msgid-Bugs-To: flashcode@flashtux.org\n" "Report-Msgid-Bugs-To: flashcode@flashtux.org\n"
"POT-Creation-Date: 2026-03-21 17:24+0100\n" "POT-Creation-Date: 2026-06-08 22:23+0200\n"
"PO-Revision-Date: 2026-03-12 20:24+0100\n" "PO-Revision-Date: 2026-05-30 14:02+0200\n"
"Last-Translator: Vasco Almeida <vascomalmeida@sapo.pt>\n" "Last-Translator: Vasco Almeida <vascomalmeida@sapo.pt>\n"
"Language-Team: Portuguese <>\n" "Language-Team: Portuguese - Portugal <weechat-dev@nongnu.org>\n"
"Language: pt\n" "Language: pt\n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
@@ -165,10 +165,10 @@ msgstr ""
#, c-format #, c-format
msgid "" msgid ""
"WeeChat %s Copyright %s, compiled on %s %s\n" "WeeChat %s Copyright %s, compiled on %s %s\n"
"Developed by Sébastien Helleu <flashcode@flashtux.org> - %s" "Developed by %s <%s> - %s"
msgstr "" msgstr ""
"WeeChat %s Copyright %s, compilado a %s %s\n" "WeeChat %s Copyright %s, compilado a %s %s\n"
"Desenvolvido por Sébastien Helleu <flashcode@flashtux.org> - %s" "Desenvolvido por %s <%s> - %s"
msgid "Usage:" msgid "Usage:"
msgstr "Utilização:" msgstr "Utilização:"
@@ -1190,6 +1190,16 @@ msgstr ""
"mensagem: mensagem de ausência (se não for indicada uma mensagem, o estado " "mensagem: mensagem de ausência (se não for indicada uma mensagem, o estado "
"ausente é removido)" "ausente é removido)"
msgid ""
"By default the away status is displayed only locally by the irc plugin (see /"
"help irc.look.display_away)."
msgstr ""
msgid ""
"This command can be caught by other plugins and scripts (see \"Plugin API "
"reference\", function \"hook_command_run\")."
msgstr ""
msgid "manage bars" msgid "manage bars"
msgstr "gerir barras" msgstr "gerir barras"
@@ -12495,8 +12505,8 @@ msgstr "nome do servidor"
msgid "get nick from IRC host" msgid "get nick from IRC host"
msgstr "obter nick do host de IRC" msgstr "obter nick do host de IRC"
msgid "IRC host (like `:nick!name@server.com`)" msgid "IRC host (like `:nick!name@server`)"
msgstr "host de IRC (tal como `:nick!nome@servidor.com`)" msgstr "host de IRC (tal como `:nick!nome@servidor`)"
msgid "" msgid ""
"get nick color code (*deprecated* since version 1.5, replaced by " "get nick color code (*deprecated* since version 1.5, replaced by "
@@ -12739,8 +12749,8 @@ msgstr "%s%s: este buffer não é um canal!"
#, c-format #, c-format
msgid "" msgid ""
"%d channels (total: %d) | Filter: %s | Sort: %s | Key(input): ctrl+j=join " "%d channels (total: %d) | Filter: %s | Sort: %s | Keys: ctrl+j=join channel "
"channel, ($)=refresh, (q)=close buffer" "| Input: $=refresh, s:x,y=sort, words=filter, *=reset filter, q=close buffer"
msgstr "" msgstr ""
msgid "Empty list of channels, try \"$\" to refresh list" msgid "Empty list of channels, try \"$\" to refresh list"
@@ -13944,7 +13954,7 @@ msgid ""
"and the current file is renamed with extension .1; an integer number with a " "and the current file is renamed with extension .1; an integer number with a "
"suffix is allowed: b = bytes (default if no unit given), k = kilobytes, m = " "suffix is allowed: b = bytes (default if no unit given), k = kilobytes, m = "
"megabytes, g = gigabytes, t = terabytes; example: \"2g\" causes a rotation " "megabytes, g = gigabytes, t = terabytes; example: \"2g\" causes a rotation "
"if the file size is > 2,000,000,000 bytes; if set to \"0\", no rotation is " "if the file size is greater than 2 GB; if set to \"0\", no rotation is "
"performed (unlimited log size); WARNING: before changing this option, you " "performed (unlimited log size); WARNING: before changing this option, you "
"should first set the compression type via option " "should first set the compression type via option "
"logger.file.rotation_compression_type" "logger.file.rotation_compression_type"
@@ -15834,11 +15844,11 @@ msgstr ""
#, fuzzy #, fuzzy
msgid "" msgid ""
"comma separated list of hash algorithms used for password authentication in " "comma separated list of hash algorithms used for password authentication in "
"weechat protocol, among these values: \"plain\" (password in plain text, not " "\"api\" and \"weechat\" protocols, among these values: \"plain\" (password "
"hashed), \"sha256\", \"sha512\", \"pbkdf2+sha256\", \"pbkdf2+sha512\"), " "in plain text, not hashed), \"sha256\", \"sha512\", \"pbkdf2+sha256\", "
"\"*\" means all algorithms, a name beginning with \"!\" is a negative value " "\"pbkdf2+sha512\"), \"*\" means all algorithms, a name beginning with \"!\" "
"to prevent an algorithm from being used, wildcard \"*\" is allowed in names " "is a negative value to prevent an algorithm from being used, wildcard \"*\" "
"(examples: \"*\", \"pbkdf2*\", \"*,!plain\")" "is allowed in names (examples: \"*\", \"pbkdf2*\", \"*,!plain\")"
msgstr "" msgstr ""
"lista de plugins separados por vírgula para carregar automaticamente ao " "lista de plugins separados por vírgula para carregar automaticamente ao "
"iniciar, \"*\" significa todos os plugins encontrados, um nome começado com " "iniciar, \"*\" significa todos os plugins encontrados, um nome começado com "
@@ -15847,10 +15857,10 @@ msgstr ""
"tcl\")" "tcl\")"
msgid "" msgid ""
"number of iterations asked to the client in weechat protocol when a hashed " "number of iterations asked to the client in \"api\" and \"weechat\" "
"password with algorithm PBKDF2 is used for authentication; more iterations " "protocols when a hashed password with algorithm PBKDF2 is used for "
"is better in term of security but is slower to compute; this number should " "authentication; more iterations is better in term of security but is slower "
"not be too high if your CPU is slow" "to compute; this number should not be too high if your CPU is slow"
msgstr "" msgstr ""
msgid "" msgid ""
@@ -15883,6 +15893,11 @@ msgid ""
"1 are recommended values)" "1 are recommended values)"
msgstr "" msgstr ""
msgid ""
"permissions for the Unix socket, as octal value (see man chmod); it must be "
"a number with 3 digits, each between 0 and 7"
msgstr ""
#, fuzzy #, fuzzy
msgid "" msgid ""
"POSIX extended regular expression with origins allowed in websockets (case-" "POSIX extended regular expression with origins allowed in websockets (case-"
@@ -16006,7 +16021,7 @@ msgstr "número de cliente para reencaminhar"
#, fuzzy #, fuzzy
msgid "" msgid ""
"protocol,status (both are optional, for each argument \"*\" means all; " "protocol,status (both are optional, for each argument \"*\" means all; "
"protocols: irc, weechat; statuses: connecting, waiting_auth, connected, " "protocols: api, irc, weechat; statuses: connecting, waiting_auth, connected, "
"auth_failed, disconnected)" "auth_failed, disconnected)"
msgstr "" msgstr ""
"nome de estado (opcional): connecting, waiting_auth, connected, auth_failed, " "nome de estado (opcional): connecting, waiting_auth, connected, auth_failed, "
@@ -16155,6 +16170,10 @@ msgstr "%s%s: não é possível efetuar \"bind\" da porta %d (%s): erro %d %s"
msgid "%s%s: cannot \"bind\" on port %d (%s): error %d %s" msgid "%s%s: cannot \"bind\" on port %d (%s): error %d %s"
msgstr "%s%s: não é possível efetuar \"bind\" da porta %d (%s): erro %d %s" msgstr "%s%s: não é possível efetuar \"bind\" da porta %d (%s): erro %d %s"
#, fuzzy, c-format
msgid "%s%s: warning: failed to set permissions on path %s (%s): error %d %s"
msgstr "%s%s: não foi possível efetuar \"listen\" da porta %d (%s): erro %d %s"
#, fuzzy, c-format #, fuzzy, c-format
msgid "%s%s: cannot \"listen\" on path %s (%s): error %d %s" msgid "%s%s: cannot \"listen\" on path %s (%s): error %d %s"
msgstr "%s%s: não foi possível efetuar \"listen\" da porta %d (%s): erro %d %s" msgstr "%s%s: não foi possível efetuar \"listen\" da porta %d (%s): erro %d %s"
@@ -16195,10 +16214,8 @@ msgstr ""
msgid "%s%s: not enough memory for listening on new port" msgid "%s%s: not enough memory for listening on new port"
msgstr "%s%s: memória insuficiente para escutar nova porta" msgstr "%s%s: memória insuficiente para escutar nova porta"
msgid "Relay WeeChat data to remote application (irc/weechat protocols)" msgid "Relay WeeChat data to remote applications"
msgstr "" msgstr "Reencaminhar dados do WeeChat para aplicações remotas"
"Reencaminhar dados do WeeChat para aplicações remotas (protocolos irc/"
"weechat)"
msgid "connecting" msgid "connecting"
msgstr "a conectar" msgstr "a conectar"
@@ -16442,11 +16459,16 @@ msgstr "(nada)"
msgid "Alt+key/input: v=back to list d=jump to diff" msgid "Alt+key/input: v=back to list d=jump to diff"
msgstr "Alt+tecla/entrada: v=voltar à lista d=saltar para o diff" msgstr "Alt+tecla/entrada: v=voltar à lista d=saltar para o diff"
#, c-format #, fuzzy, c-format
#| msgid ""
#| "%d/%d scripts (filter: %s) | Sort: %s | Alt+key/input: i=install, "
#| "r=remove, l=load, L=reload, u=unload, A=autoload, h=(un)hold, v=view "
#| "script | Input: q=close, $=refresh, s:x,y=sort, words=filter, *=reset "
#| "filter | Mouse: left=select, right=install/remove"
msgid "" msgid ""
"%d/%d scripts (filter: %s) | Sort: %s | Alt+key/input: i=install, r=remove, " "%d/%d scripts | Filter: %s | Sort: %s | Alt+key/input: i=install, r=remove, "
"l=load, L=reload, u=unload, A=autoload, h=(un)hold, v=view script | Input: " "l=load, L=reload, u=unload, A=autoload, h=(un)hold, v=view script | Input: "
"q=close, $=refresh, s:x,y=sort, words=filter, *=reset filter | Mouse: " "$=refresh, s:x,y=sort, words=filter, *=reset filter, q=close buffer | Mouse: "
"left=select, right=install/remove" "left=select, right=install/remove"
msgstr "" msgstr ""
"%d/%d scripts (filtro: %s) | Ordenar: %s | Alt+tecla/entrada: i=instalar, " "%d/%d scripts (filtro: %s) | Ordenar: %s | Alt+tecla/entrada: i=instalar, "
@@ -16847,6 +16869,11 @@ msgstr "scripts %s carregados:"
msgid "script name with extension" msgid "script name with extension"
msgstr "lista de extensões de script" msgstr "lista de extensões de script"
#, fuzzy
#| msgid "comma separated list of file name extensions for plugins"
msgid "comma-separated list of plugin:extension with supported languages"
msgstr "lista de extensões de ficheiros separadas por vírgula para os plugins"
msgid "script name with extension (wildcard \"*\" is allowed) (optional)" msgid "script name with extension (wildcard \"*\" is allowed) (optional)"
msgstr "" msgstr ""
"nome do script com extensão (o caráter universal \"*\" é permitido) " "nome do script com extensão (o caráter universal \"*\" é permitido) "
+46 -23
View File
@@ -46,10 +46,10 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: WeeChat\n" "Project-Id-Version: WeeChat\n"
"Report-Msgid-Bugs-To: flashcode@flashtux.org\n" "Report-Msgid-Bugs-To: flashcode@flashtux.org\n"
"POT-Creation-Date: 2026-03-21 17:24+0100\n" "POT-Creation-Date: 2026-06-08 22:23+0200\n"
"PO-Revision-Date: 2026-03-12 20:19+0100\n" "PO-Revision-Date: 2026-05-30 14:02+0200\n"
"Last-Translator: Érico Nogueira <ericonr@disroot.org>\n" "Last-Translator: Érico Nogueira <ericonr@disroot.org>\n"
"Language-Team: weechat-dev <weechat-dev@nongnu.org>\n" "Language-Team: Portuguese - Brazil <weechat-dev@nongnu.org>\n"
"Language: pt_BR\n" "Language: pt_BR\n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
@@ -189,10 +189,10 @@ msgstr ""
#, c-format #, c-format
msgid "" msgid ""
"WeeChat %s Copyright %s, compiled on %s %s\n" "WeeChat %s Copyright %s, compiled on %s %s\n"
"Developed by Sébastien Helleu <flashcode@flashtux.org> - %s" "Developed by %s <%s> - %s"
msgstr "" msgstr ""
"WeeChat %s Copyright %s, compilado em %s %s\n" "WeeChat %s Copyright %s, compilado em %s %s\n"
"Desenvolvido por Sébastien Helleu <flashcode@flashtux.org> - %s" "Desenvolvido por %s <%s> - %s"
msgid "Usage:" msgid "Usage:"
msgstr "Uso:" msgstr "Uso:"
@@ -1201,6 +1201,16 @@ msgstr ""
"message: mensagem para ausência (se nenhuma mensagem for fornecida, o status " "message: mensagem para ausência (se nenhuma mensagem for fornecida, o status "
"de ausência é removido)" "de ausência é removido)"
msgid ""
"By default the away status is displayed only locally by the irc plugin (see /"
"help irc.look.display_away)."
msgstr ""
msgid ""
"This command can be caught by other plugins and scripts (see \"Plugin API "
"reference\", function \"hook_command_run\")."
msgstr ""
msgid "manage bars" msgid "manage bars"
msgstr "gerenciar barras" msgstr "gerenciar barras"
@@ -11644,8 +11654,8 @@ msgstr "nome do servidor"
msgid "get nick from IRC host" msgid "get nick from IRC host"
msgstr "obter apelido de host IRC" msgstr "obter apelido de host IRC"
msgid "IRC host (like `:nick!name@server.com`)" msgid "IRC host (like `:nick!name@server`)"
msgstr "host IRC (exemplo: `:apelido!nome@servidor.com`)" msgstr "host IRC (exemplo: `:apelido!nome@servidor`)"
msgid "" msgid ""
"get nick color code (*deprecated* since version 1.5, replaced by " "get nick color code (*deprecated* since version 1.5, replaced by "
@@ -11881,8 +11891,8 @@ msgstr "%s%s: este buffer não é um canal!"
#, c-format #, c-format
msgid "" msgid ""
"%d channels (total: %d) | Filter: %s | Sort: %s | Key(input): ctrl+j=join " "%d channels (total: %d) | Filter: %s | Sort: %s | Keys: ctrl+j=join channel "
"channel, ($)=refresh, (q)=close buffer" "| Input: $=refresh, s:x,y=sort, words=filter, *=reset filter, q=close buffer"
msgstr "" msgstr ""
msgid "Empty list of channels, try \"$\" to refresh list" msgid "Empty list of channels, try \"$\" to refresh list"
@@ -13046,7 +13056,7 @@ msgid ""
"and the current file is renamed with extension .1; an integer number with a " "and the current file is renamed with extension .1; an integer number with a "
"suffix is allowed: b = bytes (default if no unit given), k = kilobytes, m = " "suffix is allowed: b = bytes (default if no unit given), k = kilobytes, m = "
"megabytes, g = gigabytes, t = terabytes; example: \"2g\" causes a rotation " "megabytes, g = gigabytes, t = terabytes; example: \"2g\" causes a rotation "
"if the file size is > 2,000,000,000 bytes; if set to \"0\", no rotation is " "if the file size is greater than 2 GB; if set to \"0\", no rotation is "
"performed (unlimited log size); WARNING: before changing this option, you " "performed (unlimited log size); WARNING: before changing this option, you "
"should first set the compression type via option " "should first set the compression type via option "
"logger.file.rotation_compression_type" "logger.file.rotation_compression_type"
@@ -14878,11 +14888,11 @@ msgstr ""
#, fuzzy #, fuzzy
msgid "" msgid ""
"comma separated list of hash algorithms used for password authentication in " "comma separated list of hash algorithms used for password authentication in "
"weechat protocol, among these values: \"plain\" (password in plain text, not " "\"api\" and \"weechat\" protocols, among these values: \"plain\" (password "
"hashed), \"sha256\", \"sha512\", \"pbkdf2+sha256\", \"pbkdf2+sha512\"), " "in plain text, not hashed), \"sha256\", \"sha512\", \"pbkdf2+sha256\", "
"\"*\" means all algorithms, a name beginning with \"!\" is a negative value " "\"pbkdf2+sha512\"), \"*\" means all algorithms, a name beginning with \"!\" "
"to prevent an algorithm from being used, wildcard \"*\" is allowed in names " "is a negative value to prevent an algorithm from being used, wildcard \"*\" "
"(examples: \"*\", \"pbkdf2*\", \"*,!plain\")" "is allowed in names (examples: \"*\", \"pbkdf2*\", \"*,!plain\")"
msgstr "" msgstr ""
"lista separada por vírgulas dos plugins para carregar automaticamente " "lista separada por vírgulas dos plugins para carregar automaticamente "
"nainicialização, \"*\" significa todos os plugins encontrados, um nome " "nainicialização, \"*\" significa todos os plugins encontrados, um nome "
@@ -14891,10 +14901,10 @@ msgstr ""
"plugins (exemplos: \"*\" ou \"*,!lua,!tcl\")" "plugins (exemplos: \"*\" ou \"*,!lua,!tcl\")"
msgid "" msgid ""
"number of iterations asked to the client in weechat protocol when a hashed " "number of iterations asked to the client in \"api\" and \"weechat\" "
"password with algorithm PBKDF2 is used for authentication; more iterations " "protocols when a hashed password with algorithm PBKDF2 is used for "
"is better in term of security but is slower to compute; this number should " "authentication; more iterations is better in term of security but is slower "
"not be too high if your CPU is slow" "to compute; this number should not be too high if your CPU is slow"
msgstr "" msgstr ""
msgid "" msgid ""
@@ -14927,6 +14937,11 @@ msgid ""
"1 are recommended values)" "1 are recommended values)"
msgstr "" msgstr ""
msgid ""
"permissions for the Unix socket, as octal value (see man chmod); it must be "
"a number with 3 digits, each between 0 and 7"
msgstr ""
#, fuzzy #, fuzzy
msgid "" msgid ""
"POSIX extended regular expression with origins allowed in websockets (case-" "POSIX extended regular expression with origins allowed in websockets (case-"
@@ -15045,7 +15060,7 @@ msgstr "numero de clientes para o relay"
#. TRANSLATORS: please do not translate the status names, they must be used in English #. TRANSLATORS: please do not translate the status names, they must be used in English
msgid "" msgid ""
"protocol,status (both are optional, for each argument \"*\" means all; " "protocol,status (both are optional, for each argument \"*\" means all; "
"protocols: irc, weechat; statuses: connecting, waiting_auth, connected, " "protocols: api, irc, weechat; statuses: connecting, waiting_auth, connected, "
"auth_failed, disconnected)" "auth_failed, disconnected)"
msgstr "" msgstr ""
@@ -15165,6 +15180,10 @@ msgstr "%s%s: erro ao associar (\"bind\") na porta %d (%s.%s)"
msgid "%s%s: cannot \"bind\" on port %d (%s): error %d %s" msgid "%s%s: cannot \"bind\" on port %d (%s): error %d %s"
msgstr "%s%s: erro ao associar (\"bind\") na porta %d (%s.%s)" msgstr "%s%s: erro ao associar (\"bind\") na porta %d (%s.%s)"
#, fuzzy, c-format
msgid "%s%s: warning: failed to set permissions on path %s (%s): error %d %s"
msgstr "%s%s: não foi possível aceitar o cliente na porta %d (%s.%s)"
#, fuzzy, c-format #, fuzzy, c-format
msgid "%s%s: cannot \"listen\" on path %s (%s): error %d %s" msgid "%s%s: cannot \"listen\" on path %s (%s): error %d %s"
msgstr "%s%s: não foi possível aceitar o cliente na porta %d (%s.%s)" msgstr "%s%s: não foi possível aceitar o cliente na porta %d (%s.%s)"
@@ -15201,7 +15220,7 @@ msgstr ""
msgid "%s%s: not enough memory for listening on new port" msgid "%s%s: not enough memory for listening on new port"
msgstr "%s%s: memória insuficiente para escutar na nova porta" msgstr "%s%s: memória insuficiente para escutar na nova porta"
msgid "Relay WeeChat data to remote application (irc/weechat protocols)" msgid "Relay WeeChat data to remote applications"
msgstr "" msgstr ""
msgid "connecting" msgid "connecting"
@@ -15445,9 +15464,9 @@ msgstr "Alt+key/input: v=volta para lista d=pular para o diff"
#, c-format #, c-format
msgid "" msgid ""
"%d/%d scripts (filter: %s) | Sort: %s | Alt+key/input: i=install, r=remove, " "%d/%d scripts | Filter: %s | Sort: %s | Alt+key/input: i=install, r=remove, "
"l=load, L=reload, u=unload, A=autoload, h=(un)hold, v=view script | Input: " "l=load, L=reload, u=unload, A=autoload, h=(un)hold, v=view script | Input: "
"q=close, $=refresh, s:x,y=sort, words=filter, *=reset filter | Mouse: " "$=refresh, s:x,y=sort, words=filter, *=reset filter, q=close buffer | Mouse: "
"left=select, right=install/remove" "left=select, right=install/remove"
msgstr "" msgstr ""
@@ -15819,6 +15838,10 @@ msgstr "scripts %s carregados:"
msgid "script name with extension" msgid "script name with extension"
msgstr "list de scripts" msgstr "list de scripts"
#, fuzzy
msgid "comma-separated list of plugin:extension with supported languages"
msgstr "lista de dicionários (separados por vírgula) para uso neste buffer"
#, fuzzy #, fuzzy
msgid "script name with extension (wildcard \"*\" is allowed) (optional)" msgid "script name with extension (wildcard \"*\" is allowed) (optional)"
msgstr "" msgstr ""
+42 -20
View File
@@ -23,10 +23,10 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: WeeChat\n" "Project-Id-Version: WeeChat\n"
"Report-Msgid-Bugs-To: flashcode@flashtux.org\n" "Report-Msgid-Bugs-To: flashcode@flashtux.org\n"
"POT-Creation-Date: 2026-03-21 17:24+0100\n" "POT-Creation-Date: 2026-06-08 22:23+0200\n"
"PO-Revision-Date: 2026-03-08 08:59+0100\n" "PO-Revision-Date: 2026-03-08 08:59+0100\n"
"Last-Translator: Aleksey V Zapparov AKA ixti <ixti@member.fsf.org>\n" "Last-Translator: Aleksey V Zapparov AKA ixti <ixti@member.fsf.org>\n"
"Language-Team: weechat-dev <weechat-dev@nongnu.org>\n" "Language-Team: Russian <weechat-dev@nongnu.org>\n"
"Language: ru\n" "Language: ru\n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
@@ -162,7 +162,7 @@ msgstr ""
#, fuzzy, c-format #, fuzzy, c-format
msgid "" msgid ""
"WeeChat %s Copyright %s, compiled on %s %s\n" "WeeChat %s Copyright %s, compiled on %s %s\n"
"Developed by Sébastien Helleu <flashcode@flashtux.org> - %s" "Developed by %s <%s> - %s"
msgstr "" msgstr ""
"%s Copyright (C) 2003-2010, собран %s %s\n" "%s Copyright (C) 2003-2010, собран %s %s\n"
"Разработчик - Sébastien Helleu <flashcode@flashtux.org> - %s" "Разработчик - Sébastien Helleu <flashcode@flashtux.org> - %s"
@@ -1179,6 +1179,16 @@ msgstr ""
" -all: включить режим \"отсутствую\" на всех подключенных серверах\n" " -all: включить режим \"отсутствую\" на всех подключенных серверах\n"
"сообщение: причина отсутствия (если сообщения нет - статус снимается)" "сообщение: причина отсутствия (если сообщения нет - статус снимается)"
msgid ""
"By default the away status is displayed only locally by the irc plugin (see /"
"help irc.look.display_away)."
msgstr ""
msgid ""
"This command can be caught by other plugins and scripts (see \"Plugin API "
"reference\", function \"hook_command_run\")."
msgstr ""
#, fuzzy #, fuzzy
msgid "manage bars" msgid "manage bars"
msgstr "управление буферами" msgstr "управление буферами"
@@ -11327,7 +11337,7 @@ msgstr "цель: название сервера"
msgid "get nick from IRC host" msgid "get nick from IRC host"
msgstr "банит ник или хост" msgstr "банит ник или хост"
msgid "IRC host (like `:nick!name@server.com`)" msgid "IRC host (like `:nick!name@server`)"
msgstr "" msgstr ""
msgid "" msgid ""
@@ -11561,8 +11571,8 @@ msgstr "Это окно не является каналом!\n"
#, c-format #, c-format
msgid "" msgid ""
"%d channels (total: %d) | Filter: %s | Sort: %s | Key(input): ctrl+j=join " "%d channels (total: %d) | Filter: %s | Sort: %s | Keys: ctrl+j=join channel "
"channel, ($)=refresh, (q)=close buffer" "| Input: $=refresh, s:x,y=sort, words=filter, *=reset filter, q=close buffer"
msgstr "" msgstr ""
msgid "Empty list of channels, try \"$\" to refresh list" msgid "Empty list of channels, try \"$\" to refresh list"
@@ -12686,7 +12696,7 @@ msgid ""
"and the current file is renamed with extension .1; an integer number with a " "and the current file is renamed with extension .1; an integer number with a "
"suffix is allowed: b = bytes (default if no unit given), k = kilobytes, m = " "suffix is allowed: b = bytes (default if no unit given), k = kilobytes, m = "
"megabytes, g = gigabytes, t = terabytes; example: \"2g\" causes a rotation " "megabytes, g = gigabytes, t = terabytes; example: \"2g\" causes a rotation "
"if the file size is > 2,000,000,000 bytes; if set to \"0\", no rotation is " "if the file size is greater than 2 GB; if set to \"0\", no rotation is "
"performed (unlimited log size); WARNING: before changing this option, you " "performed (unlimited log size); WARNING: before changing this option, you "
"should first set the compression type via option " "should first set the compression type via option "
"logger.file.rotation_compression_type" "logger.file.rotation_compression_type"
@@ -14442,21 +14452,21 @@ msgstr ""
#, fuzzy #, fuzzy
msgid "" msgid ""
"comma separated list of hash algorithms used for password authentication in " "comma separated list of hash algorithms used for password authentication in "
"weechat protocol, among these values: \"plain\" (password in plain text, not " "\"api\" and \"weechat\" protocols, among these values: \"plain\" (password "
"hashed), \"sha256\", \"sha512\", \"pbkdf2+sha256\", \"pbkdf2+sha512\"), " "in plain text, not hashed), \"sha256\", \"sha512\", \"pbkdf2+sha256\", "
"\"*\" means all algorithms, a name beginning with \"!\" is a negative value " "\"pbkdf2+sha512\"), \"*\" means all algorithms, a name beginning with \"!\" "
"to prevent an algorithm from being used, wildcard \"*\" is allowed in names " "is a negative value to prevent an algorithm from being used, wildcard \"*\" "
"(examples: \"*\", \"pbkdf2*\", \"*,!plain\")" "is allowed in names (examples: \"*\", \"pbkdf2*\", \"*,!plain\")"
msgstr "" msgstr ""
"разделённый запятыми список автоматически загружаемых при запуске plug-" "разделённый запятыми список автоматически загружаемых при запуске plug-"
"in'ов , \"*\" означает все найденные plug-in'ы (имена могут быть не полными, " "in'ов , \"*\" означает все найденные plug-in'ы (имена могут быть не полными, "
"например \"perl\" успешно загрузит \"libperl.so\")" "например \"perl\" успешно загрузит \"libperl.so\")"
msgid "" msgid ""
"number of iterations asked to the client in weechat protocol when a hashed " "number of iterations asked to the client in \"api\" and \"weechat\" "
"password with algorithm PBKDF2 is used for authentication; more iterations " "protocols when a hashed password with algorithm PBKDF2 is used for "
"is better in term of security but is slower to compute; this number should " "authentication; more iterations is better in term of security but is slower "
"not be too high if your CPU is slow" "to compute; this number should not be too high if your CPU is slow"
msgstr "" msgstr ""
msgid "" msgid ""
@@ -14489,6 +14499,11 @@ msgid ""
"1 are recommended values)" "1 are recommended values)"
msgstr "" msgstr ""
msgid ""
"permissions for the Unix socket, as octal value (see man chmod); it must be "
"a number with 3 digits, each between 0 and 7"
msgstr ""
msgid "" msgid ""
"POSIX extended regular expression with origins allowed in websockets (case-" "POSIX extended regular expression with origins allowed in websockets (case-"
"insensitive, use \"(?-i)\" at beginning to make it case-sensitive), example: " "insensitive, use \"(?-i)\" at beginning to make it case-sensitive), example: "
@@ -14588,7 +14603,7 @@ msgstr "Нет сервера.\n"
#. TRANSLATORS: please do not translate the status names, they must be used in English #. TRANSLATORS: please do not translate the status names, they must be used in English
msgid "" msgid ""
"protocol,status (both are optional, for each argument \"*\" means all; " "protocol,status (both are optional, for each argument \"*\" means all; "
"protocols: irc, weechat; statuses: connecting, waiting_auth, connected, " "protocols: api, irc, weechat; statuses: connecting, waiting_auth, connected, "
"auth_failed, disconnected)" "auth_failed, disconnected)"
msgstr "" msgstr ""
@@ -14710,6 +14725,10 @@ msgstr "%s невозможно создать сокет\n"
msgid "%s%s: cannot \"bind\" on port %d (%s): error %d %s" msgid "%s%s: cannot \"bind\" on port %d (%s): error %d %s"
msgstr "%s невозможно создать сокет\n" msgstr "%s невозможно создать сокет\n"
#, fuzzy, c-format
msgid "%s%s: warning: failed to set permissions on path %s (%s): error %d %s"
msgstr "%s невозможно создать сокет\n"
#, fuzzy, c-format #, fuzzy, c-format
msgid "%s%s: cannot \"listen\" on path %s (%s): error %d %s" msgid "%s%s: cannot \"listen\" on path %s (%s): error %d %s"
msgstr "%s невозможно создать сокет\n" msgstr "%s невозможно создать сокет\n"
@@ -14748,7 +14767,7 @@ msgstr ""
msgid "%s%s: not enough memory for listening on new port" msgid "%s%s: not enough memory for listening on new port"
msgstr "%s недостаточно памяти для нового DCC\n" msgstr "%s недостаточно памяти для нового DCC\n"
msgid "Relay WeeChat data to remote application (irc/weechat protocols)" msgid "Relay WeeChat data to remote applications"
msgstr "" msgstr ""
#, fuzzy #, fuzzy
@@ -14992,9 +15011,9 @@ msgstr ""
#, c-format #, c-format
msgid "" msgid ""
"%d/%d scripts (filter: %s) | Sort: %s | Alt+key/input: i=install, r=remove, " "%d/%d scripts | Filter: %s | Sort: %s | Alt+key/input: i=install, r=remove, "
"l=load, L=reload, u=unload, A=autoload, h=(un)hold, v=view script | Input: " "l=load, L=reload, u=unload, A=autoload, h=(un)hold, v=view script | Input: "
"q=close, $=refresh, s:x,y=sort, words=filter, *=reset filter | Mouse: " "$=refresh, s:x,y=sort, words=filter, *=reset filter, q=close buffer | Mouse: "
"left=select, right=install/remove" "left=select, right=install/remove"
msgstr "" msgstr ""
@@ -15348,6 +15367,9 @@ msgstr "FIFO pipe закрыт\n"
msgid "script name with extension" msgid "script name with extension"
msgstr "Список сокращений:\n" msgstr "Список сокращений:\n"
msgid "comma-separated list of plugin:extension with supported languages"
msgstr ""
msgid "script name with extension (wildcard \"*\" is allowed) (optional)" msgid "script name with extension (wildcard \"*\" is allowed) (optional)"
msgstr "" msgstr ""
+96 -57
View File
@@ -22,10 +22,10 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: WeeChat\n" "Project-Id-Version: WeeChat\n"
"Report-Msgid-Bugs-To: flashcode@flashtux.org\n" "Report-Msgid-Bugs-To: flashcode@flashtux.org\n"
"POT-Creation-Date: 2026-03-21 17:24+0100\n" "POT-Creation-Date: 2026-06-08 22:23+0200\n"
"PO-Revision-Date: 2026-03-21 17:26+0100\n" "PO-Revision-Date: 2026-05-30 14:02+0200\n"
"Last-Translator: Ivan Pešić <ivan.pesic@gmail.com>\n" "Last-Translator: Ivan Pešić <ivan.pesic@gmail.com>\n"
"Language-Team: weechat-dev <weechat-dev@nongnu.org>\n" "Language-Team: Serbian <weechat-dev@nongnu.org>\n"
"Language: sr\n" "Language: sr\n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
@@ -166,10 +166,10 @@ msgstr "искључује иниц/деиниц gcrypt"
#, c-format #, c-format
msgid "" msgid ""
"WeeChat %s Copyright %s, compiled on %s %s\n" "WeeChat %s Copyright %s, compiled on %s %s\n"
"Developed by Sébastien Helleu <flashcode@flashtux.org> - %s" "Developed by %s <%s> - %s"
msgstr "" msgstr ""
"WeeChat %s ауторска права %s, компајлиран %s %s\n" "WeeChat %s ауторска права %s, компајлиран %s %s\n"
"Написао Себастијен Елеу <flashcode@flashtux.org> - %s" "Написао %s <%s> - %s"
msgid "Usage:" msgid "Usage:"
msgstr "Употреба:" msgstr "Употреба:"
@@ -1138,6 +1138,20 @@ msgid ""
msgstr "" msgstr ""
"порука: порука одсутности (ако се не наведе, статус одсутности се уклања)" "порука: порука одсутности (ако се не наведе, статус одсутности се уклања)"
msgid ""
"By default the away status is displayed only locally by the irc plugin (see /"
"help irc.look.display_away)."
msgstr ""
"irc додатак подразумевао приказује статус одсутности се само локално "
"(погледајте /help irc.look.display_away)."
msgid ""
"This command can be caught by other plugins and scripts (see \"Plugin API "
"reference\", function \"hook_command_run\")."
msgstr ""
"Ову команду могу да ухвате остали додаци и скрипте (погледајте "
"„Референтноупутство за API додатака”, функцију „hook_command_run”)."
msgid "manage bars" msgid "manage bars"
msgstr "управљање тракама" msgstr "управљање тракама"
@@ -1240,16 +1254,12 @@ msgstr "маска: име у којем је дозвољен џокер „*
msgid "raw[set]: set a value for a bar property" msgid "raw[set]: set a value for a bar property"
msgstr "raw[set]: поставља вредност особине траке" msgstr "raw[set]: поставља вредност особине траке"
#, fuzzy
#| msgid ""
#| "option: option to change (for options list, look at /set weechat.bar."
#| "<barname>.*)"
msgid "" msgid ""
"option: option to change (for options list, look at /set weechat.bar." "option: option to change (for options list, look at /set weechat.bar."
"<bar_name>.*)" "<bar_name>.*)"
msgstr "" msgstr ""
"опција: опција која се мења (за листу опција, погледајте /set weechat.bar." "опција: опција која се мења (за листу опција, погледајте /set weechat.bar."
"<иметраке>.*)" "<име_траке>.*)"
msgid "value: new value for option" msgid "value: new value for option"
msgstr "вредност: нова вредност опције" msgstr "вредност: нова вредност опције"
@@ -1779,14 +1789,11 @@ msgid "evaluate expression"
msgstr "израчунавање израза" msgstr "израчунавање израза"
#. TRANSLATORS: only text between angle brackets (eg: "<name>") may be translated #. TRANSLATORS: only text between angle brackets (eg: "<name>") may be translated
#, fuzzy
#| msgid ""
#| "[-n|-s] [-d] <expression> || [-n] [-d [-d]] -c <expression1> <operator> "
#| "<expression2>"
msgid "" msgid ""
"[-n|-s] [-e] [-d] <expression> || [-n] [-d [-d]] -c <expression1> <operator> " "[-n|-s] [-e] [-d] <expression> || [-n] [-d [-d]] -c <expression1> <operator> "
"<expression2>" "<expression2>"
msgstr "[-n|-s] [-d] <израз> || [-n] [-d [-d]] -c <израз1> <оператор> <израз2>" msgstr ""
"[-n|-s] [-e] [-d] <израз> || [-n] [-d [-d]] -c <израз1> <оператор> <израз2>"
msgid "raw[-n]: display result without sending it to buffer (debug mode)" msgid "raw[-n]: display result without sending it to buffer (debug mode)"
msgstr "raw[-n]: приказује резултат и не шаље га у бафер (дибаг режим)" msgstr "raw[-n]: приказује резултат и не шаље га у бафер (дибаг режим)"
@@ -1799,7 +1806,7 @@ msgstr ""
"тачка запетама)" "тачка запетама)"
msgid "raw[-e]: evaluate all commands before executing them" msgid "raw[-e]: evaluate all commands before executing them"
msgstr "" msgstr "raw[-e]: израчунај све команде пре него што се изврше"
msgid "" msgid ""
"raw[-d]: display debug output after evaluation (with two -d: more verbose " "raw[-d]: display debug output after evaluation (with two -d: more verbose "
@@ -3457,16 +3464,12 @@ msgstr "raw[del]: брише проксије"
msgid "raw[set]: set a value for a proxy property" msgid "raw[set]: set a value for a proxy property"
msgstr "raw[set]: поставља вредност особине проксија" msgstr "raw[set]: поставља вредност особине проксија"
#, fuzzy
#| msgid ""
#| "option: option to change (for options list, look at /set weechat.proxy."
#| "<proxyname>.*)"
msgid "" msgid ""
"option: option to change (for options list, look at /set weechat.proxy." "option: option to change (for options list, look at /set weechat.proxy."
"<proxy_name>.*)" "<proxy_name>.*)"
msgstr "" msgstr ""
"опција: опција која треба да се промени (за листу опција, погледајте /set " "опција: опција која треба да се промени (за листу опција, погледајте /set "
"weechat.proxy.<имепроксија>.*)" "weechat.proxy.<име_проксија>.*)"
msgid " add a http proxy, running on local host, port 8888:" msgid " add a http proxy, running on local host, port 8888:"
msgstr " додаје http прокси који се извршава на локалном хосту, порт 8888:" msgstr " додаје http прокси који се извршава на локалном хосту, порт 8888:"
@@ -4048,10 +4051,8 @@ msgstr ""
msgid "With option \"-quit\", the process is:" msgid "With option \"-quit\", the process is:"
msgstr "Процес са опцијом „-quit” је следећи:" msgstr "Процес са опцијом „-quit” је следећи:"
#, fuzzy
#| msgid " 1. close *ALL* connections (irc, xfer, relay, ...)"
msgid " 1. close *ALL* connections (irc, xfer, relay, etc.)" msgid " 1. close *ALL* connections (irc, xfer, relay, etc.)"
msgstr " 1. затварање *СВИХ* конекција (irc, xfer, relay, ...)" msgstr " 1. затварање *СВИХ* конекција (irc, xfer, relay, итд.)"
msgid " 2. save session into files (*.upgrade)" msgid " 2. save session into files (*.upgrade)"
msgstr " 2. чување сесије у фајлове (*.upgrade)" msgstr " 2. чување сесије у фајлове (*.upgrade)"
@@ -11906,7 +11907,6 @@ msgstr ""
msgid "left/right scroll in /list buffer (percent of width)" msgid "left/right scroll in /list buffer (percent of width)"
msgstr "скроловање у лево/десно у /list баферу (проценат ширине)" msgstr "скроловање у лево/десно у /list баферу (проценат ширине)"
#, fuzzy
msgid "" msgid ""
"comma-separated list of fields to sort channels (see /help list for a list " "comma-separated list of fields to sort channels (see /help list for a list "
"of fields); char \"-\" can be used before field to reverse order, char \"~\" " "of fields); char \"-\" can be used before field to reverse order, char \"~\" "
@@ -11917,8 +11917,8 @@ msgstr ""
"листа поља за сортирање канала раздвојених запетама (погледајте /help list " "листа поља за сортирање канала раздвојених запетама (погледајте /help list "
"за листу поља); карактер „-” може да се користи испред поља чиме се обрће " "за листу поља); карактер „-” може да се користи испред поља чиме се обрће "
"редослед, карактер „~” може да се употреби за поређење које не прави разлику " "редослед, карактер „~” може да се употреби за поређење које не прави разлику "
"у величини слова; пример: „-users,~name2” за поређење које не прави разлику " "у величини слова; пример: „-users,~name2” најпре за највеће канале, па онда "
"у величини слова и обрнуто сортирање по имену опције" "сортирање које не прави разлику у величини слова по имену канала без префикса"
msgid "strip channel topic colors in /list buffer" msgid "strip channel topic colors in /list buffer"
msgstr "уклањање боја теме канала у /list баферу" msgstr "уклањање боја теме канала у /list баферу"
@@ -12446,8 +12446,8 @@ msgstr "име сервера"
msgid "get nick from IRC host" msgid "get nick from IRC host"
msgstr "враћа надимак из IRC хоста" msgstr "враћа надимак из IRC хоста"
msgid "IRC host (like `:nick!name@server.com`)" msgid "IRC host (like `:nick!name@server`)"
msgstr "IRC хост (као `:надимак!име@сервер.com`)" msgstr "IRC хост (као `:надимак!име@сервер`)"
msgid "" msgid ""
"get nick color code (*deprecated* since version 1.5, replaced by " "get nick color code (*deprecated* since version 1.5, replaced by "
@@ -12664,10 +12664,13 @@ msgstr "%s%s: нисте повезани са сервером"
msgid "%s%s: this buffer is not a channel!" msgid "%s%s: this buffer is not a channel!"
msgstr "%s%s: овај бафер није канал!" msgstr "%s%s: овај бафер није канал!"
#, c-format #, fuzzy, c-format
#| msgid ""
#| "%d channels (total: %d) | Filter: %s | Sort: %s | Key(input): ctrl+j=join "
#| "channel, ($)=refresh, (q)=close buffer"
msgid "" msgid ""
"%d channels (total: %d) | Filter: %s | Sort: %s | Key(input): ctrl+j=join " "%d channels (total: %d) | Filter: %s | Sort: %s | Keys: ctrl+j=join channel "
"channel, ($)=refresh, (q)=close buffer" "| Input: $=refresh, s:x,y=sort, words=filter, *=reset filter, q=close buffer"
msgstr "" msgstr ""
"%d канала (укупно: %d) | Филтер: %s | Сортирање: %s | Тастер(унос): ctrl+j= " "%d канала (укупно: %d) | Филтер: %s | Сортирање: %s | Тастер(унос): ctrl+j= "
"приступ каналу, ($)=освежавање, (q)=затварање бафера" "приступ каналу, ($)=освежавање, (q)=затварање бафера"
@@ -13867,7 +13870,7 @@ msgid ""
"and the current file is renamed with extension .1; an integer number with a " "and the current file is renamed with extension .1; an integer number with a "
"suffix is allowed: b = bytes (default if no unit given), k = kilobytes, m = " "suffix is allowed: b = bytes (default if no unit given), k = kilobytes, m = "
"megabytes, g = gigabytes, t = terabytes; example: \"2g\" causes a rotation " "megabytes, g = gigabytes, t = terabytes; example: \"2g\" causes a rotation "
"if the file size is > 2,000,000,000 bytes; if set to \"0\", no rotation is " "if the file size is greater than 2 GB; if set to \"0\", no rotation is "
"performed (unlimited log size); WARNING: before changing this option, you " "performed (unlimited log size); WARNING: before changing this option, you "
"should first set the compression type via option " "should first set the compression type via option "
"logger.file.rotation_compression_type" "logger.file.rotation_compression_type"
@@ -13877,9 +13880,9 @@ msgstr ""
"текућем фајлу се поставља екстензија .1; дозвољава се цели број са суфиксом: " "текућем фајлу се поставља екстензија .1; дозвољава се цели број са суфиксом: "
"b = бајтова (подразумевано ако се не наведе јединица), k = килобајта, m = " "b = бајтова (подразумевано ако се не наведе јединица), k = килобајта, m = "
"мегабајта, g = гигабајта, t = терабајта; пример: „2g” значи да се ротација " "мегабајта, g = гигабајта, t = терабајта; пример: „2g” значи да се ротација "
"врши ако је величина фајла > 2,000,000,000 бајтова; ако се постави на „0”, " "врши ако је величина фајла > 2 GB; ако се постави на „0”, ротација се не "
"ротација се не врши (нема ограничења лог фајла); УПОЗОРЕЊЕ: пре него што " "врши (нема ограничења лог фајла); УПОЗОРЕЊЕ: пре него што промените ову "
"промените ову опцију, требало би најпре да поставите тип компресије опцијом " "опцију, требало би најпре да поставите тип компресије опцијом "
"logger.file.rotation_compression_type" "logger.file.rotation_compression_type"
msgid "" msgid ""
@@ -15676,13 +15679,21 @@ msgstr ""
"relay.network.allow_empty_password) (напомена: садржај се израчунава, " "relay.network.allow_empty_password) (напомена: садржај се израчунава, "
"погледајте /help eval)" "погледајте /help eval)"
#, fuzzy
#| msgid ""
#| "comma separated list of hash algorithms used for password authentication "
#| "in weechat protocol, among these values: \"plain\" (password in plain "
#| "text, not hashed), \"sha256\", \"sha512\", \"pbkdf2+sha256\", "
#| "\"pbkdf2+sha512\"), \"*\" means all algorithms, a name beginning with \"!"
#| "\" is a negative value to prevent an algorithm from being used, wildcard "
#| "\"*\" is allowed in names (examples: \"*\", \"pbkdf2*\", \"*,!plain\")"
msgid "" msgid ""
"comma separated list of hash algorithms used for password authentication in " "comma separated list of hash algorithms used for password authentication in "
"weechat protocol, among these values: \"plain\" (password in plain text, not " "\"api\" and \"weechat\" protocols, among these values: \"plain\" (password "
"hashed), \"sha256\", \"sha512\", \"pbkdf2+sha256\", \"pbkdf2+sha512\"), " "in plain text, not hashed), \"sha256\", \"sha512\", \"pbkdf2+sha256\", "
"\"*\" means all algorithms, a name beginning with \"!\" is a negative value " "\"pbkdf2+sha512\"), \"*\" means all algorithms, a name beginning with \"!\" "
"to prevent an algorithm from being used, wildcard \"*\" is allowed in names " "is a negative value to prevent an algorithm from being used, wildcard \"*\" "
"(examples: \"*\", \"pbkdf2*\", \"*,!plain\")" "is allowed in names (examples: \"*\", \"pbkdf2*\", \"*,!plain\")"
msgstr "" msgstr ""
"листа хеш алгоритама раздвојених запетама који се користе за аутентификацију " "листа хеш алгоритама раздвојених запетама који се користе за аутентификацију "
"лозинке у weechat протоколу, могу бити: „plain” (лозинка је чисти текст, не " "лозинке у weechat протоколу, могу бити: „plain” (лозинка је чисти текст, не "
@@ -15691,11 +15702,17 @@ msgstr ""
"спречава употреба тог алгоритма, у именима је дозвољена употреба џокера „*” " "спречава употреба тог алгоритма, у именима је дозвољена употреба џокера „*” "
"(примери: „*”, „pbkdf2*”, „*,!plain”)" "(примери: „*”, „pbkdf2*”, „*,!plain”)"
#, fuzzy
#| msgid ""
#| "number of iterations asked to the client in weechat protocol when a "
#| "hashed password with algorithm PBKDF2 is used for authentication; more "
#| "iterations is better in term of security but is slower to compute; this "
#| "number should not be too high if your CPU is slow"
msgid "" msgid ""
"number of iterations asked to the client in weechat protocol when a hashed " "number of iterations asked to the client in \"api\" and \"weechat\" "
"password with algorithm PBKDF2 is used for authentication; more iterations " "protocols when a hashed password with algorithm PBKDF2 is used for "
"is better in term of security but is slower to compute; this number should " "authentication; more iterations is better in term of security but is slower "
"not be too high if your CPU is slow" "to compute; this number should not be too high if your CPU is slow"
msgstr "" msgstr ""
"број итерација који се захтева од клијента у weechat протоколу када се за " "број итерација који се захтева од клијента у weechat протоколу када се за "
"аутентификацију користи лозинка хеширана PBKDF2 алгоритмом ; више итерација " "аутентификацију користи лозинка хеширана PBKDF2 алгоритмом ; више итерација "
@@ -15744,6 +15761,13 @@ msgstr ""
"након, ...; велики број умањује ниво безбедности (препоручене вредности су 0 " "након, ...; велики број умањује ниво безбедности (препоручене вредности су 0 "
"или 1)" "или 1)"
msgid ""
"permissions for the Unix socket, as octal value (see man chmod); it must be "
"a number with 3 digits, each between 0 and 7"
msgstr ""
"дозволе за Unix сокет, као октална вредност (погледајте man chmod); мора да "
"буде број од 3 цифре, свака између 0 и 7"
msgid "" msgid ""
"POSIX extended regular expression with origins allowed in websockets (case-" "POSIX extended regular expression with origins allowed in websockets (case-"
"insensitive, use \"(?-i)\" at beginning to make it case-sensitive), example: " "insensitive, use \"(?-i)\" at beginning to make it case-sensitive), example: "
@@ -15869,11 +15893,11 @@ msgstr "број клијената за релеј"
#. TRANSLATORS: please do not translate the status names, they must be used in English #. TRANSLATORS: please do not translate the status names, they must be used in English
msgid "" msgid ""
"protocol,status (both are optional, for each argument \"*\" means all; " "protocol,status (both are optional, for each argument \"*\" means all; "
"protocols: irc, weechat; statuses: connecting, waiting_auth, connected, " "protocols: api, irc, weechat; statuses: connecting, waiting_auth, connected, "
"auth_failed, disconnected)" "auth_failed, disconnected)"
msgstr "" msgstr ""
"протокол,статус (оба нису обавезна, за сваки аргумент „*” значи све; " "протокол,статус (оба нису обавезна, за сваки аргумент „*” значи све; "
"протоколи: irc, weechat; статуси: connecting, waiting_auth, connected, " "протоколи: api, irc, weechat; статуси: connecting, waiting_auth, connected, "
"auth_failed, disconnected)" "auth_failed, disconnected)"
msgid "list of relay clients" msgid "list of relay clients"
@@ -16006,6 +16030,11 @@ msgstr "%s%s: „bind” не може да се изврши на путању
msgid "%s%s: cannot \"bind\" on port %d (%s): error %d %s" msgid "%s%s: cannot \"bind\" on port %d (%s): error %d %s"
msgstr "%s%s: „bind” не може да се изврши на порт %d (%s): грешка %d %s" msgstr "%s%s: „bind” не може да се изврши на порт %d (%s): грешка %d %s"
#, c-format
msgid "%s%s: warning: failed to set permissions on path %s (%s): error %d %s"
msgstr ""
"%s%s: упозорење: не могу да се поставе дозволе на путањи %s (%s): грешка%d %s"
#, c-format #, c-format
msgid "%s%s: cannot \"listen\" on path %s (%s): error %d %s" msgid "%s%s: cannot \"listen\" on path %s (%s): error %d %s"
msgstr "%s%s: „listen” не може да се покрене на путањи %s (%s): грешка%d %s" msgstr "%s%s: „listen” не може да се покрене на путањи %s (%s): грешка%d %s"
@@ -16045,8 +16074,8 @@ msgstr ""
msgid "%s%s: not enough memory for listening on new port" msgid "%s%s: not enough memory for listening on new port"
msgstr "%s%s: нема довољно слободне меморије за слушање на новом порту" msgstr "%s%s: нема довољно слободне меморије за слушање на новом порту"
msgid "Relay WeeChat data to remote application (irc/weechat protocols)" msgid "Relay WeeChat data to remote applications"
msgstr "Релеј WeeChat података удаљеној апликацији (irc/weechat протоколи)" msgstr "Релеј WeeChat података удаљеној апликацији"
msgid "connecting" msgid "connecting"
msgstr "повезивање" msgstr "повезивање"
@@ -16274,11 +16303,16 @@ msgstr "(ништа)"
msgid "Alt+key/input: v=back to list d=jump to diff" msgid "Alt+key/input: v=back to list d=jump to diff"
msgstr "Alt+тастер/унос: v=назад на листу d=скок на diff" msgstr "Alt+тастер/унос: v=назад на листу d=скок на diff"
#, c-format #, fuzzy, c-format
#| msgid ""
#| "%d/%d scripts (filter: %s) | Sort: %s | Alt+key/input: i=install, "
#| "r=remove, l=load, L=reload, u=unload, A=autoload, h=(un)hold, v=view "
#| "script | Input: q=close, $=refresh, s:x,y=sort, words=filter, *=reset "
#| "filter | Mouse: left=select, right=install/remove"
msgid "" msgid ""
"%d/%d scripts (filter: %s) | Sort: %s | Alt+key/input: i=install, r=remove, " "%d/%d scripts | Filter: %s | Sort: %s | Alt+key/input: i=install, r=remove, "
"l=load, L=reload, u=unload, A=autoload, h=(un)hold, v=view script | Input: " "l=load, L=reload, u=unload, A=autoload, h=(un)hold, v=view script | Input: "
"q=close, $=refresh, s:x,y=sort, words=filter, *=reset filter | Mouse: " "$=refresh, s:x,y=sort, words=filter, *=reset filter, q=close buffer | Mouse: "
"left=select, right=install/remove" "left=select, right=install/remove"
msgstr "" msgstr ""
"%d/%d скрипти (филтер: %s) | Сортирање: %s | Alt+тастер/унос: i=инсталација, " "%d/%d скрипти (филтер: %s) | Сортирање: %s | Alt+тастер/унос: i=инсталација, "
@@ -16661,6 +16695,11 @@ msgstr "1 ако је скрипта учитана"
msgid "script name with extension" msgid "script name with extension"
msgstr "име скрипте са екстензијом" msgstr "име скрипте са екстензијом"
#, fuzzy
#| msgid "comma separated list of file name extensions for plugins"
msgid "comma-separated list of plugin:extension with supported languages"
msgstr "листа екстензија имена фајлова за додатке раздвојених запетама"
msgid "script name with extension (wildcard \"*\" is allowed) (optional)" msgid "script name with extension (wildcard \"*\" is allowed) (optional)"
msgstr "име скрипте са екстензијом (дозвољен је џокер „*”) (није обавезно)" msgstr "име скрипте са екстензијом (дозвољен је џокер „*”) (није обавезно)"
@@ -17701,6 +17740,9 @@ msgid ""
"text to display before the nicks in the bar item \"typing\"; if set, it is " "text to display before the nicks in the bar item \"typing\"; if set, it is "
"used instead of the translated string \"Typing: \" which is used by default" "used instead of the translated string \"Typing: \" which is used by default"
msgstr "" msgstr ""
"текст који се приказује испред надимака у ставци траке „typing”; ако је "
"постављен, употребиће се уместо преведеног стринга „Typing: ”, који се "
"подразумевано користи"
msgid "Typing status of users" msgid "Typing status of users"
msgstr "Статус куцања корисника" msgstr "Статус куцања корисника"
@@ -17834,17 +17876,14 @@ msgstr "величина блока за слање пакета, у бајто
msgid "does not wait for ACK when sending file" msgid "does not wait for ACK when sending file"
msgstr "не чека се на ACK када се шаље фајл" msgstr "не чека се на ACK када се шаље фајл"
#, fuzzy
#| msgid ""
#| "IP or DNS address used for sending and passively receiving files/chats "
#| "(if empty, local interface IP is used)"
msgid "" msgid ""
"IP or DNS address used for sending and passively receiving files/chats; if " "IP or DNS address used for sending and passively receiving files/chats; if "
"empty, local interface IP is used (note: content is evaluated, see /help " "empty, local interface IP is used (note: content is evaluated, see /help "
"eval)" "eval)"
msgstr "" msgstr ""
"IP или DNS адреса која се користи за слање и пасивно примање фајлова/" "IP или DNS адреса која се користи за слање и пасивно примање фајлова/"
"разговора (ако је празно, користи се IP локалног интерфејса)" "разговора; ако је празно, користи се IP локалног интерфејса (напомена: "
"садржај сер израчунава, погледајте /help eval)"
msgid "" msgid ""
"restricts outgoing files/chats and incoming/passive files to use only ports " "restricts outgoing files/chats and incoming/passive files to use only ports "
+168 -164
View File
@@ -23,10 +23,10 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: WeeChat\n" "Project-Id-Version: WeeChat\n"
"Report-Msgid-Bugs-To: flashcode@flashtux.org\n" "Report-Msgid-Bugs-To: flashcode@flashtux.org\n"
"POT-Creation-Date: 2026-03-21 17:24+0100\n" "POT-Creation-Date: 2026-06-08 22:23+0200\n"
"PO-Revision-Date: 2026-03-24 23:00+0100\n" "PO-Revision-Date: 2026-05-30 14:02+0200\n"
"Last-Translator: Emir SARI <emir_sari@icloud.com>\n" "Last-Translator: Emir SARI <emir_sari@icloud.com>\n"
"Language-Team: weechat-dev <weechat-dev@nongnu.org>\n" "Language-Team: Turkish <weechat-dev@nongnu.org>\n"
"Language: tr\n" "Language: tr\n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
@@ -85,8 +85,9 @@ msgstr "-P, --plugins <eklenti>"
#. TRANSLATORS: command line option "-P", "--plugins <plugins>" #. TRANSLATORS: command line option "-P", "--plugins <plugins>"
msgid "load only these plugins at startup (see /help weechat.plugin.autoload)" msgid "load only these plugins at startup (see /help weechat.plugin.autoload)"
msgstr "başlangıçta yalnızca bu üç eklentiyi yükle " msgstr ""
"(bkz. /help weechat.plugin.autoload)" "başlangıçta yalnızca bu üç eklentiyi yükle (bkz. /help "
"weechat.plugin.autoload)"
#. TRANSLATORS: only "<cmd>" may be translated (please keep it short) #. TRANSLATORS: only "<cmd>" may be translated (please keep it short)
msgid "-r, --run-command <cmd>" msgid "-r, --run-command <cmd>"
@@ -162,10 +163,10 @@ msgstr "gcrypt başlat/sonlandır devre dışı bırak"
#, c-format #, c-format
msgid "" msgid ""
"WeeChat %s Copyright %s, compiled on %s %s\n" "WeeChat %s Copyright %s, compiled on %s %s\n"
"Developed by Sébastien Helleu <flashcode@flashtux.org> - %s" "Developed by %s <%s> - %s"
msgstr "" msgstr ""
"WeeChat %s Telif hakkı %s, %s %s tarihinde derlendi\n" "WeeChat %s Telif hakkı %s, %s %s tarihinde derlendi\n"
"Geliştirici: Sébastien Helleu <flashcode@flashtux.org> - %s" "Geliştirici: %s <%s> - %s"
msgid "Usage:" msgid "Usage:"
msgstr "Kullanım:" msgstr "Kullanım:"
@@ -1128,6 +1129,21 @@ msgid ""
msgstr "" msgstr ""
"ileti: Uzakta durumu iletisi (eğer bir ileti verilmezse durum kaldırılır)" "ileti: Uzakta durumu iletisi (eğer bir ileti verilmezse durum kaldırılır)"
msgid ""
"By default the away status is displayed only locally by the irc plugin (see /"
"help irc.look.display_away)."
msgstr ""
#, fuzzy
#| msgid ""
#| " - ${color:name}: the color (see \"Plugin API reference\", function "
#| "\"color\")"
msgid ""
"This command can be caught by other plugins and scripts (see \"Plugin API "
"reference\", function \"hook_command_run\")."
msgstr ""
" - ${color:ad}: Renk adı (bkz. \"Eklenti API başvurusu\", \"color\" işlevi)"
msgid "manage bars" msgid "manage bars"
msgstr "çubukları yönet" msgstr "çubukları yönet"
@@ -1771,8 +1787,7 @@ msgid ""
"[-n|-s] [-e] [-d] <expression> || [-n] [-d [-d]] -c <expression1> <operator> " "[-n|-s] [-e] [-d] <expression> || [-n] [-d [-d]] -c <expression1> <operator> "
"<expression2>" "<expression2>"
msgstr "" msgstr ""
"[-n|-s] [-e] [-d] <ifade> || [-n] [-d [-d]] -c <ifade1> <işleç> " "[-n|-s] [-e] [-d] <ifade> || [-n] [-d [-d]] -c <ifade1> <işleç> <ifade2>"
"<ifade2>"
msgid "raw[-n]: display result without sending it to buffer (debug mode)" msgid "raw[-n]: display result without sending it to buffer (debug mode)"
msgstr "raw[-n]: Arabelleğe göndermeden sonucu görüntüle (hata ayıklama kipi)" msgstr "raw[-n]: Arabelleğe göndermeden sonucu görüntüle (hata ayıklama kipi)"
@@ -2396,7 +2411,8 @@ msgstr "-list|-listfull [<eklenti>...] || <komut> || <seçenek>"
msgid "" msgid ""
"raw[-list]: list commands, by plugin (without argument, this list is " "raw[-list]: list commands, by plugin (without argument, this list is "
"displayed)" "displayed)"
msgstr "raw[-list]: Eklentiye göre komutları listele (argümansız bu liste " msgstr ""
"raw[-list]: Eklentiye göre komutları listele (argümansız bu liste "
"görüntülenir)" "görüntülenir)"
msgid "raw[-listfull]: list commands with description, by plugin" msgid "raw[-listfull]: list commands with description, by plugin"
@@ -2450,8 +2466,8 @@ msgid ""
"clear only highest level in hotlist, or level mask: integer which is a " "clear only highest level in hotlist, or level mask: integer which is a "
"combination of 1=join/part, 2=message, 4=private, 8=highlight" "combination of 1=join/part, 2=message, 4=private, 8=highlight"
msgstr "" msgstr ""
"düzey: Sıcak listede yalnızca en düşük düzeyi temizlemek için \"lowest\", " "düzey: Sıcak listede yalnızca en düşük düzeyi temizlemek için \"lowest\", en "
"en yüksek düzey için \"highest\" veya düzey maskesi olarak tamsayı; şunların " "yüksek düzey için \"highest\" veya düzey maskesi olarak tamsayı; şunların "
"bir kombinasyonudur: 1=katıl/ayrıl, 2=ileti, 4=özel, 8=vurgula" "bir kombinasyonudur: 1=katıl/ayrıl, 2=ileti, 4=özel, 8=vurgula"
msgid "raw[remove]: remove current buffer from hotlist" msgid "raw[remove]: remove current buffer from hotlist"
@@ -2542,13 +2558,11 @@ msgstr "> raw[delete_next_word]: Sonraki sözcüğü sil"
msgid "" msgid ""
"> raw[delete_beginning_of_line]: delete from beginning of line until cursor" "> raw[delete_beginning_of_line]: delete from beginning of line until cursor"
msgstr "" msgstr "> raw[delete_beginning_of_line]: Satırın başından imlece kadar sil"
"> raw[delete_beginning_of_line]: Satırın başından imlece kadar sil"
msgid "" msgid ""
"> raw[delete_beginning_of_input]: delete from beginning of input until cursor" "> raw[delete_beginning_of_input]: delete from beginning of input until cursor"
msgstr "" msgstr "> raw[delete_beginning_of_input]: Girişin başından imlece kadar sil"
"> raw[delete_beginning_of_input]: Girişin başından imlece kadar sil"
msgid "> raw[delete_end_of_line]: delete from cursor until end of line" msgid "> raw[delete_end_of_line]: delete from cursor until end of line"
msgstr "> raw[delete_end_of_line]: İmleçten satırın sonuna kadar sil" msgstr "> raw[delete_end_of_line]: İmleçten satırın sonuna kadar sil"
@@ -2654,8 +2668,8 @@ msgid ""
"> raw[insert]: insert text in command line (escaped chars are allowed, see /" "> raw[insert]: insert text in command line (escaped chars are allowed, see /"
"help print)" "help print)"
msgstr "" msgstr ""
"> raw[insert]: Komut satırına metin gir (kaçırılan karakterlere izin verilir; " "> raw[insert]: Komut satırına metin gir (kaçırılan karakterlere izin "
"bkz. /help print)" "verilir; bkz. /help print)"
msgid "> raw[send]: send text to the buffer" msgid "> raw[send]: send text to the buffer"
msgstr "> raw [send]: Arabelleğe metin gönder" msgstr "> raw [send]: Arabelleğe metin gönder"
@@ -2713,7 +2727,8 @@ msgstr ""
msgid "" msgid ""
"raw[recreate]: set input with the command used to edit the custom bar item" "raw[recreate]: set input with the command used to edit the custom bar item"
msgstr "" msgstr ""
"raw[recreate]: Özel çubuk ögesini düzenlemede kullanılan komutla girişi ayarla" "raw[recreate]: Özel çubuk ögesini düzenlemede kullanılan komutla girişi "
"ayarla"
msgid "raw[del]: delete custom bar items" msgid "raw[del]: delete custom bar items"
msgstr "raw[del]: Özel çubuk ögesini sil" msgstr "raw[del]: Özel çubuk ögesini sil"
@@ -3308,16 +3323,12 @@ msgstr ""
msgid "raw[set]: set a value for a proxy property" msgid "raw[set]: set a value for a proxy property"
msgstr "" msgstr ""
#, fuzzy
#| msgid ""
#| "option: option to change (for options list, look at /set weechat.bar."
#| "<barname>.*)"
msgid "" msgid ""
"option: option to change (for options list, look at /set weechat.proxy." "option: option to change (for options list, look at /set weechat.proxy."
"<proxy_name>.*)" "<proxy_name>.*)"
msgstr "" msgstr ""
"seçenek: değiştirilecek seçenek (seçenekler listesi için /set " "seçenek: değiştirilecek seçenek (seçenekler listesi için /set weechat.proxy."
"weechat.bar<çubukadı>.* komutunu çalıştırın)" "<vekil_adı>.* bölümüne bakın)"
msgid " add a http proxy, running on local host, port 8888:" msgid " add a http proxy, running on local host, port 8888:"
msgstr "" msgstr ""
@@ -4194,18 +4205,14 @@ msgstr ""
msgid "names of filters" msgid "names of filters"
msgstr "süzgeçlerin adları" msgstr "süzgeçlerin adları"
#, fuzzy
#| msgid "names of filters"
msgid "names of disabled filters" msgid "names of disabled filters"
msgstr "süzgeçlerin adları" msgstr "devre dışı bırakılmış süzgeçlerin adları"
#, fuzzy
#| msgid "names of filters"
msgid "names of enabled filters" msgid "names of enabled filters"
msgstr "süzgeçlerin adları" msgstr "etkinleştirilmiş süzgeçlerin adları"
msgid "hook types" msgid "hook types"
msgstr "" msgstr "kanca türleri"
msgid "" msgid ""
"commands (weechat and plugins); optional argument: prefix to add before the " "commands (weechat and plugins); optional argument: prefix to add before the "
@@ -6012,12 +6019,10 @@ msgstr "ONULMAZ: Yapılandırma seçenekleri ilklendirilirken hata"
#. TRANSLATORS: "%s %s" after "compiled on" is date and time #. TRANSLATORS: "%s %s" after "compiled on" is date and time
#, c-format #, c-format
msgid "WeeChat %s, compiled on %s %s\n" msgid "WeeChat %s, compiled on %s %s\n"
msgstr "" msgstr "WeeChat %s, derlenme: %s %s\n"
#, fuzzy
#| msgid "(old options?)"
msgid "Build options:\n" msgid "Build options:\n"
msgstr "(eski seçenekler?)" msgstr "Yapı seçenekleri:\n"
msgid "Windows tree:" msgid "Windows tree:"
msgstr "Pencereler ağacı:" msgstr "Pencereler ağacı:"
@@ -6029,12 +6034,10 @@ msgid "Memory usage not available (function \"mallinfo\" not found)"
msgstr "Bellek kullanımı mevcut değil (\"mallinfo\" işlevi bulunamadı)" msgstr "Bellek kullanımı mevcut değil (\"mallinfo\" işlevi bulunamadı)"
msgid "not initialized" msgid "not initialized"
msgstr "" msgstr "ilklendirilmedi"
#, fuzzy
#| msgid "no variable"
msgid "not available" msgid "not available"
msgstr "değişken yok" msgstr "kullanılamıyor"
msgid "TEMPORARY, deleted on exit" msgid "TEMPORARY, deleted on exit"
msgstr "GEÇİCİ, çıkışta silinir" msgstr "GEÇİCİ, çıkışta silinir"
@@ -6143,13 +6146,13 @@ msgid "Constants"
msgstr "Sabitler" msgstr "Sabitler"
msgid "Rank" msgid "Rank"
msgstr "" msgstr "Derece"
msgid "Priority" msgid "Priority"
msgstr "" msgstr "Öncelik"
msgid "File" msgid "File"
msgstr "" msgstr "Dosya"
#, fuzzy #, fuzzy
#| msgid "Constants" #| msgid "Constants"
@@ -6308,10 +6311,8 @@ msgstr ""
"(parolayı atlamak için boşluk düğmesine bir kez basın; ancak bu tüm güvenli " "(parolayı atlamak için boşluk düğmesine bir kez basın; ancak bu tüm güvenli "
"veriyi DEVRE DIŞI bırakacaktır!)" "veriyi DEVRE DIŞI bırakacaktır!)"
#, fuzzy
#| msgid "(press ctrl-C to exit WeeChat now)"
msgid "(press ctrl-c to exit WeeChat now)" msgid "(press ctrl-c to exit WeeChat now)"
msgstr "(WeeChat'ten şimdi çıkmak için ctrl-C düğmesine basın)" msgstr "(WeeChat'ten şimdi çıkmak için ctrl-c yapın)"
msgid "" msgid ""
"To recover your secured data, you can use /secure decrypt (see /help secure)" "To recover your secured data, you can use /secure decrypt (see /help secure)"
@@ -6368,10 +6369,9 @@ msgid ""
"version is too old?)" "version is too old?)"
msgstr "" msgstr ""
#, fuzzy, c-format #, c-format
#| msgid "%sError encrypting data \"%s\" (%d)"
msgid "%sFailed to encrypt data \"%s\" (%d)" msgid "%sFailed to encrypt data \"%s\" (%d)"
msgstr "%s\"%s\" verisi şifrelenirken hata (%d)" msgstr "%s\"%s\" verisi şifrelenemedi (%d)"
msgid "" msgid ""
"cipher used to crypt data (the number after algorithm is the size of the key " "cipher used to crypt data (the number after algorithm is the size of the key "
@@ -6451,25 +6451,19 @@ msgid "%sUnknown resource limit \"%s\" (see /help weechat.startup.sys_rlimit)"
msgstr "" msgstr ""
"%sBilinmeyen kaynak limiti \"%s\" (bkz. /help weechat.startup.sys_rlimit)" "%sBilinmeyen kaynak limiti \"%s\" (bkz. /help weechat.startup.sys_rlimit)"
#, fuzzy
#| msgid "Memory usage (see \"man mallinfo\" for help):"
msgid "Resource limits (see \"man getrlimit\" for help):" msgid "Resource limits (see \"man getrlimit\" for help):"
msgstr "Bellek kullanımı (yardım için bkz. \"man mallinfo\"):" msgstr "Özkaynak sınırları (yardım için bkz. \"man getrlimit\"):"
#, fuzzy, c-format #, c-format
#| msgid "%sUnable to set resource limit \"%s\" to %s: error %d %s"
msgid "%sUnable to get resource limit \"%s\": error %d %s" msgid "%sUnable to get resource limit \"%s\": error %d %s"
msgstr "%sKaynak limiti \"%s\", %s olarak ayarlanamadı: Hata %d %s" msgstr "%sÖzkaynak sınırı \"%s\" alınamıyor: Hata %d %s"
#, fuzzy, c-format #, c-format
#| msgid "%s: error: dictionary \"%s\" is not available on your system"
msgid "System function \"%s\" is not available" msgid "System function \"%s\" is not available"
msgstr "%s: Hata: \"%s\" sözlüğü sisteminizde yok" msgstr "Sistem işlevi \"%s\" kullanılabilir değil"
#, fuzzy
#| msgid "Memory usage (see \"man mallinfo\" for help):"
msgid "Resource usage (see \"man getrusage\" for help):" msgid "Resource usage (see \"man getrusage\" for help):"
msgstr "Bellek kullanımı (yardım için bkz. \"man mallinfo\"):" msgstr "Özkaynak kullanımı (yardım için bkz. \"man getrusage\"):"
#, c-format #, c-format
msgid "%sError upgrading WeeChat with file \"%s\":" msgid "%sError upgrading WeeChat with file \"%s\":"
@@ -6550,95 +6544,84 @@ msgid "Upgrade done (%.02fs)"
msgstr "Yükseltme bitti (%.02fs)" msgstr "Yükseltme bitti (%.02fs)"
msgid "invalid URL" msgid "invalid URL"
msgstr "" msgstr "geçersiz URL"
msgid "not enough memory" msgid "not enough memory"
msgstr "yetersiz bellek" msgstr "yetersiz bellek"
#, fuzzy, c-format #, c-format
#| msgid "%sFilter \"%s\" not found"
msgid "file \"%s\" not found" msgid "file \"%s\" not found"
msgstr "%s\"%s\" süzgeci bulunamadı" msgstr "\"%s\" dosyası bulunamadı"
#, fuzzy, c-format #, c-format
#| msgid "%sCannot create file \"%s\""
msgid "cannot write file \"%s\"" msgid "cannot write file \"%s\""
msgstr "%s\"%s\" dosyası oluşturulamıyor" msgstr "\"%s\" dosyası yazılamıyor"
#, fuzzy
#| msgid "fork error"
msgid "transfer error" msgid "transfer error"
msgstr "çatal hatası" msgstr "aktarım hatası"
#, c-format #, c-format
msgid "curl error %d (%s) (URL: \"%s\")\n" msgid "curl error %d (%s) (URL: \"%s\")\n"
msgstr "curl hatası %d (%s) (URL: \"%s\")\n" msgstr "curl hatası %d (%s) (URL: \"%s\")\n"
#, fuzzy, c-format #, c-format
#| msgid "curl error %d (%s) (URL: \"%s\")\n"
msgid "transfer stopped (URL: \"%s\")\n" msgid "transfer stopped (URL: \"%s\")\n"
msgstr "curl hatası %d (%s) (URL: \"%s\")\n" msgstr "aktarım durduruldu (URL: \"%s\")\n"
#, fuzzy, c-format #, c-format
#| msgid "End of command '%s', timeout reached (%.1fs)"
msgid "transfer timeout reached (%.3fs) (URL: \"%s\")\n" msgid "transfer timeout reached (%.3fs) (URL: \"%s\")\n"
msgstr "'%s' komutu sonu, zaman aşımına ulaşıldı (%.1fs)" msgstr "aktarım zaman aşımına ulaşıldı (%.3fs) (URL: \"%s\")\n"
#, c-format #, c-format
msgid "%sAnother command \"%s\" already exists for plugin \"%s\"" msgid "%sAnother command \"%s\" already exists for plugin \"%s\""
msgstr "%sŞu eklenti için başka bir komut (\"%s\") halihazırda var: \"%s\"" msgstr "%sŞu eklenti için başka bir komut (\"%s\") halihazırda var: \"%s\""
#, fuzzy, c-format #, c-format
#| msgid "%sUnknown command \"%s\" (type /help for help)"
msgid "" msgid ""
"%sUnknown command \"%s\" (commands are case-sensitive, type /help for help), " "%sUnknown command \"%s\" (commands are case-sensitive, type /help for help), "
"commands with similar name: %s" "commands with similar name: %s"
msgstr "%s Bilinmeyen komut \"%s\" (yardım için /help yazın)" msgstr ""
"%sBilinmeyen komut \"%s\" (komutlar BÜYÜK/küçük harf duyarlıdır; yardım "
"için /help yazın); benzer adlı komutlar: %s"
#, fuzzy, c-format #, c-format
#| msgid "%sUnknown command \"%s\" (type /help for help)"
msgid "" msgid ""
"%sUnknown command \"%s\" (type /help for help), commands with similar name: " "%sUnknown command \"%s\" (type /help for help), commands with similar name: "
"%s" "%s"
msgstr "%s Bilinmeyen komut \"%s\" (yardım için /help yazın)" msgstr ""
"%sBilinmeyen komut \"%s\" (yardım için /help yazın); benzer adlı komutlar: %s"
#, c-format #, c-format
msgid "%sBad file descriptor (%d) used in hook_fd" msgid "%sBad file descriptor (%d) used in hook_fd"
msgstr "%sHatalı dosya açıklayıcısı (%d) hook_fd içinde kullanılmış" msgstr "%sHatalı dosya açıklayıcısı (%d) hook_fd içinde kullanılmış"
#, fuzzy, c-format #, c-format
#| msgid "End of command '%s', timeout reached (%.1fs)"
msgid "End of command '%s', timeout reached (%.3fs)" msgid "End of command '%s', timeout reached (%.3fs)"
msgstr "'%s' komutu sonu, zaman aşımına ulaşıldı (%.1fs)" msgstr "\"%s\" komutunun sonu; zaman aşımına ulaşıldı (%.3fs)"
#, c-format #, c-format
msgid "System clock skew detected (%+ld seconds), reinitializing all timers" msgid "System clock skew detected (%+ld seconds), reinitializing all timers"
msgstr "" msgstr ""
"Sistem saati hatalı (%+ld saniye), tüm zamanlayıcılar yeniden başlatılıyor" "Sistem saati hatalı (%+ld saniye), tüm zamanlayıcılar yeniden başlatılıyor"
#, fuzzy, c-format #, c-format
#| msgid "curl error %d (%s) (URL: \"%s\")\n"
msgid "%sURL transfer error: %s (URL: \"%s\")" msgid "%sURL transfer error: %s (URL: \"%s\")"
msgstr "curl hatası %d (%s) (URL: \"%s\")\n" msgstr "%sURL aktarım hatası: %s (URL: \"%s\")"
#, fuzzy, c-format #, c-format
#| msgid "End of command '%s', timeout reached (%.1fs)"
msgid "End of URL transfer '%s', timeout reached (%.3fs)" msgid "End of URL transfer '%s', timeout reached (%.3fs)"
msgstr "'%s' komutu sonu, zaman aşımına ulaşıldı (%.1fs)" msgstr "\"%s\" URL aktarımının sonu; zaman aşımına ulaşıldı (%.3fs)"
#, c-format #, c-format
msgid "%sError running thread in hook_url: %s (URL: \"%s\")" msgid "%sError running thread in hook_url: %s (URL: \"%s\")"
msgstr "" msgstr "%shook_url içinde iş parçacığı çalıştırılırken hata: %s (URL: \"%s\")"
#, fuzzy, c-format #, c-format
#| msgid "End of command '%s', timeout reached (%.1fs)"
msgid "End of URL transfer '%s', transfer stopped" msgid "End of URL transfer '%s', transfer stopped"
msgstr "'%s' komutu sonu, zaman aşımına ulaşıldı (%.1fs)" msgstr "\"%s\" URL aktarımının sonu; aktarım durduruldu"
#, fuzzy
#| msgid "WeeChat is running in headless mode (Ctrl-C to quit)."
msgid "WeeChat is running in headless mode (ctrl-c to quit)." msgid "WeeChat is running in headless mode (ctrl-c to quit)."
msgstr "WeeChat başsız kipte çalışıyor (çıkmak için Ctrl-C)." msgstr "WeeChat başsız kipte çalışıyor (çıkmak için ctrl-c yapın)."
msgid "" msgid ""
"Welcome to WeeChat!\n" "Welcome to WeeChat!\n"
@@ -6737,7 +6720,7 @@ msgid "Nick colors:"
msgstr "Takma ad renkleri:" msgstr "Takma ad renkleri:"
msgid "Syntax highlighting colors in evaluated strings:" msgid "Syntax highlighting colors in evaluated strings:"
msgstr "" msgstr "Değerlendirilen dizilerdeki sözdizim vurgulama renkleri:"
msgid "Color aliases:" msgid "Color aliases:"
msgstr "Renk armaları:" msgstr "Renk armaları:"
@@ -6781,35 +6764,30 @@ msgstr "çubuk ögesinin içeriği (değerlendirilir, bkz. /help eval)"
#, c-format #, c-format
msgid "debug: long callback: bar: %s, item: %s, plugin: %s, time elapsed: %s" msgid "debug: long callback: bar: %s, item: %s, plugin: %s, time elapsed: %s"
msgstr "" msgstr ""
"hata ayıkla: uzun geri çağrı: çubuk: %s, öge: %s, eklenti: %s, geçen süre: %s"
#, fuzzy, c-format #, c-format
#| msgid "%sPaste %d line? [ctrl-Y] Yes [ctrl-N] No"
#| msgid_plural "%sPaste %d lines? [ctrl-Y] Yes [ctrl-N] No"
msgid "%sPaste %d line? [ctrl-y] Yes [ctrl-n] No" msgid "%sPaste %d line? [ctrl-y] Yes [ctrl-n] No"
msgid_plural "%sPaste %d lines? [ctrl-y] Yes [ctrl-n] No" msgid_plural "%sPaste %d lines? [ctrl-y] Yes [ctrl-n] No"
msgstr[0] "%s%d satır yapıştırılsın mı? [ctrl-Y] Evet [ctrl-N] Hayır" msgstr[0] "%s%d satır yapıştırılsın mı? [ctrl-y] Evet [ctrl-n] Hayır"
msgstr[1] "%s%d satır yapıştırılsın mı? [ctrl-Y] Evet [ctrl-N] Hayır" msgstr[1] "%s%d satır yapıştırılsın mı? [ctrl-y] Evet [ctrl-n] Hayır"
#. TRANSLATORS: search in "local" history #. TRANSLATORS: search in "local" history
msgid "local" msgid "local"
msgstr "" msgstr "yerel"
#. TRANSLATORS: search in "global" history #. TRANSLATORS: search in "global" history
msgid "global" msgid "global"
msgstr "" msgstr "global"
#, fuzzy
#| msgid "Search"
msgid "Search lines" msgid "Search lines"
msgstr "Arama" msgstr "Satırlar ara"
#, fuzzy
#| msgid "default command:"
msgid "Search command" msgid "Search command"
msgstr "öntanımlı komut:" msgstr "Arama komutu"
msgid "keyboard and mouse debug ('q' to quit debug mode)" msgid "keyboard and mouse debug ('q' to quit debug mode)"
msgstr "" msgstr "klavye ve fare hata ayıklaması (bu kipten çıkmak için \"q\"ya basın)"
#, c-format #, c-format
msgid "%s-MORE(%d)-" msgid "%s-MORE(%d)-"
@@ -6968,10 +6946,9 @@ msgstr ""
msgid "New key binding (context \"%s\"): %s%s => %s%s" msgid "New key binding (context \"%s\"): %s%s => %s%s"
msgstr "Yeni düğme bağıntısı (bağlam: \"%s\"): %s%s => %s%s" msgstr "Yeni düğme bağıntısı (bağlam: \"%s\"): %s%s => %s%s"
#, fuzzy, c-format #, c-format
#| msgid "%sUnable to bind key \"%s\""
msgid "%sUnable to bind key \"%s\" in context \"%s\" (see /help key)" msgid "%sUnable to bind key \"%s\" in context \"%s\" (see /help key)"
msgstr "%s\"%s\" düğmesi bağlanamıyor" msgstr "%s\"%s\" düğmesi, \"%s\" bağlamında bağıntılanamıyor (bkz. /help key)"
#, c-format #, c-format
msgid "" msgid ""
@@ -6988,6 +6965,8 @@ msgid ""
"%sWarning: key \"%s\" seems either a raw code or invalid, it may not work " "%sWarning: key \"%s\" seems either a raw code or invalid, it may not work "
"(see /help key)" "(see /help key)"
msgstr "" msgstr ""
"%sUyarı: \"%s\" düğmesi ya bir ham kod ya da geçersiz, çalışmayabilir (bkz. /"
"help key)"
#, c-format #, c-format
msgid "Key \"%s\" unbound (context: \"%s\")" msgid "Key \"%s\" unbound (context: \"%s\")"
@@ -7008,16 +6987,14 @@ msgstr "hsignal gönderiliyor: \"%s\""
msgid "Executing command: \"%s\" on buffer \"%s\"" msgid "Executing command: \"%s\" on buffer \"%s\""
msgstr "Komut yürütülüyor: \"%s\", \"%s\" arabelleğinde" msgstr "Komut yürütülüyor: \"%s\", \"%s\" arabelleğinde"
#, fuzzy
#| msgid "list of key bindings"
msgid "no key binding" msgid "no key binding"
msgstr "düğme bağıntılarının listesi" msgstr "düğme bağıntısı yok"
msgid "debug:" msgid "debug:"
msgstr "" msgstr "hata ayıkla:"
msgid "mouse" msgid "mouse"
msgstr "" msgstr "fare"
#, c-format #, c-format
msgid "Debug enabled for mouse (%s)" msgid "Debug enabled for mouse (%s)"
@@ -7030,15 +7007,13 @@ msgstr "Fare için hata ayıklaması devre dışı"
msgid "%s%s: error creating alias \"%s\" => \"%s\"" msgid "%s%s: error creating alias \"%s\" => \"%s\""
msgstr "%s%s: \"%s\" => \"%s\" arması oluşturulurken hata" msgstr "%s%s: \"%s\" => \"%s\" arması oluşturulurken hata"
#, fuzzy, c-format #, c-format
#| msgid "Alias \"%s\" => \"%s\" created"
msgid "Alias updated: \"%s\" => \"%s\"" msgid "Alias updated: \"%s\" => \"%s\""
msgstr "\"%s\" => \"%s\" arması oluşturuldu" msgstr "Arma güncellendi: \"%s\" => \"%s\""
#, fuzzy, c-format #, c-format
#| msgid "Alias \"%s\" => \"%s\" created"
msgid "Alias created: \"%s\" => \"%s\"" msgid "Alias created: \"%s\" => \"%s\""
msgstr "\"%s\" => \"%s\" arması oluşturuldu" msgstr "Arma oluşturuldu: \"%s\" => \"%s\""
#, c-format #, c-format
msgid "Aliases with \"%s\":" msgid "Aliases with \"%s\":"
@@ -7082,9 +7057,9 @@ msgid ""
"addcompletion|addreplacecompletion <completion> <name> [<command>[;" "addcompletion|addreplacecompletion <completion> <name> [<command>[;"
"<command>...]] || del <name>|<mask>... || rename <name> <new_name> || missing" "<command>...]] || del <name>|<mask>... || rename <name> <new_name> || missing"
msgstr "" msgstr ""
"list [<ad>] || add|addreplace <ad> [<komut>[;<komut>...]] || " "list [<ad>] || add|addreplace <ad> [<komut>[;<komut>...]] || addcompletion|"
"addcompletion|addreplacecompletion <tamamlama> <ad> [<komut>[;" "addreplacecompletion <tamamlama> <ad> [<komut>[;<komut>...]] || del <ad>|"
"<komut>...]] || del <ad>|<maske>... || rename <ad> <yeni_ad> || missing" "<maske>... || rename <ad> <yeni_ad> || missing"
msgid "raw[list]: list aliases (without argument, this list is displayed)" msgid "raw[list]: list aliases (without argument, this list is displayed)"
msgstr "" msgstr ""
@@ -7305,16 +7280,12 @@ msgid ""
" - ${number_displayed}: \"1\" if the number is displayed, otherwise \"0\"" " - ${number_displayed}: \"1\" if the number is displayed, otherwise \"0\""
msgstr "" msgstr ""
#, fuzzy
#| msgid ""
#| "string displayed to indent channel and private buffers (note: content is "
#| "evaluated, see /help buflist)"
msgid "" msgid ""
" - ${indent}: indentation for name (channel, private and list buffers are " " - ${indent}: indentation for name (channel, private and list buffers are "
"indented) (evaluation of option buflist.format.indent)" "indented) (evaluation of option buflist.format.indent)"
msgstr "" msgstr ""
"kanal ve özel arabellekleri girintilendirmek için görüntülenen dizi (not: " " - ${indent}: Ad için girintileme (kanal, özel ve liste arabellekleri "
"içerik değerlendirilir, bkz. /help buflist)" "girintilenir) (buflist.format.indent seçeneğinin değerlendirmesi)"
msgid "" msgid ""
" - ${format_nick_prefix}: colored nick prefix for a channel (evaluation " " - ${format_nick_prefix}: colored nick prefix for a channel (evaluation "
@@ -12649,8 +12620,8 @@ msgstr "sunucu adı"
msgid "get nick from IRC host" msgid "get nick from IRC host"
msgstr "IRC makinesinden takma adı al" msgstr "IRC makinesinden takma adı al"
msgid "IRC host (like `:nick!name@server.com`)" msgid "IRC host (like `:nick!name@server`)"
msgstr "IRC makinesi (örneğin: `:nick!name@server.com`)" msgstr "IRC makinesi (örneğin: `:nick!name@server`)"
msgid "" msgid ""
"get nick color code (*deprecated* since version 1.5, replaced by " "get nick color code (*deprecated* since version 1.5, replaced by "
@@ -12886,8 +12857,8 @@ msgstr "%s%s: Bu arabellek bir kanal değil!"
#, c-format #, c-format
msgid "" msgid ""
"%d channels (total: %d) | Filter: %s | Sort: %s | Key(input): ctrl+j=join " "%d channels (total: %d) | Filter: %s | Sort: %s | Keys: ctrl+j=join channel "
"channel, ($)=refresh, (q)=close buffer" "| Input: $=refresh, s:x,y=sort, words=filter, *=reset filter, q=close buffer"
msgstr "" msgstr ""
msgid "Empty list of channels, try \"$\" to refresh list" msgid "Empty list of channels, try \"$\" to refresh list"
@@ -14116,7 +14087,7 @@ msgid ""
"and the current file is renamed with extension .1; an integer number with a " "and the current file is renamed with extension .1; an integer number with a "
"suffix is allowed: b = bytes (default if no unit given), k = kilobytes, m = " "suffix is allowed: b = bytes (default if no unit given), k = kilobytes, m = "
"megabytes, g = gigabytes, t = terabytes; example: \"2g\" causes a rotation " "megabytes, g = gigabytes, t = terabytes; example: \"2g\" causes a rotation "
"if the file size is > 2,000,000,000 bytes; if set to \"0\", no rotation is " "if the file size is greater than 2 GB; if set to \"0\", no rotation is "
"performed (unlimited log size); WARNING: before changing this option, you " "performed (unlimited log size); WARNING: before changing this option, you "
"should first set the compression type via option " "should first set the compression type via option "
"logger.file.rotation_compression_type" "logger.file.rotation_compression_type"
@@ -16072,13 +16043,21 @@ msgstr ""
"şifreye gerek yok anlamına gelir, relay.network.allow_empty_password " "şifreye gerek yok anlamına gelir, relay.network.allow_empty_password "
"seçeneğine bakın) (not: içerik değerlendirilir, bkz. /help eval)" "seçeneğine bakın) (not: içerik değerlendirilir, bkz. /help eval)"
#, fuzzy
#| msgid ""
#| "comma separated list of hash algorithms used for password authentication "
#| "in weechat protocol, among these values: \"plain\" (password in plain "
#| "text, not hashed), \"sha256\", \"sha512\", \"pbkdf2+sha256\", "
#| "\"pbkdf2+sha512\"), \"*\" means all algorithms, a name beginning with \"!"
#| "\" is a negative value to prevent an algorithm from being used, wildcard "
#| "\"*\" is allowed in names (examples: \"*\", \"pbkdf2*\", \"*,!plain\")"
msgid "" msgid ""
"comma separated list of hash algorithms used for password authentication in " "comma separated list of hash algorithms used for password authentication in "
"weechat protocol, among these values: \"plain\" (password in plain text, not " "\"api\" and \"weechat\" protocols, among these values: \"plain\" (password "
"hashed), \"sha256\", \"sha512\", \"pbkdf2+sha256\", \"pbkdf2+sha512\"), " "in plain text, not hashed), \"sha256\", \"sha512\", \"pbkdf2+sha256\", "
"\"*\" means all algorithms, a name beginning with \"!\" is a negative value " "\"pbkdf2+sha512\"), \"*\" means all algorithms, a name beginning with \"!\" "
"to prevent an algorithm from being used, wildcard \"*\" is allowed in names " "is a negative value to prevent an algorithm from being used, wildcard \"*\" "
"(examples: \"*\", \"pbkdf2*\", \"*,!plain\")" "is allowed in names (examples: \"*\", \"pbkdf2*\", \"*,!plain\")"
msgstr "" msgstr ""
"weechat protokolünde parola doğrulaması yapmak için kullanılan sağlama " "weechat protokolünde parola doğrulaması yapmak için kullanılan sağlama "
"algoritmalarının virgülle ayrılmış listesi: \"plain\" (düz metin parola, " "algoritmalarının virgülle ayrılmış listesi: \"plain\" (düz metin parola, "
@@ -16088,11 +16067,17 @@ msgstr ""
"adlarda \"*\" jokerine izin verilir (örnekler: \"*\", \"pbkdf2\", \"*,!" "adlarda \"*\" jokerine izin verilir (örnekler: \"*\", \"pbkdf2\", \"*,!"
"plain\")" "plain\")"
#, fuzzy
#| msgid ""
#| "number of iterations asked to the client in weechat protocol when a "
#| "hashed password with algorithm PBKDF2 is used for authentication; more "
#| "iterations is better in term of security but is slower to compute; this "
#| "number should not be too high if your CPU is slow"
msgid "" msgid ""
"number of iterations asked to the client in weechat protocol when a hashed " "number of iterations asked to the client in \"api\" and \"weechat\" "
"password with algorithm PBKDF2 is used for authentication; more iterations " "protocols when a hashed password with algorithm PBKDF2 is used for "
"is better in term of security but is slower to compute; this number should " "authentication; more iterations is better in term of security but is slower "
"not be too high if your CPU is slow" "to compute; this number should not be too high if your CPU is slow"
msgstr "" msgstr ""
"PBKDF2 algoritmasını kullanan bir sağlaması yapılmış bir parola kimlik " "PBKDF2 algoritmasını kullanan bir sağlaması yapılmış bir parola kimlik "
"doğrulama için kullanıldığında istemciye sorulan yineleme sayısı; daha fazla " "doğrulama için kullanıldığında istemciye sorulan yineleme sayısı; daha fazla "
@@ -16151,6 +16136,11 @@ msgstr ""
"parola, geçerli parola ve sonrasında iki parola kabul et, ..., yüksek sayı " "parola, geçerli parola ve sonrasında iki parola kabul et, ..., yüksek sayı "
"güvenlik düzeyini düşürür (0 ve 1 önerilir)" "güvenlik düzeyini düşürür (0 ve 1 önerilir)"
msgid ""
"permissions for the Unix socket, as octal value (see man chmod); it must be "
"a number with 3 digits, each between 0 and 7"
msgstr ""
#, fuzzy #, fuzzy
#| msgid "" #| msgid ""
#| "POSIX extended regular expression with origins allowed in websockets " #| "POSIX extended regular expression with origins allowed in websockets "
@@ -16286,11 +16276,11 @@ msgstr "iletim istemci sayısı"
#. TRANSLATORS: please do not translate the status names, they must be used in English #. TRANSLATORS: please do not translate the status names, they must be used in English
msgid "" msgid ""
"protocol,status (both are optional, for each argument \"*\" means all; " "protocol,status (both are optional, for each argument \"*\" means all; "
"protocols: irc, weechat; statuses: connecting, waiting_auth, connected, " "protocols: api, irc, weechat; statuses: connecting, waiting_auth, connected, "
"auth_failed, disconnected)" "auth_failed, disconnected)"
msgstr "" msgstr ""
"protocol,status (ikisi de isteğe bağlıdır, her bir argüman için \"*\" tümü " "protocol,status (ikisi de isteğe bağlıdır, her bir argüman için \"*\" tümü "
"anlamına gelir; protokoller: irc, weechat; durumlar: connecting, " "anlamına gelir; protokoller: api, irc, weechat; durumlar: connecting, "
"waiting_auth, connected, auth_failed, disconnected)" "waiting_auth, connected, auth_failed, disconnected)"
msgid "list of relay clients" msgid "list of relay clients"
@@ -16433,6 +16423,11 @@ msgstr "%s%s: %s yolunda \"bağlama\" yapılamıyor (%s): hata %d %s"
msgid "%s%s: cannot \"bind\" on port %d (%s): error %d %s" msgid "%s%s: cannot \"bind\" on port %d (%s): error %d %s"
msgstr "%s%s: %d kapısında \"bağlama\" yapılamıyor (%s): hata %d %s" msgstr "%s%s: %d kapısında \"bağlama\" yapılamıyor (%s): hata %d %s"
#, fuzzy, c-format
#| msgid "%s%s: cannot \"listen\" on path %s (%s): error %d %s"
msgid "%s%s: warning: failed to set permissions on path %s (%s): error %d %s"
msgstr "%s%s: %s yolunda \"dinleme\" yapılamıyor (%s): error %d %s"
#, c-format #, c-format
msgid "%s%s: cannot \"listen\" on path %s (%s): error %d %s" msgid "%s%s: cannot \"listen\" on path %s (%s): error %d %s"
msgstr "%s%s: %s yolunda \"dinleme\" yapılamıyor (%s): error %d %s" msgstr "%s%s: %s yolunda \"dinleme\" yapılamıyor (%s): error %d %s"
@@ -16469,9 +16464,8 @@ msgstr ""
msgid "%s%s: not enough memory for listening on new port" msgid "%s%s: not enough memory for listening on new port"
msgstr "%s%s: yeni kapıda dinleme için yetersiz bellek" msgstr "%s%s: yeni kapıda dinleme için yetersiz bellek"
msgid "Relay WeeChat data to remote application (irc/weechat protocols)" msgid "Relay WeeChat data to remote applications"
msgstr "" msgstr "WeeChat verisini uzak konum uygulamalarına ilet"
"WeeChat verisini uzak konum uygulamalarına ilet (irc/weechat protokolleri)"
msgid "connecting" msgid "connecting"
msgstr "bağlanıyor" msgstr "bağlanıyor"
@@ -16712,11 +16706,16 @@ msgstr "(hiçbir şey)"
msgid "Alt+key/input: v=back to list d=jump to diff" msgid "Alt+key/input: v=back to list d=jump to diff"
msgstr "Alt+düğme/girdi: v=listeye geri dön d=diff'e atla" msgstr "Alt+düğme/girdi: v=listeye geri dön d=diff'e atla"
#, c-format #, fuzzy, c-format
#| msgid ""
#| "%d/%d scripts (filter: %s) | Sort: %s | Alt+key/input: i=install, "
#| "r=remove, l=load, L=reload, u=unload, A=autoload, h=(un)hold, v=view "
#| "script | Input: q=close, $=refresh, s:x,y=sort, words=filter, *=reset "
#| "filter | Mouse: left=select, right=install/remove"
msgid "" msgid ""
"%d/%d scripts (filter: %s) | Sort: %s | Alt+key/input: i=install, r=remove, " "%d/%d scripts | Filter: %s | Sort: %s | Alt+key/input: i=install, r=remove, "
"l=load, L=reload, u=unload, A=autoload, h=(un)hold, v=view script | Input: " "l=load, L=reload, u=unload, A=autoload, h=(un)hold, v=view script | Input: "
"q=close, $=refresh, s:x,y=sort, words=filter, *=reset filter | Mouse: " "$=refresh, s:x,y=sort, words=filter, *=reset filter, q=close buffer | Mouse: "
"left=select, right=install/remove" "left=select, right=install/remove"
msgstr "" msgstr ""
"%d/%d betik (süzgeç: %s) | Sırala: %s | Alt+düğme/girdi: i=kur, r=kaldır, " "%d/%d betik (süzgeç: %s) | Sırala: %s | Alt+düğme/girdi: i=kur, r=kaldır, "
@@ -16743,9 +16742,9 @@ msgid ""
"|| -up|-down [<number>] || -go <line>|end" "|| -up|-down [<number>] || -go <line>|end"
msgstr "" msgstr ""
"enable || list [-o|-ol|-i|-il] || search <metin> || show <betik> || load|" "enable || list [-o|-ol|-i|-il] || search <metin> || show <betik> || load|"
"unload|reload <betik>... || autoload|noautoload|toggleautoload <betik>... " "unload|reload <betik>... || autoload|noautoload|toggleautoload <betik>... || "
"|| install|remove|installremove|hold [-q] <betik>... || upgrade || update " "install|remove|installremove|hold [-q] <betik>... || upgrade || update || "
"|| -up|-down [<sayı>] || -go <satır>|end" "-up|-down [<sayı>] || -go <satır>|end"
#, fuzzy #, fuzzy
#| msgid "" #| msgid ""
@@ -17121,6 +17120,11 @@ msgstr "Hiçbir betik yüklenmedi"
msgid "script name with extension" msgid "script name with extension"
msgstr "betik uzantılarının listesi" msgstr "betik uzantılarının listesi"
#, fuzzy
#| msgid "comma separated list of file name extensions for plugins"
msgid "comma-separated list of plugin:extension with supported languages"
msgstr "eklentiler için dosya adı uzantılarının virgülle ayrılmış listesi"
msgid "script name with extension (wildcard \"*\" is allowed) (optional)" msgid "script name with extension (wildcard \"*\" is allowed) (optional)"
msgstr "betik adı, uzantı ile (\"*\" jokerine izin verilir) (isteğe bağlı)" msgstr "betik adı, uzantı ile (\"*\" jokerine izin verilir) (isteğe bağlı)"
@@ -18138,8 +18142,8 @@ msgid ""
"text to display before the nicks in the bar item \"typing\"; if set, it is " "text to display before the nicks in the bar item \"typing\"; if set, it is "
"used instead of the translated string \"Typing: \" which is used by default" "used instead of the translated string \"Typing: \" which is used by default"
msgstr "" msgstr ""
"\"typing\" çubuk ögesinde takma adlardan önce görüntülenecek metin; ayarlıysa " "\"typing\" çubuk ögesinde takma adlardan önce görüntülenecek metin; "
"öntanımlı olarak görüntülenen \"Yazıyar: \" metni yerine kullanılır" "ayarlıysa öntanımlı olarak görüntülenen \"Yazıyar: \" metni yerine kullanılır"
msgid "Typing status of users" msgid "Typing status of users"
msgstr "Kullanıcıların metin yazma durumu" msgstr "Kullanıcıların metin yazma durumu"
+41 -19
View File
@@ -23,7 +23,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: WeeChat\n" "Project-Id-Version: WeeChat\n"
"Report-Msgid-Bugs-To: flashcode@flashtux.org\n" "Report-Msgid-Bugs-To: flashcode@flashtux.org\n"
"POT-Creation-Date: 2026-03-21 17:24+0100\n" "POT-Creation-Date: 2026-06-08 22:23+0200\n"
"PO-Revision-Date: 2014-08-16 10:27+0200\n" "PO-Revision-Date: 2014-08-16 10:27+0200\n"
"Last-Translator: Sébastien Helleu <flashcode@flashtux.org>\n" "Last-Translator: Sébastien Helleu <flashcode@flashtux.org>\n"
"Language-Team: weechat-dev <weechat-dev@nongnu.org>\n" "Language-Team: weechat-dev <weechat-dev@nongnu.org>\n"
@@ -148,7 +148,7 @@ msgstr ""
#, c-format #, c-format
msgid "" msgid ""
"WeeChat %s Copyright %s, compiled on %s %s\n" "WeeChat %s Copyright %s, compiled on %s %s\n"
"Developed by Sébastien Helleu <flashcode@flashtux.org> - %s" "Developed by %s <%s> - %s"
msgstr "" msgstr ""
msgid "Usage:" msgid "Usage:"
@@ -1072,6 +1072,16 @@ msgid ""
"message: message for away (if no message is given, away status is removed)" "message: message for away (if no message is given, away status is removed)"
msgstr "" msgstr ""
msgid ""
"By default the away status is displayed only locally by the irc plugin (see /"
"help irc.look.display_away)."
msgstr ""
msgid ""
"This command can be caught by other plugins and scripts (see \"Plugin API "
"reference\", function \"hook_command_run\")."
msgstr ""
msgid "manage bars" msgid "manage bars"
msgstr "" msgstr ""
@@ -10267,7 +10277,7 @@ msgstr ""
msgid "get nick from IRC host" msgid "get nick from IRC host"
msgstr "" msgstr ""
msgid "IRC host (like `:nick!name@server.com`)" msgid "IRC host (like `:nick!name@server`)"
msgstr "" msgstr ""
msgid "" msgid ""
@@ -10471,8 +10481,8 @@ msgstr ""
#, c-format #, c-format
msgid "" msgid ""
"%d channels (total: %d) | Filter: %s | Sort: %s | Key(input): ctrl+j=join " "%d channels (total: %d) | Filter: %s | Sort: %s | Keys: ctrl+j=join channel "
"channel, ($)=refresh, (q)=close buffer" "| Input: $=refresh, s:x,y=sort, words=filter, *=reset filter, q=close buffer"
msgstr "" msgstr ""
msgid "Empty list of channels, try \"$\" to refresh list" msgid "Empty list of channels, try \"$\" to refresh list"
@@ -11562,7 +11572,7 @@ msgid ""
"and the current file is renamed with extension .1; an integer number with a " "and the current file is renamed with extension .1; an integer number with a "
"suffix is allowed: b = bytes (default if no unit given), k = kilobytes, m = " "suffix is allowed: b = bytes (default if no unit given), k = kilobytes, m = "
"megabytes, g = gigabytes, t = terabytes; example: \"2g\" causes a rotation " "megabytes, g = gigabytes, t = terabytes; example: \"2g\" causes a rotation "
"if the file size is > 2,000,000,000 bytes; if set to \"0\", no rotation is " "if the file size is greater than 2 GB; if set to \"0\", no rotation is "
"performed (unlimited log size); WARNING: before changing this option, you " "performed (unlimited log size); WARNING: before changing this option, you "
"should first set the compression type via option " "should first set the compression type via option "
"logger.file.rotation_compression_type" "logger.file.rotation_compression_type"
@@ -13167,18 +13177,18 @@ msgstr ""
msgid "" msgid ""
"comma separated list of hash algorithms used for password authentication in " "comma separated list of hash algorithms used for password authentication in "
"weechat protocol, among these values: \"plain\" (password in plain text, not " "\"api\" and \"weechat\" protocols, among these values: \"plain\" (password "
"hashed), \"sha256\", \"sha512\", \"pbkdf2+sha256\", \"pbkdf2+sha512\"), " "in plain text, not hashed), \"sha256\", \"sha512\", \"pbkdf2+sha256\", "
"\"*\" means all algorithms, a name beginning with \"!\" is a negative value " "\"pbkdf2+sha512\"), \"*\" means all algorithms, a name beginning with \"!\" "
"to prevent an algorithm from being used, wildcard \"*\" is allowed in names " "is a negative value to prevent an algorithm from being used, wildcard \"*\" "
"(examples: \"*\", \"pbkdf2*\", \"*,!plain\")" "is allowed in names (examples: \"*\", \"pbkdf2*\", \"*,!plain\")"
msgstr "" msgstr ""
msgid "" msgid ""
"number of iterations asked to the client in weechat protocol when a hashed " "number of iterations asked to the client in \"api\" and \"weechat\" "
"password with algorithm PBKDF2 is used for authentication; more iterations " "protocols when a hashed password with algorithm PBKDF2 is used for "
"is better in term of security but is slower to compute; this number should " "authentication; more iterations is better in term of security but is slower "
"not be too high if your CPU is slow" "to compute; this number should not be too high if your CPU is slow"
msgstr "" msgstr ""
msgid "" msgid ""
@@ -13208,6 +13218,11 @@ msgid ""
"1 are recommended values)" "1 are recommended values)"
msgstr "" msgstr ""
msgid ""
"permissions for the Unix socket, as octal value (see man chmod); it must be "
"a number with 3 digits, each between 0 and 7"
msgstr ""
msgid "" msgid ""
"POSIX extended regular expression with origins allowed in websockets (case-" "POSIX extended regular expression with origins allowed in websockets (case-"
"insensitive, use \"(?-i)\" at beginning to make it case-sensitive), example: " "insensitive, use \"(?-i)\" at beginning to make it case-sensitive), example: "
@@ -13299,7 +13314,7 @@ msgstr ""
#. TRANSLATORS: please do not translate the status names, they must be used in English #. TRANSLATORS: please do not translate the status names, they must be used in English
msgid "" msgid ""
"protocol,status (both are optional, for each argument \"*\" means all; " "protocol,status (both are optional, for each argument \"*\" means all; "
"protocols: irc, weechat; statuses: connecting, waiting_auth, connected, " "protocols: api, irc, weechat; statuses: connecting, waiting_auth, connected, "
"auth_failed, disconnected)" "auth_failed, disconnected)"
msgstr "" msgstr ""
@@ -13418,6 +13433,10 @@ msgstr ""
msgid "%s%s: cannot \"bind\" on port %d (%s): error %d %s" msgid "%s%s: cannot \"bind\" on port %d (%s): error %d %s"
msgstr "" msgstr ""
#, c-format
msgid "%s%s: warning: failed to set permissions on path %s (%s): error %d %s"
msgstr ""
#, c-format #, c-format
msgid "%s%s: cannot \"listen\" on path %s (%s): error %d %s" msgid "%s%s: cannot \"listen\" on path %s (%s): error %d %s"
msgstr "" msgstr ""
@@ -13454,7 +13473,7 @@ msgstr ""
msgid "%s%s: not enough memory for listening on new port" msgid "%s%s: not enough memory for listening on new port"
msgstr "" msgstr ""
msgid "Relay WeeChat data to remote application (irc/weechat protocols)" msgid "Relay WeeChat data to remote applications"
msgstr "" msgstr ""
msgid "connecting" msgid "connecting"
@@ -13679,9 +13698,9 @@ msgstr ""
#, c-format #, c-format
msgid "" msgid ""
"%d/%d scripts (filter: %s) | Sort: %s | Alt+key/input: i=install, r=remove, " "%d/%d scripts | Filter: %s | Sort: %s | Alt+key/input: i=install, r=remove, "
"l=load, L=reload, u=unload, A=autoload, h=(un)hold, v=view script | Input: " "l=load, L=reload, u=unload, A=autoload, h=(un)hold, v=view script | Input: "
"q=close, $=refresh, s:x,y=sort, words=filter, *=reset filter | Mouse: " "$=refresh, s:x,y=sort, words=filter, *=reset filter, q=close buffer | Mouse: "
"left=select, right=install/remove" "left=select, right=install/remove"
msgstr "" msgstr ""
@@ -13999,6 +14018,9 @@ msgstr ""
msgid "script name with extension" msgid "script name with extension"
msgstr "" msgstr ""
msgid "comma-separated list of plugin:extension with supported languages"
msgstr ""
msgid "script name with extension (wildcard \"*\" is allowed) (optional)" msgid "script name with extension (wildcard \"*\" is allowed) (optional)"
msgstr "" msgstr ""
+3 -1
View File
@@ -178,12 +178,14 @@ args_display_copyright (void)
stdout, stdout,
/* TRANSLATORS: "%s %s" after "compiled on" is date and time */ /* TRANSLATORS: "%s %s" after "compiled on" is date and time */
_("WeeChat %s Copyright %s, compiled on %s %s\n" _("WeeChat %s Copyright %s, compiled on %s %s\n"
"Developed by Sébastien Helleu <flashcode@flashtux.org> " "Developed by %s <%s> "
"- %s"), "- %s"),
version_get_version_with_git (), version_get_version_with_git (),
WEECHAT_COPYRIGHT_DATE, WEECHAT_COPYRIGHT_DATE,
version_get_compilation_date (), version_get_compilation_date (),
version_get_compilation_time (), version_get_compilation_time (),
WEECHAT_AUTHOR_NAME,
WEECHAT_AUTHOR_EMAIL,
WEECHAT_WEBSITE); WEECHAT_WEBSITE);
string_fprintf (stdout, "\n"); string_fprintf (stdout, "\n");
} }
+121 -180
View File
@@ -240,8 +240,7 @@ command_bar_list (int full)
COMMAND_CALLBACK(bar) COMMAND_CALLBACK(bar)
{ {
int i, type, position, number, update; int i, type, position, number, update;
long value; char *str_type, *pos_condition, *name;
char *error, *str_type, *pos_condition, *name;
struct t_gui_bar *ptr_bar, *ptr_bar2, *ptr_next_bar; struct t_gui_bar *ptr_bar, *ptr_bar2, *ptr_next_bar;
struct t_gui_bar_item *ptr_item; struct t_gui_bar_item *ptr_item;
struct t_gui_window *ptr_window; struct t_gui_window *ptr_window;
@@ -331,10 +330,7 @@ COMMAND_CALLBACK(bar)
free (str_type); free (str_type);
return WEECHAT_RC_ERROR; return WEECHAT_RC_ERROR;
} }
error = NULL; if (!util_parse_int (argv[5], 10, NULL))
value = strtol (argv[5], &error, 10);
(void) value;
if (!error || error[0])
{ {
gui_chat_printf (NULL, gui_chat_printf (NULL,
_("%sInvalid size \"%s\" for bar \"%s\""), _("%sInvalid size \"%s\" for bar \"%s\""),
@@ -572,9 +568,7 @@ COMMAND_CALLBACK(bar)
else else
{ {
ptr_window = NULL; ptr_window = NULL;
error = NULL; if (util_parse_int (argv[3], 10, &number))
number = (int)strtol (argv[3], &error, 10);
if (error && !error[0])
ptr_window = gui_window_search_by_number (number); ptr_window = gui_window_search_by_number (number);
} }
if (!ptr_window) if (!ptr_window)
@@ -609,7 +603,7 @@ COMMAND_CALLBACK(bar)
*/ */
int int
command_buffer_check_number (long number) command_buffer_check_number (int number)
{ {
if ((number < 1) || (number > GUI_BUFFER_NUMBER_MAX)) if ((number < 1) || (number > GUI_BUFFER_NUMBER_MAX))
{ {
@@ -667,11 +661,11 @@ COMMAND_CALLBACK(buffer)
struct t_gui_buffer *ptr_buffer, *ptr_buffer1, *ptr_buffer2; struct t_gui_buffer *ptr_buffer, *ptr_buffer1, *ptr_buffer2;
struct t_gui_buffer *weechat_buffer; struct t_gui_buffer *weechat_buffer;
struct t_arraylist *buffers_to_close; struct t_arraylist *buffers_to_close;
long number, number1, number2, numbers[3]; char *value, *pos, *str_number1, *pos_number2;
long long number_id; int i, count, prev_number, clear_by_number, list_size;
char *error, *value, *pos, *str_number1, *pos_number2;
int i, count, prev_number, clear_number, list_size;
int buffer_found, arg_name, type_free, switch_to_buffer, rc; int buffer_found, arg_name, type_free, switch_to_buffer, rc;
int number, number1, number2, numbers[3];
long long number_id;
/* make C compiler happy */ /* make C compiler happy */
(void) pointer; (void) pointer;
@@ -752,7 +746,9 @@ COMMAND_CALLBACK(buffer)
if (argc > 2) if (argc > 2)
{ {
if (string_strcmp (argv[2], "-all") == 0) if (string_strcmp (argv[2], "-all") == 0)
{
gui_buffer_clear_all (); gui_buffer_clear_all ();
}
else else
{ {
for (i = 2; i < argc; i++) for (i = 2; i < argc; i++)
@@ -760,18 +756,19 @@ COMMAND_CALLBACK(buffer)
if (string_strcmp (argv[i], "-merged") == 0) if (string_strcmp (argv[i], "-merged") == 0)
{ {
ptr_buffer = buffer; ptr_buffer = buffer;
clear_number = 1; clear_by_number = 1;
} }
else else
{ {
ptr_buffer = gui_buffer_search_by_id_number_name (argv[i]); ptr_buffer = gui_buffer_search_by_id_number_name (argv[i]);
error = NULL; clear_by_number = (util_parse_int (argv[i], 10, &number)
(void) strtol (argv[i], &error, 10); && ptr_buffer
clear_number = (error && !error[0]); && (ptr_buffer->number == number)) ?
1 : 0;
} }
if (ptr_buffer) if (ptr_buffer)
{ {
if (clear_number) if (clear_by_number)
{ {
for (ptr_buffer2 = gui_buffers; ptr_buffer2; for (ptr_buffer2 = gui_buffers; ptr_buffer2;
ptr_buffer2 = ptr_buffer2->next_buffer) ptr_buffer2 = ptr_buffer2->next_buffer)
@@ -817,20 +814,21 @@ COMMAND_CALLBACK(buffer)
} }
else else
{ {
error = NULL; pos = ((argv[2][0] == '+') || (argv[2][0] == '-')) ?
number = strtol (((argv[2][0] == '+') || (argv[2][0] == '-')) ? argv[2] + 1 : argv[2];
argv[2] + 1 : argv[2], if (util_parse_int (pos, 10, &number)
&error, 10); && (number >= 1)
if (error && !error[0] && (number <= GUI_BUFFER_NUMBER_MAX)
&& (number >= INT_MIN) && (number <= INT_MAX)) && ((argv[2][0] != '+') || (number <= INT_MAX - buffer->number))
&& ((argv[2][0] != '-') || (buffer->number >= INT_MIN + number)))
{ {
if (argv[2][0] == '+') if (argv[2][0] == '+')
number = buffer->number + number; number = buffer->number + number;
else if (argv[2][0] == '-') else if (argv[2][0] == '-')
number = buffer->number - number; number = buffer->number - number;
number = (int)number; if (!command_buffer_check_number (number))
if (command_buffer_check_number (number)) return WEECHAT_RC_ERROR;
gui_buffer_move_to_number (buffer, number); gui_buffer_move_to_number (buffer, number);
} }
else else
{ {
@@ -940,7 +938,6 @@ COMMAND_CALLBACK(buffer)
if (string_strcmp (argv[1], "merge") == 0) if (string_strcmp (argv[1], "merge") == 0)
{ {
COMMAND_MIN_ARGS(3, argv[1]); COMMAND_MIN_ARGS(3, argv[1]);
error = NULL;
ptr_buffer = gui_buffer_search_by_id_number_name (argv[2]); ptr_buffer = gui_buffer_search_by_id_number_name (argv[2]);
if (!ptr_buffer) if (!ptr_buffer)
{ {
@@ -967,9 +964,7 @@ COMMAND_CALLBACK(buffer)
} }
else else
{ {
error = NULL; if (!util_parse_int (argv[2], 10, &number))
number = strtol (argv[2], &error, 10);
if (!error || error[0])
{ {
/* invalid number */ /* invalid number */
gui_chat_printf (NULL, gui_chat_printf (NULL,
@@ -978,11 +973,11 @@ COMMAND_CALLBACK(buffer)
argv[2]); argv[2]);
return WEECHAT_RC_ERROR; return WEECHAT_RC_ERROR;
} }
if (!command_buffer_check_number ((int)number)) if (!command_buffer_check_number (number))
COMMAND_ERROR; COMMAND_ERROR;
} }
} }
gui_buffer_unmerge (buffer, (int)number); gui_buffer_unmerge (buffer, number);
return WEECHAT_RC_OK; return WEECHAT_RC_OK;
} }
@@ -998,23 +993,26 @@ COMMAND_CALLBACK(buffer)
{ {
for (i = 2; i < argc; i++) for (i = 2; i < argc; i++)
{ {
ptr_buffer = gui_buffer_search_by_id_number_name (argv[i]); ptr_buffer = NULL;
if (util_parse_int (argv[i], 10, &number))
ptr_buffer = gui_buffer_search_by_number (number);
if (ptr_buffer) if (ptr_buffer)
{ {
error = NULL; /* hide by number */
(void) strtol (argv[i], &error, 10); for (ptr_buffer2 = gui_buffers; ptr_buffer2;
if (error && !error[0]) ptr_buffer2 = ptr_buffer2->next_buffer)
{ {
for (ptr_buffer2 = gui_buffers; ptr_buffer2; if (ptr_buffer2->number == ptr_buffer->number)
ptr_buffer2 = ptr_buffer2->next_buffer)
{ {
if (ptr_buffer2->number == ptr_buffer->number) gui_buffer_hide (ptr_buffer2);
{
gui_buffer_hide (ptr_buffer2);
}
} }
} }
else }
else
{
/* hide by id or name */
ptr_buffer = gui_buffer_search_by_id_name (argv[i]);
if (ptr_buffer)
gui_buffer_hide (ptr_buffer); gui_buffer_hide (ptr_buffer);
} }
} }
@@ -1037,23 +1035,25 @@ COMMAND_CALLBACK(buffer)
{ {
for (i = 2; i < argc; i++) for (i = 2; i < argc; i++)
{ {
ptr_buffer = gui_buffer_search_by_id_number_name (argv[i]); ptr_buffer = NULL;
if (util_parse_int (argv[i], 10, &number))
ptr_buffer = gui_buffer_search_by_number (number);
if (ptr_buffer) if (ptr_buffer)
{ {
error = NULL; /* unhide by number */
(void) strtol (argv[i], &error, 10); for (ptr_buffer2 = gui_buffers; ptr_buffer2;
if (error && !error[0]) ptr_buffer2 = ptr_buffer2->next_buffer)
{ {
for (ptr_buffer2 = gui_buffers; ptr_buffer2; if (ptr_buffer2->number == ptr_buffer->number)
ptr_buffer2 = ptr_buffer2->next_buffer)
{ {
if (ptr_buffer2->number == ptr_buffer->number) gui_buffer_unhide (ptr_buffer2);
{
gui_buffer_unhide (ptr_buffer2);
}
} }
} }
else }
else
{
ptr_buffer = gui_buffer_search_by_id_name (argv[i]);
if (ptr_buffer)
gui_buffer_unhide (ptr_buffer); gui_buffer_unhide (ptr_buffer);
} }
} }
@@ -1098,9 +1098,7 @@ COMMAND_CALLBACK(buffer)
{ {
if (argc >= i + 3) if (argc >= i + 3)
{ {
error = NULL; if (!util_parse_int (argv[i + 2], 10, &numbers[i]))
numbers[i] = strtol (argv[i + 2], &error, 10);
if (!error || error[0])
{ {
/* invalid number */ /* invalid number */
gui_chat_printf (NULL, gui_chat_printf (NULL,
@@ -1109,7 +1107,7 @@ COMMAND_CALLBACK(buffer)
argv[i + 2]); argv[i + 2]);
return WEECHAT_RC_ERROR; return WEECHAT_RC_ERROR;
} }
if ((i == 2) && !command_buffer_check_number ((int)numbers[i])) if ((i == 2) && !command_buffer_check_number (numbers[i]))
return WEECHAT_RC_ERROR; return WEECHAT_RC_ERROR;
} }
else else
@@ -1120,8 +1118,8 @@ COMMAND_CALLBACK(buffer)
* renumber the buffers; if we are renumbering all buffers (no numbers * renumber the buffers; if we are renumbering all buffers (no numbers
* given), start at number 1 * given), start at number 1
*/ */
gui_buffer_renumber ((int)numbers[0], (int)numbers[1], gui_buffer_renumber (numbers[0], numbers[1],
(argc == 2) ? 1 : (int)numbers[2]); (argc == 2) ? 1 : numbers[2]);
return WEECHAT_RC_OK; return WEECHAT_RC_OK;
} }
@@ -1159,15 +1157,11 @@ COMMAND_CALLBACK(buffer)
} }
if (str_number1) if (str_number1)
{ {
error = NULL; if (util_parse_int (str_number1, 10, &number1))
number1 = strtol (str_number1, &error, 10);
if (error && !error[0])
{ {
if (pos_number2) if (pos_number2)
{ {
error = NULL; if (!util_parse_int (pos_number2, 10, &number2))
number2 = strtol (pos_number2, &error, 10);
if (!error || error[0])
{ {
free (str_number1); free (str_number1);
COMMAND_ERROR; COMMAND_ERROR;
@@ -1189,10 +1183,7 @@ COMMAND_CALLBACK(buffer)
while (ptr_buffer && (ptr_buffer->number <= number2)) while (ptr_buffer && (ptr_buffer->number <= number2))
{ {
if (ptr_buffer->number >= number1) if (ptr_buffer->number >= number1)
{ arraylist_add (buffers_to_close, ptr_buffer);
arraylist_add (buffers_to_close,
ptr_buffer);
}
ptr_buffer = ptr_buffer->next_buffer; ptr_buffer = ptr_buffer->next_buffer;
} }
} }
@@ -1201,10 +1192,7 @@ COMMAND_CALLBACK(buffer)
{ {
ptr_buffer = gui_buffer_search_by_full_name (argv[i]); ptr_buffer = gui_buffer_search_by_full_name (argv[i]);
if (!ptr_buffer) if (!ptr_buffer)
{ ptr_buffer = gui_buffer_search_by_partial_name (NULL, argv[i]);
ptr_buffer = gui_buffer_search_by_partial_name (
NULL, argv[i]);
}
if (ptr_buffer) if (ptr_buffer)
arraylist_add (buffers_to_close, ptr_buffer); arraylist_add (buffers_to_close, ptr_buffer);
} }
@@ -1470,9 +1458,7 @@ COMMAND_CALLBACK(buffer)
} }
else else
{ {
error = NULL; if (util_parse_int (argv[1] + 1, 10, &number) && (number > 0))
number = strtol (argv[1] + 1, &error, 10);
if (error && !error[0] && (number > 0))
{ {
count = 0; count = 0;
prev_number = gui_current_window->buffer->number; prev_number = gui_current_window->buffer->number;
@@ -1531,9 +1517,7 @@ COMMAND_CALLBACK(buffer)
} }
else else
{ {
error = NULL; if (util_parse_int (argv[1] + 1, 10, &number) && (number > 0))
number = strtol (argv[1] + 1, &error, 10);
if (error && !error[0] && (number > 0))
{ {
count = 0; count = 0;
prev_number = gui_current_window->buffer->number; prev_number = gui_current_window->buffer->number;
@@ -1586,9 +1570,9 @@ COMMAND_CALLBACK(buffer)
/* smart jump (jump to previous buffer for current number) */ /* smart jump (jump to previous buffer for current number) */
if (argv[1][0] == '*') if (argv[1][0] == '*')
{ {
error = NULL; if (!argv[1][1])
number = strtol (argv[1] + 1, &error, 10); COMMAND_ERROR;
if (error && !error[0]) if (util_parse_int (argv[1] + 1, 10, &number))
{ {
/* buffer is currently displayed ? then jump to previous buffer */ /* buffer is currently displayed ? then jump to previous buffer */
if ((number == buffer->number) if ((number == buffer->number)
@@ -1619,9 +1603,7 @@ COMMAND_CALLBACK(buffer)
} }
/* jump to buffer by id, number or name */ /* jump to buffer by id, number or name */
error = NULL; if (util_parse_longlong (argv[1], 10, &number_id))
number_id = strtoll (argv[1], &error, 10);
if (error && !error[0])
{ {
ptr_buffer = gui_buffer_search_by_id (number_id); ptr_buffer = gui_buffer_search_by_id (number_id);
if (ptr_buffer) if (ptr_buffer)
@@ -1652,11 +1634,10 @@ COMMAND_CALLBACK(buffer)
COMMAND_CALLBACK(color) COMMAND_CALLBACK(color)
{ {
char *str_alias, *str_rgb, *pos, *error; char *str_alias, *str_rgb, *pos;
char str_color[1024], str_command[2048]; char str_color[1024], str_command[2048];
long number, limit;
unsigned int rgb; unsigned int rgb;
int i; int i, number, limit;
struct t_gui_color_palette *color_palette; struct t_gui_color_palette *color_palette;
/* make C compiler happy */ /* make C compiler happy */
@@ -1688,9 +1669,7 @@ COMMAND_CALLBACK(color)
COMMAND_MIN_ARGS(4, argv[1]); COMMAND_MIN_ARGS(4, argv[1]);
/* check color number */ /* check color number */
error = NULL; if (util_parse_int (argv[2], 10, &number))
number = strtol (argv[2], &error, 10);
if (error && !error[0])
{ {
if ((number < 0) || (number > gui_color_get_term_colors ())) if ((number < 0) || (number > gui_color_get_term_colors ()))
number = -1; number = -1;
@@ -1735,7 +1714,7 @@ COMMAND_CALLBACK(color)
/* add color alias */ /* add color alias */
snprintf (str_command, sizeof (str_command), snprintf (str_command, sizeof (str_command),
"/set weechat.palette.%d \"%s\"", "/set weechat.palette.%d \"%s\"",
(int)number, number,
(str_color[0]) ? str_color + 1 : ""); (str_color[0]) ? str_color + 1 : "");
(void) input_exec_command (buffer, 1, NULL, str_command, NULL); (void) input_exec_command (buffer, 1, NULL, str_command, NULL);
@@ -1748,9 +1727,7 @@ COMMAND_CALLBACK(color)
COMMAND_MIN_ARGS(3, argv[1]); COMMAND_MIN_ARGS(3, argv[1]);
/* check color number */ /* check color number */
error = NULL; if (util_parse_int (argv[2], 10, &number))
number = strtol (argv[2], &error, 10);
if (error && !error[0])
{ {
if ((number < 0) || (number > gui_color_get_term_colors ())) if ((number < 0) || (number > gui_color_get_term_colors ()))
number = -1; number = -1;
@@ -1770,7 +1747,7 @@ COMMAND_CALLBACK(color)
} }
/* search color */ /* search color */
color_palette = gui_color_palette_get ((int)number); color_palette = gui_color_palette_get (number);
if (!color_palette) if (!color_palette)
{ {
gui_chat_printf (NULL, gui_chat_printf (NULL,
@@ -1783,7 +1760,7 @@ COMMAND_CALLBACK(color)
/* delete color alias */ /* delete color alias */
snprintf (str_command, sizeof (str_command), snprintf (str_command, sizeof (str_command),
"/unset weechat.palette.%d", "/unset weechat.palette.%d",
(int)number); number);
(void) input_exec_command (buffer, 1, NULL, str_command, NULL); (void) input_exec_command (buffer, 1, NULL, str_command, NULL);
return WEECHAT_RC_OK; return WEECHAT_RC_OK;
@@ -1807,12 +1784,10 @@ COMMAND_CALLBACK(color)
if (string_strcmp (argv[1], "term2rgb") == 0) if (string_strcmp (argv[1], "term2rgb") == 0)
{ {
COMMAND_MIN_ARGS(3, argv[1]); COMMAND_MIN_ARGS(3, argv[1]);
error = NULL; if (!util_parse_int (argv[2], 10, &number) || (number < 0) || (number > 255))
number = strtol (argv[2], &error, 10);
if (!error || error[0] || (number < 0) || (number > 255))
COMMAND_ERROR; COMMAND_ERROR;
gui_chat_printf (NULL, gui_chat_printf (NULL,
"%ld -> #%06x", "%d -> #%06x",
number, number,
gui_color_convert_term_to_rgb (number)); gui_color_convert_term_to_rgb (number));
return WEECHAT_RC_OK; return WEECHAT_RC_OK;
@@ -1829,9 +1804,7 @@ COMMAND_CALLBACK(color)
limit = 256; limit = 256;
if (argc > 3) if (argc > 3)
{ {
error = NULL; if (!util_parse_int (argv[3], 10, &limit) || (limit < 1) || (limit > 256))
limit = strtol (argv[3], &error, 10);
if (!error || error[0] || (limit < 1) || (limit > 256))
COMMAND_ERROR; COMMAND_ERROR;
} }
gui_chat_printf (NULL, gui_chat_printf (NULL,
@@ -1938,7 +1911,7 @@ COMMAND_CALLBACK(command)
COMMAND_CALLBACK(cursor) COMMAND_CALLBACK(cursor)
{ {
char *pos, *str_x, *error; char *pos, *str_x;
int x, y; int x, y;
/* make C compiler happy */ /* make C compiler happy */
@@ -1966,18 +1939,12 @@ COMMAND_CALLBACK(cursor)
pos++; pos++;
if (str_x) if (str_x)
{ {
error = NULL; if (util_parse_int (str_x, 10, &x)
x = (int) strtol (str_x, &error, 10); && util_parse_int (pos, 10, &y))
if (error && !error[0])
{ {
error = NULL; gui_cursor_move_xy (x, y);
y = (int) strtol (pos, &error, 10); free (str_x);
if (error && !error[0]) return WEECHAT_RC_OK;
{
gui_cursor_move_xy (x, y);
free (str_x);
return WEECHAT_RC_OK;
}
} }
free (str_x); free (str_x);
} }
@@ -3531,7 +3498,6 @@ COMMAND_CALLBACK(history)
{ {
struct t_gui_history *ptr_history; struct t_gui_history *ptr_history;
int n, n_total, n_user, displayed; int n, n_total, n_user, displayed;
char *error;
/* make C compiler happy */ /* make C compiler happy */
(void) pointer; (void) pointer;
@@ -3549,9 +3515,7 @@ COMMAND_CALLBACK(history)
} }
else else
{ {
error = NULL; if (!util_parse_int (argv[1], 10, &n_user) || (n_user < 0))
n_user = (int)strtol (argv[1], &error, 10);
if (!error || error[0] || (n_user < 0))
COMMAND_ERROR; COMMAND_ERROR;
} }
} }
@@ -4872,11 +4836,8 @@ void
command_mouse_timer (const char *delay) command_mouse_timer (const char *delay)
{ {
long seconds; long seconds;
char *error;
error = NULL; if (util_parse_long (delay, 10, &seconds) && (seconds > 0))
seconds = strtol (delay, &error, 10);
if (error && !error[0] && (seconds > 0))
{ {
hook_timer (NULL, seconds * 1000, 0, 1, hook_timer (NULL, seconds * 1000, 0, 1,
&command_mouse_timer_cb, NULL, NULL); &command_mouse_timer_cb, NULL, NULL);
@@ -5573,9 +5534,9 @@ COMMAND_CALLBACK(print)
int i, y, escape, to_stdout, to_stderr, arg_new_buffer_name; int i, y, escape, to_stdout, to_stderr, arg_new_buffer_name;
int new_buffer_type_free, free_content, switch_to_buffer; int new_buffer_type_free, free_content, switch_to_buffer;
struct timeval tv_date; struct timeval tv_date;
char *tags, *pos, *text, *text2, *error, empty_string[1] = { '\0' }; char *tags, *pos, *text, *text2, empty_string[1] = { '\0' };
const char *prefix, *ptr_text; const char *prefix, *ptr_text;
long value; long long value;
/* make C compiler happy */ /* make C compiler happy */
(void) pointer; (void) pointer;
@@ -5638,11 +5599,8 @@ COMMAND_CALLBACK(print)
if (i + 1 >= argc) if (i + 1 >= argc)
COMMAND_ERROR; COMMAND_ERROR;
i++; i++;
error = NULL; if (!util_parse_int (argv[i], 10, &y))
value = strtol (argv[i], &error, 10);
if (!error || error[0])
COMMAND_ERROR; COMMAND_ERROR;
y = (int)value;
} }
else if (string_strcmp (argv[i], "-date") == 0) else if (string_strcmp (argv[i], "-date") == 0)
{ {
@@ -5651,9 +5609,7 @@ COMMAND_CALLBACK(print)
i++; i++;
if ((argv[i][0] == '-') || (argv[i][0] == '+')) if ((argv[i][0] == '-') || (argv[i][0] == '+'))
{ {
error = NULL; if (!util_parse_longlong (argv[i] + 1, 10, &value))
value = strtol (argv[i] + 1, &error, 10);
if (!error || error[0])
COMMAND_ERROR; COMMAND_ERROR;
gettimeofday (&tv_date, NULL); gettimeofday (&tv_date, NULL);
tv_date.tv_sec += (argv[i][0] == '+') ? value : value * -1; tv_date.tv_sec += (argv[i][0] == '+') ? value : value * -1;
@@ -5877,9 +5833,8 @@ command_proxy_list (void)
COMMAND_CALLBACK(proxy) COMMAND_CALLBACK(proxy)
{ {
struct t_proxy *ptr_proxy, *ptr_next_proxy; struct t_proxy *ptr_proxy, *ptr_next_proxy;
char *error, *name; char *name;
int type, i, update; int type, i, update;
long value;
/* make C compiler happy */ /* make C compiler happy */
(void) pointer; (void) pointer;
@@ -5925,10 +5880,7 @@ COMMAND_CALLBACK(proxy)
argv[3], argv[2]); argv[3], argv[2]);
return WEECHAT_RC_ERROR; return WEECHAT_RC_ERROR;
} }
error = NULL; if (util_parse_int (argv[5], 10, NULL))
value = strtol (argv[5], &error, 10);
(void) value;
if (error && !error[0])
{ {
/* add proxy */ /* add proxy */
if (proxy_new (argv[2], argv[3], "auto", argv[4], argv[5], if (proxy_new (argv[2], argv[3], "auto", argv[4], argv[5],
@@ -6256,7 +6208,6 @@ COMMAND_CALLBACK(repeat)
{ {
int arg_count, count, i; int arg_count, count, i;
unsigned long long interval; unsigned long long interval;
char *error;
struct t_command_repeat *cmd_repeat; struct t_command_repeat *cmd_repeat;
/* make C compiler happy */ /* make C compiler happy */
@@ -6276,9 +6227,7 @@ COMMAND_CALLBACK(repeat)
arg_count = 3; arg_count = 3;
} }
error = NULL; if (!util_parse_int (argv[arg_count], 10, &count) || (count < 1))
count = (int)strtol (argv[arg_count], &error, 10);
if (!error || error[0] || (count < 1))
{ {
/* invalid count */ /* invalid count */
gui_chat_printf (NULL, gui_chat_printf (NULL,
@@ -7171,8 +7120,8 @@ COMMAND_CALLBACK(set)
COMMAND_CALLBACK(sys) COMMAND_CALLBACK(sys)
{ {
long value; long size;
char *error; int num_processes;
/* make C compiler happy */ /* make C compiler happy */
(void) pointer; (void) pointer;
@@ -7202,15 +7151,13 @@ COMMAND_CALLBACK(sys)
if (string_strcmp (argv[1], "malloc_trim") == 0) if (string_strcmp (argv[1], "malloc_trim") == 0)
{ {
#ifdef HAVE_MALLOC_TRIM #ifdef HAVE_MALLOC_TRIM
error = NULL; size = 0;
value = 0;
if (argc > 2) if (argc > 2)
{ {
value = strtol (argv[2], &error, 10); if (!util_parse_long (argv[2], 10, &size) || (size < 0))
if (!error || error[0] || (value < 0))
COMMAND_ERROR; COMMAND_ERROR;
} }
malloc_trim ((size_t)value); malloc_trim ((size_t)size);
return WEECHAT_RC_OK; return WEECHAT_RC_OK;
#else #else
gui_chat_printf (NULL, gui_chat_printf (NULL,
@@ -7225,13 +7172,10 @@ COMMAND_CALLBACK(sys)
if (string_strcmp (argv[1], "waitpid") == 0) if (string_strcmp (argv[1], "waitpid") == 0)
{ {
COMMAND_MIN_ARGS(3, argv[1]); COMMAND_MIN_ARGS(3, argv[1]);
error = NULL; if (!util_parse_int (argv[2], 10, &num_processes) || (num_processes < 1))
value = strtol (argv[2], &error, 10);
if (!error || error[0])
COMMAND_ERROR; COMMAND_ERROR;
sys_waitpid ((int)value); sys_waitpid (num_processes);
return WEECHAT_RC_OK; return WEECHAT_RC_OK;
} }
COMMAND_ERROR; COMMAND_ERROR;
} }
@@ -7980,9 +7924,8 @@ COMMAND_CALLBACK(window)
{ {
struct t_gui_window *ptr_win; struct t_gui_window *ptr_win;
struct t_gui_window_tree *ptr_tree; struct t_gui_window_tree *ptr_tree;
char *error, *ptr_sizearg, sign; char *ptr_sizearg, sign;
long number; int number, win_args;
int win_args;
/* make C compiler happy */ /* make C compiler happy */
(void) pointer; (void) pointer;
@@ -8043,9 +7986,7 @@ COMMAND_CALLBACK(window)
win_args = 2; win_args = 2;
if ((argc > 3) && (string_strcmp (argv[2], "-window") == 0)) if ((argc > 3) && (string_strcmp (argv[2], "-window") == 0))
{ {
error = NULL; if (util_parse_int (argv[3], 10, &number) && (number >= 1))
number = strtol (argv[3], &error, 10);
if (error && !error[0] && (number >= 1))
{ {
ptr_win = gui_window_search_by_number (number); ptr_win = gui_window_search_by_number (number);
if (!ptr_win) if (!ptr_win)
@@ -8164,9 +8105,7 @@ COMMAND_CALLBACK(window)
{ {
if (argc > win_args) if (argc > win_args)
{ {
error = NULL; if (util_parse_int (argv[win_args], 10, &number)
number = strtol (argv[win_args], &error, 10);
if (error && !error[0]
&& (number > 0) && (number < 100)) && (number > 0) && (number < 100))
{ {
gui_window_split_horizontal (ptr_win, number); gui_window_split_horizontal (ptr_win, number);
@@ -8175,7 +8114,9 @@ COMMAND_CALLBACK(window)
COMMAND_ERROR; COMMAND_ERROR;
} }
else else
{
gui_window_split_horizontal (ptr_win, 50); gui_window_split_horizontal (ptr_win, 50);
}
return WEECHAT_RC_OK; return WEECHAT_RC_OK;
} }
@@ -8184,9 +8125,7 @@ COMMAND_CALLBACK(window)
{ {
if (argc > win_args) if (argc > win_args)
{ {
error = NULL; if (util_parse_int (argv[win_args], 10, &number)
number = strtol (argv[win_args], &error, 10);
if (error && !error[0]
&& (number > 0) && (number < 100)) && (number > 0) && (number < 100))
{ {
gui_window_split_vertical (ptr_win, number); gui_window_split_vertical (ptr_win, number);
@@ -8195,7 +8134,9 @@ COMMAND_CALLBACK(window)
COMMAND_ERROR; COMMAND_ERROR;
} }
else else
{
gui_window_split_vertical (ptr_win, 50); gui_window_split_vertical (ptr_win, 50);
}
return WEECHAT_RC_OK; return WEECHAT_RC_OK;
} }
@@ -8220,9 +8161,7 @@ COMMAND_CALLBACK(window)
sign = ptr_sizearg[0]; sign = ptr_sizearg[0];
ptr_sizearg++; ptr_sizearg++;
} }
error = NULL; if (util_parse_int (ptr_sizearg, 10, &number))
number = strtol (ptr_sizearg, &error, 10);
if (error && !error[0])
{ {
if (sign) if (sign)
{ {
@@ -8360,9 +8299,7 @@ COMMAND_CALLBACK(window)
/* jump to window by buffer number */ /* jump to window by buffer number */
if (string_strncmp (argv[1], "b", 1) == 0) if (string_strncmp (argv[1], "b", 1) == 0)
{ {
error = NULL; if (util_parse_int (argv[1] + 1, 10, &number))
number = strtol (argv[1] + 1, &error, 10);
if (error && !error[0])
{ {
gui_window_switch_by_buffer (ptr_win, number); gui_window_switch_by_buffer (ptr_win, number);
return WEECHAT_RC_OK; return WEECHAT_RC_OK;
@@ -8370,9 +8307,7 @@ COMMAND_CALLBACK(window)
} }
/* jump to window by number */ /* jump to window by number */
error = NULL; if (util_parse_int (argv[1], 10, &number))
number = strtol (argv[1], &error, 10);
if (error && !error[0])
{ {
gui_window_switch_by_number (number); gui_window_switch_by_number (number);
return WEECHAT_RC_OK; return WEECHAT_RC_OK;
@@ -8412,7 +8347,13 @@ command_init (void)
CMD_ARGS_DESC( CMD_ARGS_DESC(
N_("raw[-all]: set or remove away status on all connected servers"), N_("raw[-all]: set or remove away status on all connected servers"),
N_("message: message for away (if no message is given, away status is " N_("message: message for away (if no message is given, away status is "
"removed)")), "removed)"),
"",
N_("By default the away status is displayed only locally by the irc plugin "
"(see /help irc.look.display_away)."),
"",
N_("This command can be caught by other plugins and scripts "
"(see \"Plugin API reference\", function \"hook_command_run\").")),
"-all", &command_away, NULL, NULL); "-all", &command_away, NULL, NULL);
hook_command ( hook_command (
NULL, "bar", NULL, "bar",
+45 -92
View File
@@ -46,6 +46,7 @@
#include "core-infolist.h" #include "core-infolist.h"
#include "core-log.h" #include "core-log.h"
#include "core-string.h" #include "core-string.h"
#include "core-util.h"
#include "core-version.h" #include "core-version.h"
#include "../gui/gui-color.h" #include "../gui/gui-color.h"
#include "../gui/gui-chat.h" #include "../gui/gui-chat.h"
@@ -703,9 +704,9 @@ config_file_new_option (struct t_config_file *config_file,
void *callback_delete_data) void *callback_delete_data)
{ {
struct t_config_option *new_option; struct t_config_option *new_option;
int var_type, int_value, argc, i, index_value; int var_type, int_value, argc, i, index_value, number;
long number; const char *pos;
char *error, *pos, *option_name, *parent_name; char *option_name, *parent_name;
new_option = NULL; new_option = NULL;
option_name = NULL; option_name = NULL;
@@ -818,9 +819,7 @@ config_file_new_option (struct t_config_file *config_file,
new_option->max = max; new_option->max = max;
if (default_value) if (default_value)
{ {
error = NULL; if (!util_parse_int (default_value, 10, &number))
number = strtol (default_value, &error, 10);
if (!error || error[0])
number = 0; number = 0;
if (number < min) if (number < min)
number = min; number = min;
@@ -833,9 +832,7 @@ config_file_new_option (struct t_config_file *config_file,
} }
if (value) if (value)
{ {
error = NULL; if (!util_parse_int (value, 10, &number))
number = strtol (value, &error, 10);
if (!error || error[0])
number = 0; number = 0;
if (number < min) if (number < min)
number = min; number = min;
@@ -1099,12 +1096,13 @@ config_file_search_with_string (const char *option_name,
struct t_config_file **config_file, struct t_config_file **config_file,
struct t_config_section **section, struct t_config_section **section,
struct t_config_option **option, struct t_config_option **option,
char **pos_option_name) const char **pos_option_name)
{ {
struct t_config_file *ptr_config; struct t_config_file *ptr_config;
struct t_config_section *ptr_section; struct t_config_section *ptr_section;
struct t_config_option *ptr_option; struct t_config_option *ptr_option;
char *file_name, *pos_section, *section_name, *pos_option; const char *pos_section, *pos_option;
char *file_name, *section_name;
if (config_file) if (config_file)
*config_file = NULL; *config_file = NULL;
@@ -1404,9 +1402,7 @@ int
config_file_option_set (struct t_config_option *option, const char *value, config_file_option_set (struct t_config_option *option, const char *value,
int run_callback) int run_callback)
{ {
int value_int, i, rc, new_value_ok, old_value_was_null, old_value; int value_int, i, rc, new_value_ok, old_value_was_null, old_value, number;
long number;
char *error;
if (!option) if (!option)
return WEECHAT_CONFIG_OPTION_SET_ERROR; return WEECHAT_CONFIG_OPTION_SET_ERROR;
@@ -1493,10 +1489,8 @@ config_file_option_set (struct t_config_option *option, const char *value,
new_value_ok = 0; new_value_ok = 0;
if (strncmp (value, "++", 2) == 0) if (strncmp (value, "++", 2) == 0)
{ {
error = NULL; if (util_parse_int (value + 2, 10, &number)
number = strtol (value + 2, &error, 10); && ((long)old_value + (long)number <= (long)(option->max)))
if (error && !error[0]
&& (long)old_value + number <= (long)(option->max))
{ {
value_int = old_value + number; value_int = old_value + number;
new_value_ok = 1; new_value_ok = 1;
@@ -1504,10 +1498,8 @@ config_file_option_set (struct t_config_option *option, const char *value,
} }
else if (strncmp (value, "--", 2) == 0) else if (strncmp (value, "--", 2) == 0)
{ {
error = NULL; if (util_parse_int (value + 2, 10, &number)
number = strtol (value + 2, &error, 10); && ((long)old_value - (long)number >= (long)(option->min)))
if (error && !error[0]
&& (long)old_value - number >= (long)(option->min))
{ {
value_int = old_value - number; value_int = old_value - number;
new_value_ok = 1; new_value_ok = 1;
@@ -1515,20 +1507,16 @@ config_file_option_set (struct t_config_option *option, const char *value,
} }
else else
{ {
error = NULL; if (util_parse_int (value, 10, &number))
number = strtol (value, &error, 10);
if (error && !error[0])
{ {
value_int = number; value_int = number;
if ((value_int >= option->min) if ((value_int >= option->min) && (value_int <= option->max))
&& (value_int <= option->max))
new_value_ok = 1; new_value_ok = 1;
} }
} }
if (new_value_ok) if (new_value_ok)
{ {
if (old_value_was_null if (old_value_was_null || (value_int != old_value))
|| (value_int != old_value))
{ {
CONFIG_INTEGER(option) = value_int; CONFIG_INTEGER(option) = value_int;
rc = WEECHAT_CONFIG_OPTION_SET_OK_CHANGED; rc = WEECHAT_CONFIG_OPTION_SET_OK_CHANGED;
@@ -1572,9 +1560,7 @@ config_file_option_set (struct t_config_option *option, const char *value,
new_value_ok = 0; new_value_ok = 0;
if (strncmp (value, "++", 2) == 0) if (strncmp (value, "++", 2) == 0)
{ {
error = NULL; if (util_parse_int (value + 2, 10, &number))
number = strtol (value + 2, &error, 10);
if (error && !error[0])
{ {
if (gui_color_assign_by_diff (&value_int, if (gui_color_assign_by_diff (&value_int,
gui_color_get_name (old_value), gui_color_get_name (old_value),
@@ -1584,9 +1570,7 @@ config_file_option_set (struct t_config_option *option, const char *value,
} }
else if (strncmp (value, "--", 2) == 0) else if (strncmp (value, "--", 2) == 0)
{ {
error = NULL; if (util_parse_int (value + 2, 10, &number))
number = strtol (value + 2, &error, 10);
if (error && !error[0])
{ {
if (gui_color_assign_by_diff (&value_int, if (gui_color_assign_by_diff (&value_int,
gui_color_get_name (old_value), gui_color_get_name (old_value),
@@ -1601,8 +1585,7 @@ config_file_option_set (struct t_config_option *option, const char *value,
} }
if (new_value_ok) if (new_value_ok)
{ {
if (old_value_was_null if (old_value_was_null || (value_int != old_value))
|| (value_int != old_value))
{ {
CONFIG_COLOR(option) = value_int; CONFIG_COLOR(option) = value_int;
rc = WEECHAT_CONFIG_OPTION_SET_OK_CHANGED; rc = WEECHAT_CONFIG_OPTION_SET_OK_CHANGED;
@@ -1631,9 +1614,7 @@ config_file_option_set (struct t_config_option *option, const char *value,
value_int = -1; value_int = -1;
if (strncmp (value, "++", 2) == 0) if (strncmp (value, "++", 2) == 0)
{ {
error = NULL; if (util_parse_int (value + 2, 10, &number))
number = strtol (value + 2, &error, 10);
if (error && !error[0])
{ {
number = number % (option->max + 1); number = number % (option->max + 1);
value_int = (old_value + number) % value_int = (old_value + number) %
@@ -1642,9 +1623,7 @@ config_file_option_set (struct t_config_option *option, const char *value,
} }
else if (strncmp (value, "--", 2) == 0) else if (strncmp (value, "--", 2) == 0)
{ {
error = NULL; if (util_parse_int (value + 2, 10, &number))
number = strtol (value + 2, &error, 10);
if (error && !error[0])
{ {
number = number % (option->max + 1); number = number % (option->max + 1);
value_int = (old_value + (option->max + 1) - number) % value_int = (old_value + (option->max + 1) - number) %
@@ -1664,8 +1643,7 @@ config_file_option_set (struct t_config_option *option, const char *value,
} }
if (value_int >= 0) if (value_int >= 0)
{ {
if (old_value_was_null if (old_value_was_null || (value_int != old_value))
|| (value_int != old_value))
{ {
CONFIG_ENUM(option) = value_int; CONFIG_ENUM(option) = value_int;
rc = WEECHAT_CONFIG_OPTION_SET_OK_CHANGED; rc = WEECHAT_CONFIG_OPTION_SET_OK_CHANGED;
@@ -1888,9 +1866,7 @@ config_file_option_set_default (struct t_config_option *option,
const char *value, const char *value,
int run_callback) int run_callback)
{ {
int value_int, i, rc, new_value_ok, old_value_was_null, old_value; int value_int, i, rc, new_value_ok, old_value_was_null, old_value, number;
long number;
char *error;
if (!option) if (!option)
return WEECHAT_CONFIG_OPTION_SET_ERROR; return WEECHAT_CONFIG_OPTION_SET_ERROR;
@@ -1965,42 +1941,34 @@ config_file_option_set_default (struct t_config_option *option,
new_value_ok = 0; new_value_ok = 0;
if (strncmp (value, "++", 2) == 0) if (strncmp (value, "++", 2) == 0)
{ {
error = NULL; if (util_parse_int (value + 2, 10, &number)
number = strtol (value + 2, &error, 10); && ((long)old_value + (long)number <= (long)(option->max)))
if (error && !error[0])
{ {
value_int = old_value + number; value_int = old_value + number;
if (value_int <= option->max) new_value_ok = 1;
new_value_ok = 1;
} }
} }
else if (strncmp (value, "--", 2) == 0) else if (strncmp (value, "--", 2) == 0)
{ {
error = NULL; if (util_parse_int (value + 2, 10, &number)
number = strtol (value + 2, &error, 10); && ((long)old_value - (long)number >= (long)(option->min)))
if (error && !error[0])
{ {
value_int = old_value - number; value_int = old_value - number;
if (value_int >= option->min) new_value_ok = 1;
new_value_ok = 1;
} }
} }
else else
{ {
error = NULL; if (util_parse_int (value, 10, &number))
number = strtol (value, &error, 10);
if (error && !error[0])
{ {
value_int = number; value_int = number;
if ((value_int >= option->min) if ((value_int >= option->min) && (value_int <= option->max))
&& (value_int <= option->max))
new_value_ok = 1; new_value_ok = 1;
} }
} }
if (new_value_ok) if (new_value_ok)
{ {
if (old_value_was_null if (old_value_was_null || (value_int != old_value))
|| (value_int != old_value))
{ {
CONFIG_INTEGER_DEFAULT(option) = value_int; CONFIG_INTEGER_DEFAULT(option) = value_int;
rc = WEECHAT_CONFIG_OPTION_SET_OK_CHANGED; rc = WEECHAT_CONFIG_OPTION_SET_OK_CHANGED;
@@ -2044,9 +2012,7 @@ config_file_option_set_default (struct t_config_option *option,
new_value_ok = 0; new_value_ok = 0;
if (strncmp (value, "++", 2) == 0) if (strncmp (value, "++", 2) == 0)
{ {
error = NULL; if (util_parse_int (value + 2, 10, &number))
number = strtol (value + 2, &error, 10);
if (error && !error[0])
{ {
if (gui_color_assign_by_diff (&value_int, if (gui_color_assign_by_diff (&value_int,
gui_color_get_name (old_value), gui_color_get_name (old_value),
@@ -2056,9 +2022,7 @@ config_file_option_set_default (struct t_config_option *option,
} }
else if (strncmp (value, "--", 2) == 0) else if (strncmp (value, "--", 2) == 0)
{ {
error = NULL; if (util_parse_int (value + 2, 10, &number))
number = strtol (value + 2, &error, 10);
if (error && !error[0])
{ {
if (gui_color_assign_by_diff (&value_int, if (gui_color_assign_by_diff (&value_int,
gui_color_get_name (old_value), gui_color_get_name (old_value),
@@ -2073,8 +2037,7 @@ config_file_option_set_default (struct t_config_option *option,
} }
if (new_value_ok) if (new_value_ok)
{ {
if (old_value_was_null if (old_value_was_null || (value_int != old_value))
|| (value_int != old_value))
{ {
CONFIG_COLOR_DEFAULT(option) = value_int; CONFIG_COLOR_DEFAULT(option) = value_int;
rc = WEECHAT_CONFIG_OPTION_SET_OK_CHANGED; rc = WEECHAT_CONFIG_OPTION_SET_OK_CHANGED;
@@ -2103,9 +2066,7 @@ config_file_option_set_default (struct t_config_option *option,
value_int = -1; value_int = -1;
if (strncmp (value, "++", 2) == 0) if (strncmp (value, "++", 2) == 0)
{ {
error = NULL; if (util_parse_int (value + 2, 10, &number))
number = strtol (value + 2, &error, 10);
if (error && !error[0])
{ {
number = number % (option->max + 1); number = number % (option->max + 1);
value_int = (old_value + number) % value_int = (old_value + number) %
@@ -2114,9 +2075,7 @@ config_file_option_set_default (struct t_config_option *option,
} }
else if (strncmp (value, "--", 2) == 0) else if (strncmp (value, "--", 2) == 0)
{ {
error = NULL; if (util_parse_int (value + 2, 10, &number))
number = strtol (value + 2, &error, 10);
if (error && !error[0])
{ {
number = number % (option->max + 1); number = number % (option->max + 1);
value_int = (old_value + (option->max + 1) - number) % value_int = (old_value + (option->max + 1) - number) %
@@ -2136,8 +2095,7 @@ config_file_option_set_default (struct t_config_option *option,
} }
if (value_int >= 0) if (value_int >= 0)
{ {
if (old_value_was_null if (old_value_was_null || (value_int != old_value))
|| (value_int != old_value))
{ {
CONFIG_ENUM_DEFAULT(option) = value_int; CONFIG_ENUM_DEFAULT(option) = value_int;
rc = WEECHAT_CONFIG_OPTION_SET_OK_CHANGED; rc = WEECHAT_CONFIG_OPTION_SET_OK_CHANGED;
@@ -2597,7 +2555,7 @@ config_file_option_set_with_string (const char *option_name, const char *value)
struct t_config_file *ptr_config; struct t_config_file *ptr_config;
struct t_config_section *ptr_section; struct t_config_section *ptr_section;
struct t_config_option *ptr_option; struct t_config_option *ptr_option;
char *pos_option; const char *pos_option;
rc = WEECHAT_CONFIG_OPTION_SET_OPTION_NOT_FOUND; rc = WEECHAT_CONFIG_OPTION_SET_OPTION_NOT_FOUND;
@@ -3156,7 +3114,7 @@ config_file_write_internal (struct t_config_file *config_file,
{ {
int rc; int rc;
long file_perms; long file_perms;
char *filename, *filename2, resolved_path[PATH_MAX], *error; char *filename, *filename2, resolved_path[PATH_MAX];
struct t_config_section *ptr_section; struct t_config_section *ptr_section;
struct t_config_option *ptr_option; struct t_config_option *ptr_option;
@@ -3307,9 +3265,7 @@ config_file_write_internal (struct t_config_file *config_file,
config_file->file = NULL; config_file->file = NULL;
/* update file mode */ /* update file mode */
error = NULL; if (!util_parse_long (CONFIG_STRING(config_look_config_permissions), 8, &file_perms))
file_perms = strtol (CONFIG_STRING(config_look_config_permissions), &error, 8);
if (!error || error[0])
file_perms = 0600; file_perms = 0600;
if (chmod (filename2, file_perms) < 0) if (chmod (filename2, file_perms) < 0)
{ {
@@ -3382,18 +3338,15 @@ config_file_write (struct t_config_file *config_file)
int int
config_file_parse_version (const char *version) config_file_parse_version (const char *version)
{ {
long number; int number;
char *error;
if (!version) if (!version)
return -1; return -1;
error = NULL; if (!util_parse_int (version, 10, &number) || (number < 1))
number = strtoll (version, &error, 10);
if (!error || error[0])
return -1; return -1;
return (number < 1) ? -1 : (int)number; return number;
} }
/* /*
+1 -1
View File
@@ -286,7 +286,7 @@ extern void config_file_search_with_string (const char *option_name,
struct t_config_file **config_file, struct t_config_file **config_file,
struct t_config_section **section, struct t_config_section **section,
struct t_config_option **option, struct t_config_option **option,
char **pos_option_name); const char **pos_option_name);
extern int config_file_string_to_boolean (const char *text); extern int config_file_string_to_boolean (const char *text);
extern int config_file_option_reset (struct t_config_option *option, extern int config_file_option_reset (struct t_config_option *option,
int run_callback); int run_callback);
+21 -35
View File
@@ -50,6 +50,7 @@
#include "core-proxy.h" #include "core-proxy.h"
#include "core-string.h" #include "core-string.h"
#include "core-sys.h" #include "core-sys.h"
#include "core-util.h"
#include "core-version.h" #include "core-version.h"
#include "../gui/gui-bar.h" #include "../gui/gui-bar.h"
#include "../gui/gui-bar-item.h" #include "../gui/gui-bar-item.h"
@@ -1708,7 +1709,7 @@ config_weechat_update_cb (const void *pointer, void *data,
int version_read, int version_read,
struct t_hashtable *data_read) struct t_hashtable *data_read)
{ {
const char *ptr_config, *ptr_section, *ptr_option, *ptr_value; const char *ptr_config, *ptr_section, *ptr_option, *ptr_value, *pos_option;
char *new_commands[][2] = { char *new_commands[][2] = {
/* old command, new command */ /* old command, new command */
{ "/input jump_smart", "/buffer jump smart" }, { "/input jump_smart", "/buffer jump smart" },
@@ -1738,7 +1739,7 @@ config_weechat_update_cb (const void *pointer, void *data,
{ "number_desc" "-buffer.number" }, { "number_desc" "-buffer.number" },
{ NULL, NULL }, { NULL, NULL },
}; };
char *new_option, *new_value, *pos_option; char *new_option, *new_value;
int changes, i; int changes, i;
/* make C compiler happy */ /* make C compiler happy */
@@ -2147,19 +2148,14 @@ void
config_weechat_palette_change_cb (const void *pointer, void *data, config_weechat_palette_change_cb (const void *pointer, void *data,
struct t_config_option *option) struct t_config_option *option)
{ {
char *error;
int number; int number;
/* make C compiler happy */ /* make C compiler happy */
(void) pointer; (void) pointer;
(void) data; (void) data;
error = NULL; if (util_parse_int (option->name, 10, &number))
number = (int)strtol (option->name, &error, 10);
if (error && !error[0])
{
gui_color_palette_add (number, CONFIG_STRING(option)); gui_color_palette_add (number, CONFIG_STRING(option));
}
} }
/* /*
@@ -2174,7 +2170,6 @@ config_weechat_palette_create_option_cb (const void *pointer, void *data,
const char *value) const char *value)
{ {
struct t_config_option *ptr_option; struct t_config_option *ptr_option;
char *error;
int rc, number; int rc, number;
/* make C compiler happy */ /* make C compiler happy */
@@ -2183,9 +2178,7 @@ config_weechat_palette_create_option_cb (const void *pointer, void *data,
rc = WEECHAT_CONFIG_OPTION_SET_ERROR; rc = WEECHAT_CONFIG_OPTION_SET_ERROR;
error = NULL; if (util_parse_int (option_name, 10, &number))
number = (int)strtol (option_name, &error, 10);
if (error && !error[0])
{ {
if (option_name) if (option_name)
{ {
@@ -2243,7 +2236,6 @@ config_weechat_palette_delete_option_cb (const void *pointer, void *data,
struct t_config_section *section, struct t_config_section *section,
struct t_config_option *option) struct t_config_option *option)
{ {
char *error;
int number; int number;
/* make C compiler happy */ /* make C compiler happy */
@@ -2252,9 +2244,7 @@ config_weechat_palette_delete_option_cb (const void *pointer, void *data,
(void) config_file; (void) config_file;
(void) section; (void) section;
error = NULL; if (util_parse_int (option->name, 10, &number))
number = (int)strtol (option->name, &error, 10);
if (error && !error[0])
gui_color_palette_remove (number); gui_color_palette_remove (number);
config_file_option_free (option, 1); config_file_option_free (option, 1);
@@ -2272,7 +2262,8 @@ config_weechat_proxy_read_cb (const void *pointer, void *data,
struct t_config_section *section, struct t_config_section *section,
const char *option_name, const char *value) const char *option_name, const char *value)
{ {
char *pos_option, *proxy_name; const char *pos_option;
char *proxy_name;
struct t_proxy *ptr_temp_proxy; struct t_proxy *ptr_temp_proxy;
int index_option; int index_option;
@@ -2351,7 +2342,8 @@ config_weechat_bar_read_cb (const void *pointer, void *data,
struct t_config_section *section, struct t_config_section *section,
const char *option_name, const char *value) const char *option_name, const char *value)
{ {
char *pos_option, *bar_name; const char *pos_option;
char *bar_name;
struct t_gui_bar *ptr_temp_bar; struct t_gui_bar *ptr_temp_bar;
int index_option; int index_option;
@@ -2431,7 +2423,8 @@ config_weechat_custom_bar_item_read_cb (const void *pointer, void *data,
struct t_config_section *section, struct t_config_section *section,
const char *option_name, const char *value) const char *option_name, const char *value)
{ {
char *pos_option, *item_name; const char *pos_option;
char *item_name;
struct t_gui_bar_item_custom *ptr_temp_item; struct t_gui_bar_item_custom *ptr_temp_item;
int index_option; int index_option;
@@ -2521,10 +2514,10 @@ config_weechat_layout_read_cb (const void *pointer, void *data,
struct t_config_section *section, struct t_config_section *section,
const char *option_name, const char *value) const char *option_name, const char *value)
{ {
int argc, force_current_layout; int argc, force_current_layout, number1, number2, number3, number4;
char **argv, *pos, *layout_name, *error1, *error2, *error3, *error4; const char *pos;
char **argv, *layout_name;
const char *ptr_option_name; const char *ptr_option_name;
long number1, number2, number3, number4;
struct t_gui_layout *ptr_layout; struct t_gui_layout *ptr_layout;
struct t_gui_layout_window *parent; struct t_gui_layout_window *parent;
@@ -2582,9 +2575,7 @@ config_weechat_layout_read_cb (const void *pointer, void *data,
{ {
if (argc >= 3) if (argc >= 3)
{ {
error1 = NULL; if (util_parse_int (argv[2], 10, &number1))
number1 = strtol (argv[2], &error1, 10);
if (error1 && !error1[0])
gui_layout_buffer_add (ptr_layout, argv[0], argv[1], number1); gui_layout_buffer_add (ptr_layout, argv[0], argv[1], number1);
} }
string_free_split (argv); string_free_split (argv);
@@ -2601,16 +2592,10 @@ config_weechat_layout_read_cb (const void *pointer, void *data,
{ {
if (argc >= 6) if (argc >= 6)
{ {
error1 = NULL; if (util_parse_int (argv[0], 10, &number1)
number1 = strtol (argv[0], &error1, 10); && util_parse_int (argv[1], 10, &number2)
error2 = NULL; && util_parse_int (argv[2], 10, &number3)
number2 = strtol (argv[1], &error2, 10); && util_parse_int (argv[3], 10, &number4))
error3 = NULL;
number3 = strtol (argv[2], &error3, 10);
error4 = NULL;
number4 = strtol (argv[3], &error4, 10);
if (error1 && !error1[0] && error2 && !error2[0]
&& error3 && !error3[0] && error4 && !error4[0])
{ {
parent = gui_layout_window_search_by_id (ptr_layout->layout_windows, parent = gui_layout_window_search_by_id (ptr_layout->layout_windows,
number2); number2);
@@ -3781,6 +3766,7 @@ config_weechat_init_options (void)
NULL, 0, 0, NULL, 0, 0,
"${away} " "${away} "
"|| ${buffer.num_displayed} == 0 " "|| ${buffer.num_displayed} == 0 "
"|| ${info:relay_client_count,api,connected} > 0 "
"|| ${info:relay_client_count,weechat,connected} > 0", "|| ${info:relay_client_count,weechat,connected} > 0",
NULL, 0, NULL, 0,
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL); NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL);
-62
View File
@@ -1223,14 +1223,9 @@ dir_file_compress_zstd (const char *from, const char *to,
void *buffer_in, *buffer_out; void *buffer_in, *buffer_out;
size_t buffer_in_size, buffer_out_size, num_read, remaining; size_t buffer_in_size, buffer_out_size, num_read, remaining;
int rc; int rc;
#if ZSTD_VERSION_NUMBER >= 10400 /* zstd ≥ 1.4.0 */
ZSTD_CCtx *cctx = NULL; ZSTD_CCtx *cctx = NULL;
ZSTD_EndDirective mode; ZSTD_EndDirective mode;
int finished, last_chunk; int finished, last_chunk;
#else /* zstd < 1.4.0 */
ZSTD_CStream *cstream = NULL;
size_t result, to_read;
#endif
ZSTD_inBuffer input; ZSTD_inBuffer input;
ZSTD_outBuffer output; ZSTD_outBuffer output;
@@ -1259,7 +1254,6 @@ dir_file_compress_zstd (const char *from, const char *to,
if (!dest) if (!dest)
goto end; goto end;
#if ZSTD_VERSION_NUMBER >= 10400 /* zstd ≥ 1.4.0 */
cctx = ZSTD_createCCtx (); cctx = ZSTD_createCCtx ();
if (!cctx) if (!cctx)
goto error; goto error;
@@ -1296,77 +1290,21 @@ dir_file_compress_zstd (const char *from, const char *to,
if (last_chunk) if (last_chunk)
break; break;
} }
#else /* zstd < 1.4.0 */
cstream = ZSTD_createCStream ();
if (!cstream)
goto error;
result = ZSTD_initCStream (cstream, compression_level);
if (ZSTD_isError (result))
goto error;
to_read = buffer_in_size;
while ((num_read = fread (buffer_in, 1, buffer_in_size, source)))
{
input.src = buffer_in;
input.size = num_read;
input.pos = 0;
while (input.pos < input.size)
{
output.dst = buffer_out;
output.size = buffer_out_size;
output.pos = 0;
to_read = ZSTD_compressStream (cstream, &output , &input);
if (ZSTD_isError (to_read))
goto error;
if (to_read > buffer_in_size)
to_read = buffer_in_size;
if ((fwrite (buffer_out, 1, output.pos, dest) != output.pos)
|| ferror (dest))
{
goto error;
}
}
}
output.dst = buffer_out;
output.size = buffer_out_size;
output.pos = 0;
remaining = ZSTD_endStream (cstream, &output);
if (remaining)
goto error;
if ((fwrite (buffer_out, 1, output.pos, dest) != output.pos)
|| ferror (dest))
{
goto error;
}
#endif
rc = 1; rc = 1;
goto end; goto end;
error: error:
#if ZSTD_VERSION_NUMBER >= 10400 /* zstd ≥ 1.4.0 */
if (cctx) if (cctx)
{ {
ZSTD_freeCCtx (cctx); ZSTD_freeCCtx (cctx);
cctx = NULL; cctx = NULL;
} }
#else /* zstd < 1.4.0 */
if (cstream)
{
ZSTD_freeCStream (cstream);
cstream = NULL;
}
#endif
unlink (to); unlink (to);
end: end:
#if ZSTD_VERSION_NUMBER >= 10400 /* zstd ≥ 1.4.0 */
if (cctx) if (cctx)
ZSTD_freeCCtx (cctx); ZSTD_freeCCtx (cctx);
#else /* zstd < 1.4.0 */
if (cstream)
ZSTD_freeCStream (cstream);
#endif
free (buffer_in); free (buffer_in);
free (buffer_out); free (buffer_out);
+50 -61
View File
@@ -28,6 +28,7 @@
#include <stdlib.h> #include <stdlib.h>
#include <string.h> #include <string.h>
#include <stdarg.h> #include <stdarg.h>
#include <errno.h>
#include <regex.h> #include <regex.h>
#include <time.h> #include <time.h>
#include <sys/time.h> #include <sys/time.h>
@@ -314,8 +315,6 @@ eval_string_range_chars (const char *range)
char1 = utf8_char_int (range); char1 = utf8_char_int (range);
/* next char must be '-' */ /* next char must be '-' */
if (!range[0])
goto end;
ptr_char = utf8_next_char (range); ptr_char = utf8_next_char (range);
if (!ptr_char || !ptr_char[0] || (ptr_char[0] != '-')) if (!ptr_char || !ptr_char[0] || (ptr_char[0] != '-'))
goto end; goto end;
@@ -400,9 +399,8 @@ char *
eval_string_cut (const char *text, int screen) eval_string_cut (const char *text, int screen)
{ {
const char *pos, *pos2; const char *pos, *pos2;
char *tmp, *error, *value; char *tmp, *value;
int count_suffix; int count_suffix, number;
long number;
count_suffix = 0; count_suffix = 0;
if (text[0] == '+') if (text[0] == '+')
@@ -423,9 +421,7 @@ eval_string_cut (const char *text, int screen)
if (!tmp) if (!tmp)
return strdup (""); return strdup ("");
error = NULL; if (!util_parse_int (tmp, 10, &number) || (number < 0))
number = strtol (tmp, &error, 10);
if (!error || error[0] || (number < 0))
{ {
free (tmp); free (tmp);
return strdup (""); return strdup ("");
@@ -453,8 +449,8 @@ char *
eval_string_repeat (const char *text) eval_string_repeat (const char *text)
{ {
const char *pos; const char *pos;
char *tmp, *error; char *tmp;
long number; int number;
pos = strchr (text, ','); pos = strchr (text, ',');
if (!pos) if (!pos)
@@ -464,9 +460,7 @@ eval_string_repeat (const char *text)
if (!tmp) if (!tmp)
return strdup (""); return strdup ("");
error = NULL; if (!util_parse_int (tmp, 10, &number) || (number < 0))
number = strtol (tmp, &error, 10);
if (!error || error[0] || (number < 0))
{ {
free (tmp); free (tmp);
return strdup (""); return strdup ("");
@@ -514,10 +508,11 @@ eval_string_repeat (const char *text)
char * char *
eval_string_split (const char *text) eval_string_split (const char *text)
{ {
char *pos, *pos2, *pos3, *str_number, *separators, **items, *value, *error; const char *pos, *pos2, *pos3;
char *str_number, *separators, **items, *value;
char str_value[32], *str_flags, **list_flags, *strip_items, **ptr_flag; char str_value[32], *str_flags, **list_flags, *strip_items, **ptr_flag;
int num_items, count_items, random_item, flags; int num_items, count_items, random_item, flags, max_items;
long number, max_items; long number;
str_number = NULL; str_number = NULL;
separators = NULL; separators = NULL;
@@ -550,9 +545,7 @@ eval_string_split (const char *text)
} }
else else
{ {
error = NULL; if (!util_parse_long (str_number, 10, &number) || (number == 0))
number = strtol (str_number, &error, 10);
if (!error || error[0] || (number == 0))
goto end; goto end;
} }
@@ -590,9 +583,8 @@ eval_string_split (const char *text)
} }
else if (strncmp (*ptr_flag, "max_items=", 10) == 0) else if (strncmp (*ptr_flag, "max_items=", 10) == 0)
{ {
error = NULL; if (!util_parse_int (*ptr_flag + 10, 10, &max_items)
max_items = strtol (*ptr_flag + 10, &error, 10); || (max_items < 0))
if (!error || error[0] || (max_items < 0))
goto end; goto end;
} }
} }
@@ -664,7 +656,8 @@ end:
char * char *
eval_string_split_shell (const char *text) eval_string_split_shell (const char *text)
{ {
char *pos, *str_number, **items, *value, *error, str_value[32]; const char *pos;
char *str_number, **items, *value, str_value[32];
int num_items, count_items, random_item; int num_items, count_items, random_item;
long number; long number;
@@ -693,9 +686,7 @@ eval_string_split_shell (const char *text)
} }
else else
{ {
error = NULL; if (!util_parse_long (str_number, 10, &number) || (number == 0))
number = strtol (str_number, &error, 10);
if (!error || error[0] || (number == 0))
goto end; goto end;
} }
@@ -746,11 +737,11 @@ end:
char * char *
eval_string_regex_group (const char *text, struct t_eval_context *eval_context) eval_string_regex_group (const char *text, struct t_eval_context *eval_context)
{ {
char str_value[64], *error; char str_value[64];
long number; long number;
if (!eval_context->regex || !eval_context->regex->result) if (!eval_context->regex || !eval_context->regex->result)
return strdup (""); goto end;
if (strcmp (text, "#") == 0) if (strcmp (text, "#") == 0)
{ {
@@ -772,10 +763,8 @@ eval_string_regex_group (const char *text, struct t_eval_context *eval_context)
} }
else else
{ {
error = NULL; if (!util_parse_long (text, 10, &number))
number = strtol (text, &error, 10); goto end;
if (!error || error[0])
number = -1;
} }
if ((number >= 0) && (number <= eval_context->regex->last_match)) if ((number >= 0) && (number <= eval_context->regex->last_match))
{ {
@@ -786,6 +775,7 @@ eval_string_regex_group (const char *text, struct t_eval_context *eval_context)
eval_context->regex->match[number].rm_so); eval_context->regex->match[number].rm_so);
} }
end:
return strdup (""); return strdup ("");
} }
@@ -1058,7 +1048,8 @@ eval_string_if (const char *text, struct t_eval_context *eval_context)
char * char *
eval_string_random (const char *text) eval_string_random (const char *text)
{ {
char *pos, *error, *tmp, result[128]; const char *pos;
char *tmp, result[128];
long long min_number, max_number; long long min_number, max_number;
if (!text || !text[0]) if (!text || !text[0])
@@ -1071,18 +1062,14 @@ eval_string_random (const char *text)
tmp = string_strndup (text, pos - text); tmp = string_strndup (text, pos - text);
if (!tmp) if (!tmp)
goto error; goto error;
error = NULL; if (!util_parse_longlong (tmp, 10, &min_number))
min_number = strtoll (tmp, &error, 10);
if (!error || error[0])
{ {
free (tmp); free (tmp);
goto error; goto error;
} }
free (tmp); free (tmp);
error = NULL; if (!util_parse_longlong (pos + 1, 10, &max_number))
max_number = strtoll (pos + 1, &error, 10);
if (!error || error[0])
goto error; goto error;
if (min_number > max_number) if (min_number > max_number)
@@ -1128,7 +1115,8 @@ eval_string_translate (const char *text)
void void
eval_string_define (const char *text, struct t_eval_context *eval_context) eval_string_define (const char *text, struct t_eval_context *eval_context)
{ {
char *pos, *name; const char *pos;
char *name;
pos = strchr (text, ','); pos = strchr (text, ',');
if (!pos) if (!pos)
@@ -1155,7 +1143,8 @@ eval_hdata_count (const char *text, struct t_eval_context *eval_context)
struct t_hdata *hdata; struct t_hdata *hdata;
unsigned long ptr_value; unsigned long ptr_value;
void *pointer; void *pointer;
char *pos1, *pos2, *value, *hdata_name, *pointer_name, str_count[64]; const char *pos1, *pos2;
char *value, *hdata_name, *pointer_name, str_count[64];
int rc, count; int rc, count;
value = NULL; value = NULL;
@@ -1227,8 +1216,8 @@ char *
eval_hdata_get_value (struct t_hdata *hdata, void *pointer, const char *path, eval_hdata_get_value (struct t_hdata *hdata, void *pointer, const char *path,
struct t_eval_context *eval_context) struct t_eval_context *eval_context)
{ {
char *value, *var_name, str_value[128], *pos, *property; char *value, *var_name, str_value[128], *property;
const char *ptr_value, *hdata_name, *ptr_var_name, *pos_open_paren; const char *ptr_value, *hdata_name, *ptr_var_name, *pos, *pos_open_paren;
int type, debug_id; int type, debug_id;
struct t_hashtable *hashtable; struct t_hashtable *hashtable;
@@ -1555,8 +1544,8 @@ eval_syntax_highlight_add_markers (const char *prefix, const char *text,
char * char *
eval_syntax_highlight_colorize (const char *value) eval_syntax_highlight_colorize (const char *value)
{ {
const char *ptr_value; const char *ptr_value, *pos;
char **result, *pos; char **result;
int color; int color;
if (!value) if (!value)
@@ -2224,17 +2213,20 @@ eval_compare (const char *expr1, int comparison, const char *expr2,
if (!string_compare) if (!string_compare)
{ {
errno = 0;
error = NULL;
value1 = strtod (expr1, &error); value1 = strtod (expr1, &error);
if (!error || error[0]) if (!error || error[0] || (errno == ERANGE))
{ string_compare = 1;
}
if (!string_compare)
{
errno = 0;
error = NULL;
value2 = strtod (expr2, &error);
if (!error || error[0] || (errno == ERANGE))
string_compare = 1; string_compare = 1;
}
else
{
value2 = strtod (expr2, &error);
if (!error || error[0])
string_compare = 1;
}
} }
if (string_compare) if (string_compare)
@@ -2683,10 +2675,9 @@ eval_expression (const char *expr, struct t_hashtable *pointers,
{ {
struct t_eval_context context, *eval_context; struct t_eval_context context, *eval_context;
struct t_hashtable *user_vars; struct t_hashtable *user_vars;
int condition, rc, pointers_allocated, regex_allocated, debug_id; int condition, rc, pointers_allocated, regex_allocated, debug_id, debug_level;
int ptr_window_added, ptr_buffer_added; int ptr_window_added, ptr_buffer_added;
long number; char *value;
char *value, *error;
const char *default_prefix = EVAL_DEFAULT_PREFIX; const char *default_prefix = EVAL_DEFAULT_PREFIX;
const char *default_suffix = EVAL_DEFAULT_SUFFIX; const char *default_suffix = EVAL_DEFAULT_SUFFIX;
const char *ptr_value, *regex_replace; const char *ptr_value, *regex_replace;
@@ -2826,11 +2817,9 @@ eval_expression (const char *expr, struct t_hashtable *pointers,
ptr_value = hashtable_get (options, "debug"); ptr_value = hashtable_get (options, "debug");
if (ptr_value && ptr_value[0]) if (ptr_value && ptr_value[0])
{ {
error = NULL; if (util_parse_int (ptr_value, 10, &debug_level) && (debug_level >= 1))
number = strtol (ptr_value, &error, 10);
if (error && !error[0] && (number >= 1))
{ {
eval_context->debug_level = (int)number; eval_context->debug_level = debug_level;
eval_context->debug_output = string_dyn_alloc (256); eval_context->debug_output = string_dyn_alloc (256);
} }
} }
+19 -31
View File
@@ -35,6 +35,7 @@
#include "core-hashtable.h" #include "core-hashtable.h"
#include "core-log.h" #include "core-log.h"
#include "core-string.h" #include "core-string.h"
#include "core-util.h"
#include "../plugins/plugin.h" #include "../plugins/plugin.h"
@@ -262,9 +263,7 @@ hdata_get_var_array_size (struct t_hdata *hdata, void *pointer,
{ {
struct t_hdata_var *var; struct t_hdata_var *var;
const char *ptr_size; const char *ptr_size;
char *error; int i, offset, value;
long value;
int i, offset;
void *ptr_value; void *ptr_value;
if (!hdata || !name) if (!hdata || !name)
@@ -340,10 +339,8 @@ hdata_get_var_array_size (struct t_hdata *hdata, void *pointer,
else else
{ {
/* check if the size is a valid integer */ /* check if the size is a valid integer */
error = NULL; if (util_parse_int (ptr_size, 10, &value))
value = strtol (ptr_size, &error, 10); return value;
if (error && !error[0])
return (int)value;
} }
} }
@@ -691,8 +688,9 @@ hdata_count (struct t_hdata *hdata, void *pointer)
void void
hdata_get_index_and_name (const char *name, int *index, const char **ptr_name) hdata_get_index_and_name (const char *name, int *index, const char **ptr_name)
{ {
char *pos, *str_index, *error; const char *pos;
long number; char *str_index;
int number;
if (index) if (index)
*index = -1; *index = -1;
@@ -708,9 +706,7 @@ hdata_get_index_and_name (const char *name, int *index, const char **ptr_name)
str_index = string_strndup (name, pos - name); str_index = string_strndup (name, pos - name);
if (str_index) if (str_index)
{ {
error = NULL; if (util_parse_int (str_index, 10, &number))
number = strtol (str_index, &error, 10);
if (error && !error[0])
{ {
if (index) if (index)
*index = number; *index = number;
@@ -1246,11 +1242,11 @@ hdata_set (struct t_hdata *hdata, void *pointer, const char *name,
const char *value) const char *value)
{ {
struct t_hdata_var *var; struct t_hdata_var *var;
char **ptr_string, *error; char **ptr_string;
long number;
long long number_longlong;
unsigned long ptr; unsigned long ptr;
int rc; int rc, number_int;
long number_long;
long long number_longlong;
if (!hdata->update_pending) if (!hdata->update_pending)
return 0; return 0;
@@ -1270,27 +1266,21 @@ hdata_set (struct t_hdata *hdata, void *pointer, const char *name,
*((char *)(pointer + var->offset)) = (value) ? value[0] : '\0'; *((char *)(pointer + var->offset)) = (value) ? value[0] : '\0';
return 1; return 1;
case WEECHAT_HDATA_INTEGER: case WEECHAT_HDATA_INTEGER:
error = NULL; if (util_parse_int (value, 10, &number_int))
number = strtol (value, &error, 10);
if (error && !error[0])
{ {
*((int *)(pointer + var->offset)) = (int)number; *((int *)(pointer + var->offset)) = number_int;
return 1; return 1;
} }
break; break;
case WEECHAT_HDATA_LONG: case WEECHAT_HDATA_LONG:
error = NULL; if (util_parse_long (value, 10, &number_long))
number = strtol (value, &error, 10);
if (error && !error[0])
{ {
*((long *)(pointer + var->offset)) = number; *((long *)(pointer + var->offset)) = number_long;
return 1; return 1;
} }
break; break;
case WEECHAT_HDATA_LONGLONG: case WEECHAT_HDATA_LONGLONG:
error = NULL; if (util_parse_longlong (value, 10, &number_longlong))
number_longlong = strtoll (value, &error, 10);
if (error && !error[0])
{ {
*((long long *)(pointer + var->offset)) = number_longlong; *((long long *)(pointer + var->offset)) = number_longlong;
return 1; return 1;
@@ -1323,11 +1313,9 @@ hdata_set (struct t_hdata *hdata, void *pointer, const char *name,
} }
break; break;
case WEECHAT_HDATA_TIME: case WEECHAT_HDATA_TIME:
error = NULL; if (util_parse_longlong (value, 10, &number_longlong) && (number_longlong >= 0))
number = strtol (value, &error, 10);
if (error && !error[0] && (number >= 0))
{ {
*((time_t *)(pointer + var->offset)) = (time_t)number; *((time_t *)(pointer + var->offset)) = (time_t)number_longlong;
return 1; return 1;
} }
break; break;
+5 -11
View File
@@ -560,9 +560,7 @@ void
hook_set (struct t_hook *hook, const char *property, const char *value) hook_set (struct t_hook *hook, const char *property, const char *value)
{ {
ssize_t num_written; ssize_t num_written;
char *error; int rc, number;
long number;
int rc;
/* invalid hook? */ /* invalid hook? */
if (!hook_valid (hook)) if (!hook_valid (hook))
@@ -605,22 +603,20 @@ hook_set (struct t_hook *hook, const char *property, const char *value)
&& (hook->type == HOOK_TYPE_PROCESS) && (hook->type == HOOK_TYPE_PROCESS)
&& (HOOK_PROCESS(hook, child_pid) > 0)) && (HOOK_PROCESS(hook, child_pid) > 0))
{ {
error = NULL; if (!util_parse_int (value, 10, &number))
number = strtol (value, &error, 10);
if (!error || error[0])
{ {
/* not a number? look for signal by name */ /* not a number? look for signal by name */
number = signal_search_name (value); number = signal_search_name (value);
} }
if (number >= 0) if (number >= 0)
{ {
rc = kill (HOOK_PROCESS(hook, child_pid), (int)number); rc = kill (HOOK_PROCESS(hook, child_pid), number);
if (rc < 0) if (rc < 0)
{ {
gui_chat_printf (NULL, gui_chat_printf (NULL,
_("%sError sending signal %d to pid %d: %s"), _("%sError sending signal %d to pid %d: %s"),
gui_chat_prefix[GUI_CHAT_PREFIX_ERROR], gui_chat_prefix[GUI_CHAT_PREFIX_ERROR],
(int)number, number,
HOOK_PROCESS(hook, child_pid), HOOK_PROCESS(hook, child_pid),
strerror (errno)); strerror (errno));
} }
@@ -633,9 +629,7 @@ hook_set (struct t_hook *hook, const char *property, const char *value)
&& ((hook->type == HOOK_TYPE_COMMAND) && ((hook->type == HOOK_TYPE_COMMAND)
|| (hook->type == HOOK_TYPE_COMMAND_RUN))) || (hook->type == HOOK_TYPE_COMMAND_RUN)))
{ {
error = NULL; if (util_parse_int (value, 10, &number))
number = strtol (value, &error, 10);
if (error && !error[0])
{ {
switch (hook->type) switch (hook->type)
{ {
+8 -3
View File
@@ -242,8 +242,8 @@ int
input_data (struct t_gui_buffer *buffer, const char *data, input_data (struct t_gui_buffer *buffer, const char *data,
const char *commands_allowed, int split_newline, int user_data) const char *commands_allowed, int split_newline, int user_data)
{ {
char *pos, str_buffer[128], *new_data, *buffer_full_name; const char *ptr_data_for_buffer;
const char *ptr_data, *ptr_data_for_buffer; char *pos, str_buffer[128], *new_data, *buffer_full_name, *ptr_data;
int first_command, rc; int first_command, rc;
if (!buffer || !gui_buffer_valid (buffer) || !data) if (!buffer || !gui_buffer_valid (buffer) || !data)
@@ -272,8 +272,13 @@ input_data (struct t_gui_buffer *buffer, const char *data,
if (data[0] && new_data && !new_data[0]) if (data[0] && new_data && !new_data[0])
goto end; goto end;
if (!new_data)
new_data = strdup (data);
if (!new_data)
goto end;
first_command = 1; first_command = 1;
ptr_data = (new_data) ? new_data : data; ptr_data = new_data;
while (ptr_data) while (ptr_data)
{ {
/* /*
+5 -10
View File
@@ -58,6 +58,7 @@
#include "core-config.h" #include "core-config.h"
#include "core-proxy.h" #include "core-proxy.h"
#include "core-string.h" #include "core-string.h"
#include "core-util.h"
#include "../gui/gui-chat.h" #include "../gui/gui-chat.h"
#include "../plugins/plugin.h" #include "../plugins/plugin.h"
@@ -1588,11 +1589,9 @@ int
network_connect_child_read_cb (const void *pointer, void *data, int fd) network_connect_child_read_cb (const void *pointer, void *data, int fd)
{ {
struct t_hook *hook_connect; struct t_hook *hook_connect;
char buffer[1], buf_size[6], *cb_error, *cb_ip_address, *error; char buffer[1], buf_size[6], *cb_error, *cb_ip_address;
int num_read;
long size_msg; long size_msg;
int rc, direction; int rc, num_read, direction, sock, i;
int sock, i;
struct msghdr msg; struct msghdr msg;
struct cmsghdr *cmsg; struct cmsghdr *cmsg;
char msg_buf[CMSG_SPACE(sizeof (sock))]; char msg_buf[CMSG_SPACE(sizeof (sock))];
@@ -1621,9 +1620,7 @@ network_connect_child_read_cb (const void *pointer, void *data, int fd)
buf_size, 5); buf_size, 5);
if (num_read == 5) if (num_read == 5)
{ {
error = NULL; if (util_parse_long (buf_size, 10, &size_msg) && (size_msg > 0))
size_msg = strtol (buf_size, &error, 10);
if (error && !error[0] && (size_msg > 0))
{ {
cb_ip_address = malloc (size_msg + 1); cb_ip_address = malloc (size_msg + 1);
if (cb_ip_address) if (cb_ip_address)
@@ -1758,9 +1755,7 @@ network_connect_child_read_cb (const void *pointer, void *data, int fd)
buf_size, 5); buf_size, 5);
if (num_read == 5) if (num_read == 5)
{ {
error = NULL; if (util_parse_long (buf_size, 10, &size_msg) && (size_msg > 0))
size_msg = strtol (buf_size, &error, 10);
if (error && !error[0] && (size_msg > 0))
{ {
cb_error = malloc (size_msg + 1); cb_error = malloc (size_msg + 1);
if (cb_error) if (cb_error)
+13 -18
View File
@@ -55,6 +55,7 @@
#include "core-eval.h" #include "core-eval.h"
#include "core-hashtable.h" #include "core-hashtable.h"
#include "core-utf8.h" #include "core-utf8.h"
#include "core-util.h"
#include "../gui/gui-chat.h" #include "../gui/gui-chat.h"
#include "../gui/gui-color.h" #include "../gui/gui-color.h"
#include "../plugins/plugin.h" #include "../plugins/plugin.h"
@@ -1685,9 +1686,8 @@ string_mask_to_regex (const char *mask)
const char * const char *
string_regex_flags (const char *regex, int default_flags, int *flags) string_regex_flags (const char *regex, int default_flags, int *flags)
{ {
const char *ptr_regex, *ptr_flags; const char *ptr_regex, *ptr_flags, *pos;
int set_flag, flag; int set_flag, flag;
char *pos;
if (flags) if (flags)
*flags = default_flags; *flags = default_flags;
@@ -2965,8 +2965,9 @@ char **
string_split_command (const char *command, char separator) string_split_command (const char *command, char separator)
{ {
int nb_substr, arr_idx, str_idx, type; int nb_substr, arr_idx, str_idx, type;
const char *p;
char **array, **array2; char **array, **array2;
char *buffer, *p; char *buffer;
const char *ptr; const char *ptr;
if (!command || !command[0]) if (!command || !command[0])
@@ -3434,7 +3435,7 @@ unsigned long long
string_parse_size (const char *size) string_parse_size (const char *size)
{ {
const char *pos; const char *pos;
char *str_number, *error; char *str_number;
long long number; long long number;
unsigned long long result; unsigned long long result;
@@ -3457,11 +3458,7 @@ string_parse_size (const char *size)
if (!str_number) if (!str_number)
goto end; goto end;
error = NULL; if (!util_parse_longlong (str_number, 10, &number) || (number < 0))
number = strtoll (str_number, &error, 10);
if (!error || error[0])
goto end;
if (number < 0)
goto end; goto end;
while (pos[0] == ' ') while (pos[0] == ' ')
@@ -4141,8 +4138,7 @@ string_is_command_char (const char *string)
const char * const char *
string_input_for_buffer (const char *string) string_input_for_buffer (const char *string)
{ {
char *pos_slash, *pos_space, *pos_newline; const char *pos_slash, *pos_space, *pos_newline, *next_char;
const char *next_char;
if (!string) if (!string)
return NULL; return NULL;
@@ -4479,8 +4475,9 @@ string_get_priority_and_name (const char *string,
int *priority, const char **name, int *priority, const char **name,
int default_priority) int default_priority)
{ {
char *pos, *str_priority, *error; const char *pos;
long number; char *str_priority;
int number;
if (priority) if (priority)
*priority = default_priority; *priority = default_priority;
@@ -4496,17 +4493,15 @@ string_get_priority_and_name (const char *string,
str_priority = string_strndup (string, pos - string); str_priority = string_strndup (string, pos - string);
if (str_priority) if (str_priority)
{ {
error = NULL; if (util_parse_int (str_priority, 10, &number))
number = strtol (str_priority, &error, 10);
if (error && !error[0])
{ {
if (priority) if (priority)
*priority = number; *priority = number;
if (name)
*name = pos + 1;
} }
free (str_priority); free (str_priority);
} }
if (name)
*name = pos + 1;
} }
} }
+2 -4
View File
@@ -181,7 +181,7 @@ void
sys_setrlimit (void) sys_setrlimit (void)
{ {
#ifdef HAVE_SYS_RESOURCE_H #ifdef HAVE_SYS_RESOURCE_H
char **items, *pos, *error; char **items, *pos;
int num_items, i; int num_items, i;
long long number; long long number;
@@ -198,9 +198,7 @@ sys_setrlimit (void)
if (pos) if (pos)
{ {
pos[0] = '\0'; pos[0] = '\0';
error = NULL; if (util_parse_longlong (pos + 1, 10, &number) && (number >= -1))
number = strtoll (pos + 1, &error, 10);
if (error && !error[0])
{ {
sys_setrlimit_resource (items[i], number); sys_setrlimit_resource (items[i], number);
} }
+3 -8
View File
@@ -410,7 +410,7 @@ upgrade_weechat_read_buffer (struct t_infolist *infolist)
struct t_gui_buffer *ptr_buffer; struct t_gui_buffer *ptr_buffer;
const char *key, *var_name, *name, *plugin_name, *ptr_id; const char *key, *var_name, *name, *plugin_name, *ptr_id;
const char *str; const char *str;
char option_name[64], *option_key, *option_var, *error; char option_name[64], *option_key, *option_var;
int index, main_buffer; int index, main_buffer;
long long id; long long id;
@@ -421,9 +421,7 @@ upgrade_weechat_read_buffer (struct t_infolist *infolist)
ptr_id = infolist_string (infolist, "id"); ptr_id = infolist_string (infolist, "id");
if (ptr_id) if (ptr_id)
{ {
error = NULL; if (!util_parse_longlong (ptr_id, 10, &id))
id = strtoll (ptr_id, &error, 10);
if (!error || error[0])
id = -1; id = -1;
} }
} }
@@ -712,7 +710,6 @@ upgrade_weechat_read_nicklist (struct t_infolist *infolist)
{ {
struct t_gui_nick_group *ptr_group; struct t_gui_nick_group *ptr_group;
const char *type, *name, *group_name, *ptr_id; const char *type, *name, *group_name, *ptr_id;
char *error;
long long id; long long id;
if (!upgrade_current_buffer) if (!upgrade_current_buffer)
@@ -731,9 +728,7 @@ upgrade_weechat_read_nicklist (struct t_infolist *infolist)
ptr_id = infolist_string (infolist, "id"); ptr_id = infolist_string (infolist, "id");
if (ptr_id) if (ptr_id)
{ {
error = NULL; if (!util_parse_longlong (ptr_id, 10, &id))
id = strtoll (ptr_id, &error, 10);
if (!error || error[0])
id = -1; id = -1;
} }
} }
+8 -10
View File
@@ -416,8 +416,8 @@ util_strftimeval (char *string, int max, const char *format, struct timeval *tv)
int int
util_parse_time (const char *datetime, struct timeval *tv) util_parse_time (const char *datetime, struct timeval *tv)
{ {
char *string, *pos, *pos2, *pos_colon, *pos_hyphen, *pos_dot; const char *pos_colon, *pos_hyphen, *pos_dot;
char str_usec[16], *error, str_date[128]; char *pos, *pos2, *string, str_usec[16], str_date[128];
struct tm tm_date, tm_date_gm, tm_date_local, *local_time; struct tm tm_date, tm_date_gm, tm_date_local, *local_time;
time_t time_now, time_gm, time_local; time_t time_now, time_gm, time_local;
long long value; long long value;
@@ -488,9 +488,7 @@ util_parse_time (const char *datetime, struct timeval *tv)
{ {
strcat (str_usec, "0"); strcat (str_usec, "0");
} }
error = NULL; if (util_parse_longlong (str_usec, 10, &value))
value = strtoll (str_usec, &error, 10);
if (error && !error[0])
{ {
/* /*
* just in case: this should not happen as minus is not * just in case: this should not happen as minus is not
@@ -655,9 +653,7 @@ util_parse_time (const char *datetime, struct timeval *tv)
else else
{ {
/* timestamp format: "1704402062" */ /* timestamp format: "1704402062" */
error = NULL; if (util_parse_longlong (string, 10, &value) && (value >= 0))
value = strtoll (string, &error, 10);
if (error && !error[0] && (value >= 0))
{ {
tv->tv_sec = (time_t)value; tv->tv_sec = (time_t)value;
rc = 1; rc = 1;
@@ -777,9 +773,10 @@ util_parse_delay (const char *string_delay, unsigned long long default_factor,
if (!str_number) if (!str_number)
return 0; return 0;
errno = 0;
error = NULL; error = NULL;
*delay = strtoull (str_number, &error, 10); *delay = strtoull (str_number, &error, 10);
if (!error || error[0]) if ((errno == ERANGE) || !error || error[0])
{ {
free (str_number); free (str_number);
*delay = 0; *delay = 0;
@@ -846,9 +843,10 @@ util_version_number (const char *version)
buf[index_buf] = '\0'; buf[index_buf] = '\0';
if (buf[0]) if (buf[0])
{ {
errno = 0;
error = NULL; error = NULL;
number = strtoul (buf, &error, 10); number = strtoul (buf, &error, 10);
if (error && !error[0]) if ((errno != ERANGE) && error && !error[0])
{ {
if (number > 0xFF) if (number > 0xFF)
number = 0xFF; number = 0xFF;
+2 -2
View File
@@ -597,8 +597,8 @@ hook_command_exec (struct t_gui_buffer *buffer, int any_plugin,
struct t_hook *hook_plugin, *hook_other_plugin, *hook_other_plugin2; struct t_hook *hook_plugin, *hook_other_plugin, *hook_other_plugin2;
struct t_hook *hook_incomplete_command; struct t_hook *hook_incomplete_command;
struct t_hook_exec_cb hook_exec_cb; struct t_hook_exec_cb hook_exec_cb;
char **argv, **argv_eol, *command_name, *pos; char **argv, **argv_eol, *command_name;
const char *ptr_string; const char *ptr_string, *pos;
int argc, rc, length_command_name, allow_incomplete_commands; int argc, rc, length_command_name, allow_incomplete_commands;
int count_other_plugin, count_incomplete_commands, flags; int count_other_plugin, count_incomplete_commands, flags;
+5 -6
View File
@@ -41,6 +41,7 @@
#include "../core-log.h" #include "../core-log.h"
#include "../core-string.h" #include "../core-string.h"
#include "../core-url.h" #include "../core-url.h"
#include "../core-util.h"
#include "../../gui/gui-chat.h" #include "../../gui/gui-chat.h"
#include "../../plugins/plugin.h" #include "../../plugins/plugin.h"
@@ -88,9 +89,9 @@ hook_process_hashtable (struct t_weechat_plugin *plugin,
{ {
struct t_hook *new_hook; struct t_hook *new_hook;
struct t_hook_process *new_hook_process; struct t_hook_process *new_hook_process;
char *stdout_buffer, *stderr_buffer, *error; char *stdout_buffer, *stderr_buffer;
const char *ptr_value; const char *ptr_value;
long number; int number;
stdout_buffer = NULL; stdout_buffer = NULL;
stderr_buffer = NULL; stderr_buffer = NULL;
@@ -149,12 +150,10 @@ hook_process_hashtable (struct t_weechat_plugin *plugin,
ptr_value = hashtable_get (options, "buffer_flush"); ptr_value = hashtable_get (options, "buffer_flush");
if (ptr_value && ptr_value[0]) if (ptr_value && ptr_value[0])
{ {
error = NULL; if (util_parse_int (ptr_value, 10, &number)
number = strtol (ptr_value, &error, 10);
if (error && !error[0]
&& (number >= 1) && (number <= HOOK_PROCESS_BUFFER_SIZE)) && (number >= 1) && (number <= HOOK_PROCESS_BUFFER_SIZE))
{ {
new_hook_process->buffer_flush = (int)number; new_hook_process->buffer_flush = number;
} }
} }
} }
+2 -1
View File
@@ -132,7 +132,8 @@ void
hook_signal_extract_flags (const char *signal, const char **ptr_signal, hook_signal_extract_flags (const char *signal, const char **ptr_signal,
int *stop_on_error, int *ignore_eat) int *stop_on_error, int *ignore_eat)
{ {
char *pos, *str_flags, **flags; const char *pos;
char *str_flags, **flags;
int i, num_flags; int i, num_flags;
if (!signal || !ptr_signal || !stop_on_error || !ignore_eat) if (!signal || !ptr_signal || !stop_on_error || !ignore_eat)
+2
View File
@@ -56,6 +56,8 @@
#define WEECHAT_COPYRIGHT_DATE "(C) 2003-2026" #define WEECHAT_COPYRIGHT_DATE "(C) 2003-2026"
#define WEECHAT_WEBSITE "https://weechat.org/" #define WEECHAT_WEBSITE "https://weechat.org/"
#define WEECHAT_WEBSITE_DOWNLOAD "https://weechat.org/download/" #define WEECHAT_WEBSITE_DOWNLOAD "https://weechat.org/download/"
#define WEECHAT_AUTHOR_NAME "Sébastien Helleu"
#define WEECHAT_AUTHOR_EMAIL "flashcode@flashtux.org"
/* log file */ /* log file */
#define WEECHAT_LOG_NAME "weechat.log" #define WEECHAT_LOG_NAME "weechat.log"
+7 -18
View File
@@ -37,6 +37,7 @@
#include "../../core/core-list.h" #include "../../core/core-list.h"
#include "../../core/core-string.h" #include "../../core/core-string.h"
#include "../../core/core-utf8.h" #include "../../core/core-utf8.h"
#include "../../core/core-util.h"
#include "../../plugins/plugin.h" #include "../../plugins/plugin.h"
#include "../gui-buffer.h" #include "../gui-buffer.h"
#include "../gui-color.h" #include "../gui-color.h"
@@ -225,7 +226,6 @@ int
gui_color_assign (int *color, const char *color_name) gui_color_assign (int *color, const char *color_name)
{ {
int flag, extra_attr, color_index, number; int flag, extra_attr, color_index, number;
char *error;
/* read extended attributes */ /* read extended attributes */
extra_attr = 0; extra_attr = 0;
@@ -244,9 +244,7 @@ gui_color_assign (int *color, const char *color_name)
} }
/* is it a color number? */ /* is it a color number? */
error = NULL; if (color_name[0] && util_parse_int (color_name, 10, &number) && (number >= 0))
number = (int)strtol (color_name, &error, 10);
if (color_name[0] && error && !error[0] && (number >= 0))
{ {
/* color_name is a number, use this color number */ /* color_name is a number, use this color number */
if (number > GUI_COLOR_EXTENDED_MAX) if (number > GUI_COLOR_EXTENDED_MAX)
@@ -1357,7 +1355,6 @@ gui_color_palette_add_alias_cb (void *data,
const void *key, const void *value) const void *key, const void *value)
{ {
struct t_gui_color_palette *color_palette; struct t_gui_color_palette *color_palette;
char *error;
int number; int number;
/* make C compiler happy */ /* make C compiler happy */
@@ -1368,9 +1365,7 @@ gui_color_palette_add_alias_cb (void *data,
if (color_palette && color_palette->alias) if (color_palette && color_palette->alias)
{ {
error = NULL; if (util_parse_int ((const char *)key, 10, &number))
number = (int)strtol ((char *)key, &error, 10);
if (error && !error[0])
{ {
hashtable_set (gui_color_hash_palette_alias, hashtable_set (gui_color_hash_palette_alias,
color_palette->alias, color_palette->alias,
@@ -1437,8 +1432,7 @@ struct t_gui_color_palette *
gui_color_palette_new (int number, const char *value) gui_color_palette_new (int number, const char *value)
{ {
struct t_gui_color_palette *new_color_palette; struct t_gui_color_palette *new_color_palette;
char **items, *pos, *pos2, *error1, *error2, *error3; char **items, *pos, *pos2, *str_alias, *str_rgb, str_number[64];
char *str_alias, *str_rgb, str_number[64];
int num_items, i, r, g, b; int num_items, i, r, g, b;
if (!value) if (!value)
@@ -1490,16 +1484,11 @@ gui_color_palette_new (int number, const char *value)
if (pos2) if (pos2)
{ {
pos2[0] = '\0'; pos2[0] = '\0';
error1 = NULL; if (util_parse_int (str_rgb, 10, &r)
r = (int)strtol (str_rgb, &error1, 10);
error2 = NULL;
g = (int)strtol (pos + 1, &error2, 10);
error3 = NULL;
b = (int)strtol (pos2 + 1, &error3, 10);
if (error1 && !error1[0] && error2 && !error2[0]
&& error3 && !error3[0]
&& (r >= 0) && (r <= 1000) && (r >= 0) && (r <= 1000)
&& util_parse_int (pos + 1, 10, &g)
&& (g >= 0) && (g <= 1000) && (g >= 0) && (g <= 1000)
&& util_parse_int (pos2 + 1, 10, &b)
&& (b >= 0) && (b <= 1000)) && (b >= 0) && (b <= 1000))
{ {
new_color_palette->r = r; new_color_palette->r = r;
+1 -1
View File
@@ -186,7 +186,7 @@ gui_key_default_bindings (int context, int create_option)
BIND("meta-w,meta-b", "/window balance"); BIND("meta-w,meta-b", "/window balance");
BIND("meta-w,meta-s", "/window swap"); BIND("meta-w,meta-s", "/window swap");
BIND("meta-z", "/window zoom"); BIND("meta-z", "/window zoom");
BIND("meta-=", "/filter toggle"); BIND("meta-=", "/mute /filter toggle");
BIND("meta--", "/filter toggle @"); BIND("meta--", "/filter toggle @");
BIND("meta-0", "/buffer *10"); BIND("meta-0", "/buffer *10");
BIND("meta-1", "/buffer *1"); BIND("meta-1", "/buffer *1");
+6 -12
View File
@@ -36,6 +36,7 @@
#include "../../core/core-hook.h" #include "../../core/core-hook.h"
#include "../../core/core-string.h" #include "../../core/core-string.h"
#include "../../core/core-utf8.h" #include "../../core/core-utf8.h"
#include "../../core/core-util.h"
#include "../../plugins/plugin.h" #include "../../plugins/plugin.h"
#include "../gui-bar.h" #include "../gui-bar.h"
#include "../gui-bar-window.h" #include "../gui-bar-window.h"
@@ -355,10 +356,9 @@ gui_mouse_event_concat_gesture (char *key)
const char * const char *
gui_mouse_event_name_sgr (const char *key) gui_mouse_event_name_sgr (const char *key)
{ {
int length, num_items, is_release; int length, num_items, is_release, button, x, y;
char **items, *error; char **items;
static char mouse_key[128]; static char mouse_key[128];
long button, x, y;
if (!key || !key[0]) if (!key || !key[0])
return NULL; return NULL;
@@ -372,14 +372,10 @@ gui_mouse_event_name_sgr (const char *key)
if (num_items < 3) if (num_items < 3)
goto error; goto error;
error = NULL; if (!util_parse_int (items[0], 10, &button))
button = strtol (items[0], &error, 10);
if (!error || error[0])
goto error; goto error;
error = NULL; if (!util_parse_int (items[1], 10, &x))
x = strtol (items[1], &error, 10);
if (!error || error[0])
goto error; goto error;
x = (x >= 1) ? x - 1 : 0; x = (x >= 1) ? x - 1 : 0;
@@ -388,9 +384,7 @@ gui_mouse_event_name_sgr (const char *key)
goto error; goto error;
is_release = (items[2][length - 1] == 'm') ? 1 : 0; is_release = (items[2][length - 1] == 'm') ? 1 : 0;
items[2][length - 1] = '\0'; items[2][length - 1] = '\0';
error = NULL; if (!util_parse_int (items[2], 10, &y))
y = strtol (items[2], &error, 10);
if (!error || error[0])
goto error; goto error;
y = (y >= 1) ? y - 1 : 0; y = (y >= 1) ? y - 1 : 0;
+24 -51
View File
@@ -41,6 +41,7 @@
#include "../../core/core-hook.h" #include "../../core/core-hook.h"
#include "../../core/core-log.h" #include "../../core/core-log.h"
#include "../../core/core-string.h" #include "../../core/core-string.h"
#include "../../core/core-util.h"
#include "../../plugins/plugin.h" #include "../../plugins/plugin.h"
#include "../gui-window.h" #include "../gui-window.h"
#include "../gui-bar.h" #include "../gui-bar.h"
@@ -641,7 +642,7 @@ void
gui_window_string_apply_color_fg (unsigned char **string, WINDOW *window) gui_window_string_apply_color_fg (unsigned char **string, WINDOW *window)
{ {
unsigned char *ptr_string; unsigned char *ptr_string;
char str_fg[6], *error; char str_fg[6];
int fg, extra_attr, flag; int fg, extra_attr, flag;
ptr_string = *string; ptr_string = *string;
@@ -662,9 +663,7 @@ gui_window_string_apply_color_fg (unsigned char **string, WINDOW *window)
{ {
memcpy (str_fg, ptr_string, 5); memcpy (str_fg, ptr_string, 5);
str_fg[5] = '\0'; str_fg[5] = '\0';
error = NULL; if (util_parse_int (str_fg, 10, &fg))
fg = (int)strtol (str_fg, &error, 10);
if (error && !error[0])
{ {
gui_window_set_custom_color_fg (window, gui_window_set_custom_color_fg (window,
fg | GUI_COLOR_EXTENDED_FLAG | extra_attr); fg | GUI_COLOR_EXTENDED_FLAG | extra_attr);
@@ -688,9 +687,7 @@ gui_window_string_apply_color_fg (unsigned char **string, WINDOW *window)
str_fg[0] = ptr_string[0]; str_fg[0] = ptr_string[0];
str_fg[1] = ptr_string[1]; str_fg[1] = ptr_string[1];
str_fg[2] = '\0'; str_fg[2] = '\0';
error = NULL; if (util_parse_int (str_fg, 10, &fg))
fg = (int)strtol (str_fg, &error, 10);
if (error && !error[0])
{ {
gui_window_set_custom_color_fg (window, fg | extra_attr); gui_window_set_custom_color_fg (window, fg | extra_attr);
} }
@@ -713,7 +710,7 @@ void
gui_window_string_apply_color_bg (unsigned char **string, WINDOW *window) gui_window_string_apply_color_bg (unsigned char **string, WINDOW *window)
{ {
unsigned char *ptr_string; unsigned char *ptr_string;
char str_bg[6], *error; char str_bg[6];
int bg; int bg;
ptr_string = *string; ptr_string = *string;
@@ -727,9 +724,7 @@ gui_window_string_apply_color_bg (unsigned char **string, WINDOW *window)
{ {
memcpy (str_bg, ptr_string + 1, 5); memcpy (str_bg, ptr_string + 1, 5);
str_bg[5] = '\0'; str_bg[5] = '\0';
error = NULL; if (util_parse_int (str_bg, 10, &bg))
bg = (int)strtol (str_bg, &error, 10);
if (error && !error[0])
{ {
gui_window_set_custom_color_bg (window, gui_window_set_custom_color_bg (window,
bg | GUI_COLOR_EXTENDED_FLAG); bg | GUI_COLOR_EXTENDED_FLAG);
@@ -747,9 +742,7 @@ gui_window_string_apply_color_bg (unsigned char **string, WINDOW *window)
str_bg[0] = ptr_string[0]; str_bg[0] = ptr_string[0];
str_bg[1] = ptr_string[1]; str_bg[1] = ptr_string[1];
str_bg[2] = '\0'; str_bg[2] = '\0';
error = NULL; if (util_parse_int (str_bg, 10, &bg))
bg = (int)strtol (str_bg, &error, 10);
if (error && !error[0])
{ {
gui_window_set_custom_color_bg (window, bg); gui_window_set_custom_color_bg (window, bg);
} }
@@ -772,7 +765,7 @@ void
gui_window_string_apply_color_fg_bg (unsigned char **string, WINDOW *window) gui_window_string_apply_color_fg_bg (unsigned char **string, WINDOW *window)
{ {
unsigned char *ptr_string; unsigned char *ptr_string;
char str_fg[6], str_bg[6], *error; char str_fg[6], str_bg[6];
int fg, bg, extra_attr, flag; int fg, bg, extra_attr, flag;
ptr_string = *string; ptr_string = *string;
@@ -797,12 +790,10 @@ gui_window_string_apply_color_fg_bg (unsigned char **string, WINDOW *window)
{ {
memcpy (str_fg, ptr_string, 5); memcpy (str_fg, ptr_string, 5);
str_fg[5] = '\0'; str_fg[5] = '\0';
error = NULL; if (util_parse_int (str_fg, 10, &fg))
fg = (int)strtol (str_fg, &error, 10);
if (!error || error[0])
fg = -1;
else
fg |= GUI_COLOR_EXTENDED_FLAG | extra_attr; fg |= GUI_COLOR_EXTENDED_FLAG | extra_attr;
else
fg = -1;
} }
ptr_string += 5; ptr_string += 5;
} }
@@ -822,12 +813,10 @@ gui_window_string_apply_color_fg_bg (unsigned char **string, WINDOW *window)
str_fg[0] = ptr_string[0]; str_fg[0] = ptr_string[0];
str_fg[1] = ptr_string[1]; str_fg[1] = ptr_string[1];
str_fg[2] = '\0'; str_fg[2] = '\0';
error = NULL; if (util_parse_int (str_fg, 10, &fg))
fg = (int)strtol (str_fg, &error, 10);
if (!error || error[0])
fg = -1;
else
fg |= extra_attr; fg |= extra_attr;
else
fg = -1;
} }
ptr_string += 2; ptr_string += 2;
} }
@@ -849,12 +838,10 @@ gui_window_string_apply_color_fg_bg (unsigned char **string, WINDOW *window)
{ {
memcpy (str_bg, ptr_string + 1, 5); memcpy (str_bg, ptr_string + 1, 5);
str_bg[5] = '\0'; str_bg[5] = '\0';
error = NULL; if (util_parse_int (str_bg, 10, &bg))
bg = (int)strtol (str_bg, &error, 10);
if (!error || error[0])
bg = -1;
else
bg |= GUI_COLOR_EXTENDED_FLAG; bg |= GUI_COLOR_EXTENDED_FLAG;
else
bg = -1;
} }
ptr_string += 6; ptr_string += 6;
} }
@@ -868,9 +855,7 @@ gui_window_string_apply_color_fg_bg (unsigned char **string, WINDOW *window)
str_bg[0] = ptr_string[0]; str_bg[0] = ptr_string[0];
str_bg[1] = ptr_string[1]; str_bg[1] = ptr_string[1];
str_bg[2] = '\0'; str_bg[2] = '\0';
error = NULL; if (!util_parse_int (str_bg, 10, &bg))
bg = (int)strtol (str_bg, &error, 10);
if (!error || error[0])
bg = -1; bg = -1;
} }
ptr_string += 2; ptr_string += 2;
@@ -896,7 +881,7 @@ void
gui_window_string_apply_color_pair (unsigned char **string, WINDOW *window) gui_window_string_apply_color_pair (unsigned char **string, WINDOW *window)
{ {
unsigned char *ptr_string; unsigned char *ptr_string;
char str_pair[6], *error; char str_pair[6];
int pair; int pair;
ptr_string = *string; ptr_string = *string;
@@ -909,12 +894,8 @@ gui_window_string_apply_color_pair (unsigned char **string, WINDOW *window)
{ {
memcpy (str_pair, ptr_string, 5); memcpy (str_pair, ptr_string, 5);
str_pair[5] = '\0'; str_pair[5] = '\0';
error = NULL; if (util_parse_int (str_pair, 10, &pair))
pair = (int)strtol (str_pair, &error, 10);
if (error && !error[0])
{
gui_window_set_custom_color_pair (window, pair); gui_window_set_custom_color_pair (window, pair);
}
} }
ptr_string += 5; ptr_string += 5;
} }
@@ -933,7 +914,7 @@ void
gui_window_string_apply_color_weechat (unsigned char **string, WINDOW *window) gui_window_string_apply_color_weechat (unsigned char **string, WINDOW *window)
{ {
unsigned char *ptr_string; unsigned char *ptr_string;
char str_number[3], *error; char str_number[3];
int weechat_color; int weechat_color;
ptr_string = *string; ptr_string = *string;
@@ -945,13 +926,8 @@ gui_window_string_apply_color_weechat (unsigned char **string, WINDOW *window)
str_number[0] = ptr_string[0]; str_number[0] = ptr_string[0];
str_number[1] = ptr_string[1]; str_number[1] = ptr_string[1];
str_number[2] = '\0'; str_number[2] = '\0';
error = NULL; if (util_parse_int (str_number, 10, &weechat_color))
weechat_color = (int)strtol (str_number, &error, 10); gui_window_set_weechat_color (window, weechat_color);
if (error && !error[0])
{
gui_window_set_weechat_color (window,
weechat_color);
}
} }
ptr_string += 2; ptr_string += 2;
} }
@@ -2520,7 +2496,6 @@ void
gui_window_bare_display_toggle (const char *delay) gui_window_bare_display_toggle (const char *delay)
{ {
long seconds; long seconds;
char *error;
gui_window_bare_display ^= 1; gui_window_bare_display ^= 1;
@@ -2532,9 +2507,7 @@ gui_window_bare_display_toggle (const char *delay)
gui_mouse_disable (); gui_mouse_disable ();
if (delay) if (delay)
{ {
error = NULL; if (util_parse_long (delay, 10, &seconds) && (seconds >= 0))
seconds = strtol (delay, &error, 10);
if (error && !error[0] && (seconds >= 0))
{ {
if (gui_window_bare_display_timer) if (gui_window_bare_display_timer)
{ {
+4 -3
View File
@@ -47,7 +47,7 @@ void
daemonize (void) daemonize (void)
{ {
pid_t pid; pid_t pid;
int fd, i; int fd, i, rc;
printf ("%s ", _("Running WeeChat in background...")); printf ("%s ", _("Running WeeChat in background..."));
@@ -77,8 +77,9 @@ daemonize (void)
close (i); close (i);
} }
fd = open ("/dev/null", O_RDWR); fd = open ("/dev/null", O_RDWR);
(void) dup (fd); rc = dup (fd);
(void) dup (fd); rc = dup (fd);
(void) rc;
} }
/* /*
+2 -1
View File
@@ -138,7 +138,8 @@ gui_bar_item_custom_search (const char *item_name)
struct t_gui_bar_item_custom * struct t_gui_bar_item_custom *
gui_bar_item_custom_search_with_option_name (const char *option_name) gui_bar_item_custom_search_with_option_name (const char *option_name)
{ {
char *item_name, *pos_option; const char *pos_option;
char *item_name;
struct t_gui_bar_item_custom *ptr_item; struct t_gui_bar_item_custom *ptr_item;
if (!option_name) if (!option_name)
+11 -15
View File
@@ -1880,9 +1880,9 @@ gui_bar_item_buffer_nicklist_cb (const void *pointer, void *data,
{ {
if (strchr (ptr_nick->prefix_color, '.')) if (strchr (ptr_nick->prefix_color, '.'))
{ {
config_file_search_with_string (ptr_nick->prefix_color, config_file_search_with_string (
NULL, NULL, &ptr_option, ptr_nick->prefix_color,
NULL); NULL, NULL, &ptr_option, NULL);
if (ptr_option) if (ptr_option)
{ {
string_dyn_concat ( string_dyn_concat (
@@ -1907,9 +1907,9 @@ gui_bar_item_buffer_nicklist_cb (const void *pointer, void *data,
{ {
if (strchr (ptr_nick->color, '.')) if (strchr (ptr_nick->color, '.'))
{ {
config_file_search_with_string (ptr_nick->color, config_file_search_with_string (
NULL, NULL, &ptr_option, ptr_nick->color,
NULL); NULL, NULL, &ptr_option, NULL);
if (ptr_option) if (ptr_option)
{ {
string_dyn_concat ( string_dyn_concat (
@@ -1940,9 +1940,9 @@ gui_bar_item_buffer_nicklist_cb (const void *pointer, void *data,
{ {
if (strchr (ptr_group->color, '.')) if (strchr (ptr_group->color, '.'))
{ {
config_file_search_with_string (ptr_group->color, config_file_search_with_string (
NULL, NULL, &ptr_option, ptr_group->color,
NULL); NULL, NULL, &ptr_option, NULL);
if (ptr_option) if (ptr_option)
{ {
string_dyn_concat ( string_dyn_concat (
@@ -2153,7 +2153,6 @@ gui_bar_item_focus_buffer_nicklist_cb (const void *pointer,
const char *str_window, *str_buffer, *str_bar_item_line; const char *str_window, *str_buffer, *str_bar_item_line;
struct t_gui_window *window; struct t_gui_window *window;
struct t_gui_buffer *buffer; struct t_gui_buffer *buffer;
char *error;
/* make C compiler happy */ /* make C compiler happy */
(void) pointer; (void) pointer;
@@ -2162,6 +2161,8 @@ gui_bar_item_focus_buffer_nicklist_cb (const void *pointer,
str_bar_item_line = hashtable_get (info, "_bar_item_line"); str_bar_item_line = hashtable_get (info, "_bar_item_line");
if (!str_bar_item_line || !str_bar_item_line[0]) if (!str_bar_item_line || !str_bar_item_line[0])
return NULL; return NULL;
if (!util_parse_int (str_bar_item_line, 10, &bar_item_line))
return NULL;
/* get window */ /* get window */
str_window = hashtable_get (info, "_window"); str_window = hashtable_get (info, "_window");
@@ -2193,11 +2194,6 @@ gui_bar_item_focus_buffer_nicklist_cb (const void *pointer,
if (!buffer) if (!buffer)
return NULL; return NULL;
error = NULL;
bar_item_line = (int) strtol (str_bar_item_line, &error, 10);
if (!error || error[0])
return NULL;
i = 0; i = 0;
ptr_group = NULL; ptr_group = NULL;
ptr_nick = NULL; ptr_nick = NULL;
+14 -22
View File
@@ -39,6 +39,7 @@
#include "../core/core-infolist.h" #include "../core/core-infolist.h"
#include "../core/core-log.h" #include "../core/core-log.h"
#include "../core/core-string.h" #include "../core/core-string.h"
#include "../core/core-util.h"
#include "../plugins/plugin.h" #include "../plugins/plugin.h"
#include "gui-bar.h" #include "gui-bar.h"
#include "gui-bar-item.h" #include "gui-bar-item.h"
@@ -514,7 +515,8 @@ gui_bar_search (const char *name)
struct t_gui_bar * struct t_gui_bar *
gui_bar_search_with_option_name (const char *option_name) gui_bar_search_with_option_name (const char *option_name)
{ {
char *bar_name, *pos_option; const char *pos_option;
char *bar_name;
struct t_gui_bar *ptr_bar; struct t_gui_bar *ptr_bar;
if (!option_name) if (!option_name)
@@ -1018,9 +1020,7 @@ gui_bar_config_check_size (const void *pointer, void *data,
const char *value) const char *value)
{ {
struct t_gui_bar *ptr_bar; struct t_gui_bar *ptr_bar;
long number; int new_value, current_size, number;
char *error;
int new_value, current_size;
/* make C compiler happy */ /* make C compiler happy */
(void) pointer; (void) pointer;
@@ -1032,30 +1032,26 @@ gui_bar_config_check_size (const void *pointer, void *data,
new_value = -1; new_value = -1;
if (strncmp (value, "++", 2) == 0) if (strncmp (value, "++", 2) == 0)
{ {
error = NULL; if (util_parse_int (value + 2, 10, &number))
number = strtol (value + 2, &error, 10);
if (error && !error[0])
{ {
if ((number < 0) || (CONFIG_INTEGER(ptr_bar->options[GUI_BAR_OPTION_SIZE]) > INT_MAX - number))
return 0;
new_value = CONFIG_INTEGER(ptr_bar->options[GUI_BAR_OPTION_SIZE]) + number; new_value = CONFIG_INTEGER(ptr_bar->options[GUI_BAR_OPTION_SIZE]) + number;
} }
} }
else if (strncmp (value, "--", 2) == 0) else if (strncmp (value, "--", 2) == 0)
{ {
error = NULL; if (util_parse_int (value + 2, 10, &number))
number = strtol (value + 2, &error, 10);
if (error && !error[0])
{ {
if ((number < 0) || (CONFIG_INTEGER(ptr_bar->options[GUI_BAR_OPTION_SIZE]) < INT_MIN + number))
return 0;
new_value = CONFIG_INTEGER(ptr_bar->options[GUI_BAR_OPTION_SIZE]) - number; new_value = CONFIG_INTEGER(ptr_bar->options[GUI_BAR_OPTION_SIZE]) - number;
} }
} }
else else
{ {
error = NULL; if (util_parse_int (value, 10, &number))
number = strtol (value, &error, 10);
if (error && !error[0])
{
new_value = number; new_value = number;
}
} }
if (new_value < 0) if (new_value < 0)
return 0; return 0;
@@ -2062,9 +2058,8 @@ gui_bar_scroll (struct t_gui_bar *bar, struct t_gui_window *window,
const char *scroll) const char *scroll)
{ {
struct t_gui_bar_window *ptr_bar_win; struct t_gui_bar_window *ptr_bar_win;
long number; char *str;
char *str, *error; int length, add_x, add, percent, scroll_beginning, scroll_end, number;
int length, add_x, add, percent, scroll_beginning, scroll_end;
if (!bar) if (!bar)
return 0; return 0;
@@ -2132,10 +2127,7 @@ gui_bar_scroll (struct t_gui_bar *bar, struct t_gui_window *window,
if (!str) if (!str)
return 0; return 0;
error = NULL; if (!util_parse_int (str, 10, &number) || (number <= 0))
number = strtol (str, &error, 10);
if (!error || error[0] || (number <= 0))
{ {
free (str); free (str);
return 0; return 0;
+69 -98
View File
@@ -49,6 +49,7 @@
#include "../core/core-secure-buffer.h" #include "../core/core-secure-buffer.h"
#include "../core/core-string.h" #include "../core/core-string.h"
#include "../core/core-utf8.h" #include "../core/core-utf8.h"
#include "../core/core-util.h"
#include "../plugins/plugin.h" #include "../plugins/plugin.h"
#include "gui-buffer.h" #include "gui-buffer.h"
#include "gui-chat.h" #include "gui-chat.h"
@@ -1763,17 +1764,13 @@ void
gui_buffer_set_notify (struct t_gui_buffer *buffer, const char *notify) gui_buffer_set_notify (struct t_gui_buffer *buffer, const char *notify)
{ {
const char *ptr_notify; const char *ptr_notify;
char *error; int mute_old, number;
long number;
int mute_old;
if (!buffer) if (!buffer)
return; return;
ptr_notify = NULL; ptr_notify = NULL;
error = NULL; if (util_parse_int (notify, 10, &number))
number = strtol (notify, &error, 10);
if (error && !error[0])
{ {
if (number < GUI_BUFFER_NUM_NOTIFY) if (number < GUI_BUFFER_NUM_NOTIFY)
{ {
@@ -2231,9 +2228,8 @@ void
gui_buffer_set_hotlist_max_level_nicks (struct t_gui_buffer *buffer, gui_buffer_set_hotlist_max_level_nicks (struct t_gui_buffer *buffer,
const char *new_hotlist_max_level_nicks) const char *new_hotlist_max_level_nicks)
{ {
char **nicks, *pos, *error; char **nicks, *pos;
int nicks_count, value, i; int nicks_count, number, value, i;
long number;
if (!buffer) if (!buffer)
return; return;
@@ -2259,13 +2255,10 @@ gui_buffer_set_hotlist_max_level_nicks (struct t_gui_buffer *buffer,
{ {
pos[0] = '\0'; pos[0] = '\0';
pos++; pos++;
error = NULL; if (util_parse_int (pos, 10, &number))
number = strtol (pos, &error, 10); value = number;
if (error && !error[0])
value = (int)number;
} }
hashtable_set (buffer->hotlist_max_level_nicks, nicks[i], hashtable_set (buffer->hotlist_max_level_nicks, nicks[i], &value);
&value);
} }
string_free_split (nicks); string_free_split (nicks);
} }
@@ -2278,9 +2271,8 @@ void
gui_buffer_add_hotlist_max_level_nicks (struct t_gui_buffer *buffer, gui_buffer_add_hotlist_max_level_nicks (struct t_gui_buffer *buffer,
const char *nicks_to_add) const char *nicks_to_add)
{ {
char **nicks, *pos, *error; char **nicks, *pos;
int nicks_count, value, i; int nicks_count, number, value, i;
long number;
if (!buffer || !nicks_to_add) if (!buffer || !nicks_to_add)
return; return;
@@ -2301,13 +2293,10 @@ gui_buffer_add_hotlist_max_level_nicks (struct t_gui_buffer *buffer,
{ {
pos[0] = '\0'; pos[0] = '\0';
pos++; pos++;
error = NULL; if (util_parse_int (pos, 10, &number))
number = strtol (pos, &error, 10); value = number;
if (error && !error[0])
value = (int)number;
} }
hashtable_set (buffer->hotlist_max_level_nicks, nicks[i], hashtable_set (buffer->hotlist_max_level_nicks, nicks[i], &value);
&value);
} }
string_free_split (nicks); string_free_split (nicks);
} }
@@ -2453,9 +2442,7 @@ void
gui_buffer_set_unread (struct t_gui_buffer *buffer, const char *argument) gui_buffer_set_unread (struct t_gui_buffer *buffer, const char *argument)
{ {
struct t_gui_line *old_last_read_line; struct t_gui_line *old_last_read_line;
int i, old_first_line_not_read; int i, number, old_first_line_not_read;
long number;
char *error;
if (!buffer || (buffer->type != GUI_BUFFER_TYPE_FORMATTED)) if (!buffer || (buffer->type != GUI_BUFFER_TYPE_FORMATTED))
return; return;
@@ -2478,9 +2465,7 @@ gui_buffer_set_unread (struct t_gui_buffer *buffer, const char *argument)
else if (argument[0] == '-') else if (argument[0] == '-')
{ {
/* move the unread marker N lines towards the first line */ /* move the unread marker N lines towards the first line */
error = NULL; if (util_parse_int (argument, 10, &number) && (number < 0))
number = strtol (argument, &error, 10);
if (error && !error[0] && (number < 0))
{ {
for (i = 0; i > number; i--) for (i = 0; i > number; i--)
{ {
@@ -2506,9 +2491,7 @@ gui_buffer_set_unread (struct t_gui_buffer *buffer, const char *argument)
else if (argument[0] == '+') else if (argument[0] == '+')
{ {
/* move the unread marker N lines towards the last line */ /* move the unread marker N lines towards the last line */
error = NULL; if (util_parse_int (argument, 10, &number) && (number > 0))
number = strtol (argument, &error, 10);
if (error && !error[0] && (number > 0))
{ {
for (i = 0; i < number; i++) for (i = 0; i < number; i++)
{ {
@@ -2532,9 +2515,7 @@ gui_buffer_set_unread (struct t_gui_buffer *buffer, const char *argument)
else else
{ {
/* move the unread marker N lines from the end towards the first line */ /* move the unread marker N lines from the end towards the first line */
error = NULL; if (util_parse_int (argument, 10, &number) && (number > 0))
number = strtol (argument, &error, 10);
if (error && !error[0] && (number > 0))
{ {
buffer->lines->last_read_line = buffer->lines->last_line; buffer->lines->last_read_line = buffer->lines->last_line;
buffer->lines->first_line_not_read = 0; buffer->lines->first_line_not_read = 0;
@@ -2568,8 +2549,7 @@ void
gui_buffer_set (struct t_gui_buffer *buffer, const char *property, gui_buffer_set (struct t_gui_buffer *buffer, const char *property,
const char *value) const char *value)
{ {
long number; int number;
char *error;
if (!property || !value) if (!property || !value)
return; return;
@@ -2583,9 +2563,7 @@ gui_buffer_set (struct t_gui_buffer *buffer, const char *property,
gui_add_hotlist = 1; gui_add_hotlist = 1;
else if (buffer) else if (buffer)
{ {
error = NULL; if (util_parse_int (value, 10, &number))
number = strtol (value, &error, 10);
if (error && !error[0])
{ {
if (number < 0) if (number < 0)
{ {
@@ -2613,9 +2591,7 @@ gui_buffer_set (struct t_gui_buffer *buffer, const char *property,
/* properties that need a buffer */ /* properties that need a buffer */
if (strcmp (property, "hotlist_conditions") == 0) if (strcmp (property, "hotlist_conditions") == 0)
{ {
error = NULL; if (util_parse_int (value, 10, &number))
number = strtol (value, &error, 10);
if (error && !error[0])
{ {
if (number < 0) if (number < 0)
{ {
@@ -2649,9 +2625,7 @@ gui_buffer_set (struct t_gui_buffer *buffer, const char *property,
} }
else if (strcmp (property, "hidden") == 0) else if (strcmp (property, "hidden") == 0)
{ {
error = NULL; if (util_parse_int (value, 10, &number))
number = strtol (value, &error, 10);
if (error && !error[0])
{ {
if (number) if (number)
gui_buffer_hide (buffer); gui_buffer_hide (buffer);
@@ -2661,37 +2635,27 @@ gui_buffer_set (struct t_gui_buffer *buffer, const char *property,
} }
else if (strcmp (property, "print_hooks_enabled") == 0) else if (strcmp (property, "print_hooks_enabled") == 0)
{ {
error = NULL; if (util_parse_int (value, 10, &number))
number = strtol (value, &error, 10);
if (error && !error[0])
buffer->print_hooks_enabled = (number) ? 1 : 0; buffer->print_hooks_enabled = (number) ? 1 : 0;
} }
else if (strcmp (property, "day_change") == 0) else if (strcmp (property, "day_change") == 0)
{ {
error = NULL; if (util_parse_int (value, 10, &number))
number = strtol (value, &error, 10);
if (error && !error[0])
gui_buffer_set_day_change (buffer, number); gui_buffer_set_day_change (buffer, number);
} }
else if (strcmp (property, "clear") == 0) else if (strcmp (property, "clear") == 0)
{ {
error = NULL; if (util_parse_int (value, 10, &number))
number = strtol (value, &error, 10);
if (error && !error[0])
buffer->clear = (number) ? 1 : 0; buffer->clear = (number) ? 1 : 0;
} }
else if (strcmp (property, "filter") == 0) else if (strcmp (property, "filter") == 0)
{ {
error = NULL; if (util_parse_int (value, 10, &number))
number = strtol (value, &error, 10);
if (error && !error[0])
gui_buffer_set_filter (buffer, number); gui_buffer_set_filter (buffer, number);
} }
else if (strcmp (property, "number") == 0) else if (strcmp (property, "number") == 0)
{ {
error = NULL; if (util_parse_int (value, 10, &number) && (number >= 1))
number = strtol (value, &error, 10);
if (error && !error[0] && (number >= 1))
gui_buffer_move_to_number (buffer, number); gui_buffer_move_to_number (buffer, number);
} }
else if (strcmp (property, "name") == 0) else if (strcmp (property, "name") == 0)
@@ -2723,30 +2687,22 @@ gui_buffer_set (struct t_gui_buffer *buffer, const char *property,
} }
else if (strcmp (property, "time_for_each_line") == 0) else if (strcmp (property, "time_for_each_line") == 0)
{ {
error = NULL; if (util_parse_int (value, 10, &number))
number = strtol (value, &error, 10);
if (error && !error[0])
gui_buffer_set_time_for_each_line (buffer, number); gui_buffer_set_time_for_each_line (buffer, number);
} }
else if (strcmp (property, "nicklist") == 0) else if (strcmp (property, "nicklist") == 0)
{ {
error = NULL; if (util_parse_int (value, 10, &number))
number = strtol (value, &error, 10);
if (error && !error[0])
gui_buffer_set_nicklist (buffer, number); gui_buffer_set_nicklist (buffer, number);
} }
else if (strcmp (property, "nicklist_case_sensitive") == 0) else if (strcmp (property, "nicklist_case_sensitive") == 0)
{ {
error = NULL; if (util_parse_int (value, 10, &number))
number = strtol (value, &error, 10);
if (error && !error[0])
gui_buffer_set_nicklist_case_sensitive (buffer, number); gui_buffer_set_nicklist_case_sensitive (buffer, number);
} }
else if (strcmp (property, "nicklist_display_groups") == 0) else if (strcmp (property, "nicklist_display_groups") == 0)
{ {
error = NULL; if (util_parse_int (value, 10, &number))
number = strtol (value, &error, 10);
if (error && !error[0])
gui_buffer_set_nicklist_display_groups (buffer, number); gui_buffer_set_nicklist_display_groups (buffer, number);
} }
else if (strcmp (property, "highlight_words") == 0) else if (strcmp (property, "highlight_words") == 0)
@@ -2815,37 +2771,27 @@ gui_buffer_set (struct t_gui_buffer *buffer, const char *property,
} }
else if (strcmp (property, "input_pos") == 0) else if (strcmp (property, "input_pos") == 0)
{ {
error = NULL; if (util_parse_int (value, 10, &number))
number = strtol (value, &error, 10);
if (error && !error[0])
gui_input_set_pos (buffer, number); gui_input_set_pos (buffer, number);
} }
else if (strcmp (property, "input_get_any_user_data") == 0) else if (strcmp (property, "input_get_any_user_data") == 0)
{ {
error = NULL; if (util_parse_int (value, 10, &number))
number = strtol (value, &error, 10);
if (error && !error[0])
gui_buffer_set_input_get_any_user_data (buffer, number); gui_buffer_set_input_get_any_user_data (buffer, number);
} }
else if (strcmp (property, "input_get_unknown_commands") == 0) else if (strcmp (property, "input_get_unknown_commands") == 0)
{ {
error = NULL; if (util_parse_int (value, 10, &number))
number = strtol (value, &error, 10);
if (error && !error[0])
gui_buffer_set_input_get_unknown_commands (buffer, number); gui_buffer_set_input_get_unknown_commands (buffer, number);
} }
else if (strcmp (property, "input_get_empty") == 0) else if (strcmp (property, "input_get_empty") == 0)
{ {
error = NULL; if (util_parse_int (value, 10, &number))
number = strtol (value, &error, 10);
if (error && !error[0])
gui_buffer_set_input_get_empty (buffer, number); gui_buffer_set_input_get_empty (buffer, number);
} }
else if (strcmp (property, "input_multiline") == 0) else if (strcmp (property, "input_multiline") == 0)
{ {
error = NULL; if (util_parse_int (value, 10, &number))
number = strtol (value, &error, 10);
if (error && !error[0])
gui_buffer_set_input_multiline (buffer, number); gui_buffer_set_input_multiline (buffer, number);
} }
else if (strncmp (property, "localvar_set_", 13) == 0) else if (strncmp (property, "localvar_set_", 13) == 0)
@@ -3075,7 +3021,6 @@ gui_buffer_search (const char *plugin, const char *name)
struct t_gui_buffer *ptr_buffer; struct t_gui_buffer *ptr_buffer;
int plugin_match, plugin_case_sensitive, name_case_sensitive; int plugin_match, plugin_case_sensitive, name_case_sensitive;
long long id; long long id;
char *error;
if (!name || !name[0]) if (!name || !name[0])
return gui_current_window->buffer; return gui_current_window->buffer;
@@ -3085,9 +3030,9 @@ gui_buffer_search (const char *plugin, const char *name)
if (plugin && (strcmp (plugin, "==id") == 0)) if (plugin && (strcmp (plugin, "==id") == 0))
{ {
error = NULL; if (util_parse_longlong (name, 10, &id))
id = strtoll (name, &error, 10); return gui_buffer_search_by_id (id);
return (error && !error[0]) ? gui_buffer_search_by_id (id) : NULL; return NULL;
} }
plugin_case_sensitive = 1; plugin_case_sensitive = 1;
@@ -3278,6 +3223,35 @@ gui_buffer_search_by_number (int number)
return NULL; return NULL;
} }
/*
* Search for a buffer by id, full name or partial name.
*/
struct t_gui_buffer *
gui_buffer_search_by_id_name (const char *string)
{
struct t_gui_buffer *ptr_buffer;
long long id;
if (!string || !string[0])
return NULL;
ptr_buffer = NULL;
if (util_parse_longlong (string, 10, &id))
{
ptr_buffer = gui_buffer_search_by_id (id);
}
else
{
ptr_buffer = gui_buffer_search_by_full_name (string);
if (!ptr_buffer)
ptr_buffer = gui_buffer_search_by_partial_name (NULL, string);
}
return ptr_buffer;
}
/* /*
* Search for a buffer by id, number, full name or partial name. * Search for a buffer by id, number, full name or partial name.
*/ */
@@ -3287,16 +3261,13 @@ gui_buffer_search_by_id_number_name (const char *string)
{ {
struct t_gui_buffer *ptr_buffer; struct t_gui_buffer *ptr_buffer;
long long number; long long number;
char *error;
if (!string) if (!string || !string[0])
return NULL; return NULL;
ptr_buffer = NULL; ptr_buffer = NULL;
error = NULL; if (util_parse_longlong (string, 10, &number))
number = strtoll (string, &error, 10);
if (error && !error[0])
{ {
ptr_buffer = gui_buffer_search_by_id (number); ptr_buffer = gui_buffer_search_by_id (number);
if (!ptr_buffer) if (!ptr_buffer)
+1
View File
@@ -416,6 +416,7 @@ extern struct t_gui_buffer *gui_buffer_search (const char *plugin, const char *n
extern struct t_gui_buffer *gui_buffer_search_by_partial_name (const char *plugin, extern struct t_gui_buffer *gui_buffer_search_by_partial_name (const char *plugin,
const char *name); const char *name);
extern struct t_gui_buffer *gui_buffer_search_by_number (int number); extern struct t_gui_buffer *gui_buffer_search_by_number (int number);
extern struct t_gui_buffer *gui_buffer_search_by_id_name (const char *string);
extern struct t_gui_buffer *gui_buffer_search_by_id_number_name (const char *string); extern struct t_gui_buffer *gui_buffer_search_by_id_number_name (const char *string);
extern int gui_buffer_count_merged_buffers (int number); extern int gui_buffer_count_merged_buffers (int number);
extern void gui_buffer_clear (struct t_gui_buffer *buffer); extern void gui_buffer_clear (struct t_gui_buffer *buffer);
+5 -9
View File
@@ -118,8 +118,8 @@ gui_chat_init (void)
void void
gui_chat_prefix_build (void) gui_chat_prefix_build (void)
{ {
const char *ptr_prefix; const char *ptr_prefix, *pos_color;
char prefix[512], *pos_color; char prefix[512];
int prefix_color[GUI_CHAT_NUM_PREFIXES] = int prefix_color[GUI_CHAT_NUM_PREFIXES] =
{ GUI_COLOR_CHAT_PREFIX_ERROR, GUI_COLOR_CHAT_PREFIX_NETWORK, { GUI_COLOR_CHAT_PREFIX_ERROR, GUI_COLOR_CHAT_PREFIX_NETWORK,
GUI_COLOR_CHAT_PREFIX_ACTION, GUI_COLOR_CHAT_PREFIX_JOIN, GUI_COLOR_CHAT_PREFIX_ACTION, GUI_COLOR_CHAT_PREFIX_JOIN,
@@ -1400,7 +1400,7 @@ gui_chat_hsignal_quote_line_cb (const void *pointer, void *data,
struct timeval tv; struct timeval tv;
struct t_gui_line *ptr_line; struct t_gui_line *ptr_line;
int is_nick, rc; int is_nick, rc;
char str_time[128], *str, *error; char str_time[128], *str;
/* make C compiler happy */ /* make C compiler happy */
(void) pointer; (void) pointer;
@@ -1415,9 +1415,7 @@ gui_chat_hsignal_quote_line_cb (const void *pointer, void *data,
hashtable_get (hashtable, "_chat_line_date") : NULL; hashtable_get (hashtable, "_chat_line_date") : NULL;
if (ptr_date) if (ptr_date)
{ {
error = NULL; if (util_parse_longlong (ptr_date, 10, &number))
number = strtoll (ptr_date, &error, 10);
if (error && !error[0])
{ {
tv.tv_sec = (time_t)number; tv.tv_sec = (time_t)number;
tv.tv_usec = 0; tv.tv_usec = 0;
@@ -1425,9 +1423,7 @@ gui_chat_hsignal_quote_line_cb (const void *pointer, void *data,
hashtable_get (hashtable, "_chat_line_date_usec") : NULL; hashtable_get (hashtable, "_chat_line_date_usec") : NULL;
if (ptr_date_usec) if (ptr_date_usec)
{ {
error = NULL; if (util_parse_longlong (ptr_date_usec, 10, &number))
number = strtoll (ptr_date_usec, &error, 10);
if (error && !error[0])
tv.tv_usec = (long)number; tv.tv_usec = (long)number;
} }
util_strftimeval (str_time, sizeof (str_time), util_strftimeval (str_time, sizeof (str_time),
+17 -41
View File
@@ -41,6 +41,7 @@
#include "../core/core-list.h" #include "../core/core-list.h"
#include "../core/core-string.h" #include "../core/core-string.h"
#include "../core/core-utf8.h" #include "../core/core-utf8.h"
#include "../core/core-util.h"
#include "../plugins/plugin.h" #include "../plugins/plugin.h"
#include "gui-color.h" #include "gui-color.h"
#include "gui-chat.h" #include "gui-chat.h"
@@ -170,8 +171,7 @@ gui_color_search_config (const char *color_name)
/* search in any configuration file (example: "irc.color.message_quit") */ /* search in any configuration file (example: "irc.color.message_quit") */
if (strchr (color_name, '.')) if (strchr (color_name, '.'))
{ {
config_file_search_with_string (color_name, NULL, NULL, &ptr_option, config_file_search_with_string (color_name, NULL, NULL, &ptr_option, NULL);
NULL);
if (ptr_option) if (ptr_option)
return gui_color_from_option (ptr_option); return gui_color_from_option (ptr_option);
} }
@@ -255,8 +255,8 @@ gui_color_get_custom (const char *color_name)
static char color[32][96]; static char color[32][96];
static int index_color = 0; static int index_color = 0;
char color_fg[32], color_bg[32]; char color_fg[32], color_bg[32];
char *pos_delim, *str_fg, *pos_bg, *error, *color_attr; char *str_fg, *color_attr;
const char *ptr_color_name; const char *ptr_color_name, *pos_delim, *pos_bg;
/* attribute or other color name (GUI dependent) */ /* attribute or other color name (GUI dependent) */
index_color = (index_color + 1) % 32; index_color = (index_color + 1) % 32;
@@ -439,9 +439,7 @@ gui_color_get_custom (const char *color_name)
fg_term = gui_color_palette_get_alias (str_fg); fg_term = gui_color_palette_get_alias (str_fg);
if (fg_term < 0) if (fg_term < 0)
{ {
error = NULL; if (util_parse_int (str_fg, 10, &term_color))
term_color = (int)strtol (str_fg, &error, 10);
if (error && !error[0])
{ {
fg_term = term_color; fg_term = term_color;
if (fg_term < 0) if (fg_term < 0)
@@ -458,9 +456,7 @@ gui_color_get_custom (const char *color_name)
bg_term = gui_color_palette_get_alias (pos_bg); bg_term = gui_color_palette_get_alias (pos_bg);
if (bg_term < 0) if (bg_term < 0)
{ {
error = NULL; if (util_parse_int (pos_bg, 10, &term_color))
term_color = (int)strtol (pos_bg, &error, 10);
if (error && !error[0])
{ {
bg_term = term_color; bg_term = term_color;
if (bg_term < 0) if (bg_term < 0)
@@ -1287,7 +1283,7 @@ char *
gui_color_encode_ansi (const char *string) gui_color_encode_ansi (const char *string)
{ {
const unsigned char *ptr_string; const unsigned char *ptr_string;
char **out, str_concat[128], str_color[8], *error; char **out, str_concat[128], str_color[8];
int flag, color, length, ansi_color, fg, bg, attrs; int flag, color, length, ansi_color, fg, bg, attrs;
if (!string) if (!string)
@@ -1321,9 +1317,7 @@ gui_color_encode_ansi (const char *string)
{ {
memcpy (str_color, ptr_string, 5); memcpy (str_color, ptr_string, 5);
str_color[5] = '\0'; str_color[5] = '\0';
error = NULL; if (util_parse_int (str_color, 10, &color))
color = (int)strtol (str_color, &error, 10);
if (error && !error[0])
{ {
snprintf (str_concat, sizeof (str_concat), snprintf (str_concat, sizeof (str_concat),
"\x1B[38;5;%dm", "\x1B[38;5;%dm",
@@ -1344,9 +1338,7 @@ gui_color_encode_ansi (const char *string)
{ {
memcpy (str_color, ptr_string, 2); memcpy (str_color, ptr_string, 2);
str_color[2] = '\0'; str_color[2] = '\0';
error = NULL; if (util_parse_int (str_color, 10, &color))
color = (int)strtol (str_color, &error, 10);
if (error && !error[0])
{ {
ansi_color = gui_color_weechat_to_ansi (color); ansi_color = gui_color_weechat_to_ansi (color);
snprintf (str_concat, sizeof (str_concat), snprintf (str_concat, sizeof (str_concat),
@@ -1371,9 +1363,7 @@ gui_color_encode_ansi (const char *string)
{ {
memcpy (str_color, ptr_string, 5); memcpy (str_color, ptr_string, 5);
str_color[5] = '\0'; str_color[5] = '\0';
error = NULL; if (util_parse_int (str_color, 10, &color))
color = (int)strtol (str_color, &error, 10);
if (error && !error[0])
{ {
snprintf (str_concat, sizeof (str_concat), snprintf (str_concat, sizeof (str_concat),
"\x1B[48;5;%dm", "\x1B[48;5;%dm",
@@ -1389,9 +1379,7 @@ gui_color_encode_ansi (const char *string)
{ {
memcpy (str_color, ptr_string, 2); memcpy (str_color, ptr_string, 2);
str_color[2] = '\0'; str_color[2] = '\0';
error = NULL; if (util_parse_int (str_color, 10, &color))
color = (int)strtol (str_color, &error, 10);
if (error && !error[0])
{ {
ansi_color = gui_color_weechat_to_ansi (color); ansi_color = gui_color_weechat_to_ansi (color);
snprintf (str_concat, sizeof (str_concat), snprintf (str_concat, sizeof (str_concat),
@@ -1421,9 +1409,7 @@ gui_color_encode_ansi (const char *string)
{ {
memcpy (str_color, ptr_string, 5); memcpy (str_color, ptr_string, 5);
str_color[5] = '\0'; str_color[5] = '\0';
error = NULL; if (util_parse_int (str_color, 10, &color))
color = (int)strtol (str_color, &error, 10);
if (error && !error[0])
{ {
snprintf (str_concat, sizeof (str_concat), snprintf (str_concat, sizeof (str_concat),
"\x1B[38;5;%dm", "\x1B[38;5;%dm",
@@ -1444,9 +1430,7 @@ gui_color_encode_ansi (const char *string)
{ {
memcpy (str_color, ptr_string, 2); memcpy (str_color, ptr_string, 2);
str_color[2] = '\0'; str_color[2] = '\0';
error = NULL; if (util_parse_int (str_color, 10, &color))
color = (int)strtol (str_color, &error, 10);
if (error && !error[0])
{ {
ansi_color = gui_color_weechat_to_ansi (color); ansi_color = gui_color_weechat_to_ansi (color);
snprintf (str_concat, sizeof (str_concat), snprintf (str_concat, sizeof (str_concat),
@@ -1477,9 +1461,7 @@ gui_color_encode_ansi (const char *string)
{ {
memcpy (str_color, ptr_string, 5); memcpy (str_color, ptr_string, 5);
str_color[5] = '\0'; str_color[5] = '\0';
error = NULL; if (util_parse_int (str_color, 10, &color))
color = (int)strtol (str_color, &error, 10);
if (error && !error[0])
{ {
snprintf (str_concat, sizeof (str_concat), snprintf (str_concat, sizeof (str_concat),
"\x1B[48;5;%dm", "\x1B[48;5;%dm",
@@ -1496,9 +1478,7 @@ gui_color_encode_ansi (const char *string)
{ {
memcpy (str_color, ptr_string, 2); memcpy (str_color, ptr_string, 2);
str_color[2] = '\0'; str_color[2] = '\0';
error = NULL; if (util_parse_int (str_color, 10, &color))
color = (int)strtol (str_color, &error, 10);
if (error && !error[0])
{ {
ansi_color = gui_color_weechat_to_ansi (color); ansi_color = gui_color_weechat_to_ansi (color);
snprintf (str_concat, sizeof (str_concat), snprintf (str_concat, sizeof (str_concat),
@@ -1522,9 +1502,7 @@ gui_color_encode_ansi (const char *string)
{ {
memcpy (str_color, ptr_string, 5); memcpy (str_color, ptr_string, 5);
str_color[5] = '\0'; str_color[5] = '\0';
error = NULL; if (util_parse_int (str_color, 10, &color))
color = (int)strtol (str_color, &error, 10);
if (error && !error[0])
{ {
snprintf (str_concat, sizeof (str_concat), snprintf (str_concat, sizeof (str_concat),
"\x1B[38;5;%dm", "\x1B[38;5;%dm",
@@ -1596,9 +1574,7 @@ gui_color_encode_ansi (const char *string)
{ {
memcpy (str_color, ptr_string, 2); memcpy (str_color, ptr_string, 2);
str_color[2] = '\0'; str_color[2] = '\0';
error = NULL; if (util_parse_int (str_color, 10, &color)
color = (int)strtol (str_color, &error, 10);
if (error && !error[0]
&& (color >= 0) && (color >= 0)
&& (color < GUI_COLOR_NUM_COLORS)) && (color < GUI_COLOR_NUM_COLORS))
{ {
+2 -2
View File
@@ -366,8 +366,8 @@ gui_filter_new (int enabled, const char *name, const char *buffer_name,
{ {
struct t_gui_filter *new_filter; struct t_gui_filter *new_filter;
regex_t *regex1, *regex2; regex_t *regex1, *regex2;
char *pos_tab, *regex_prefix, buf[512], str_error[1024]; char *regex_prefix, buf[512], str_error[1024];
const char *ptr_start_regex, *pos_regex_message; const char *ptr_start_regex, *pos_regex_message, *pos_tab;
int rc; int rc;
if (!name || !buffer_name || !tags || !regex) if (!name || !buffer_name || !tags || !regex)
+5 -9
View File
@@ -32,6 +32,7 @@
#include "../core/core-hashtable.h" #include "../core/core-hashtable.h"
#include "../core/core-hook.h" #include "../core/core-hook.h"
#include "../core/core-string.h" #include "../core/core-string.h"
#include "../core/core-util.h"
#include "../plugins/plugin.h" #include "../plugins/plugin.h"
#include "gui-bar.h" #include "gui-bar.h"
#include "gui-bar-window.h" #include "gui-bar-window.h"
@@ -280,11 +281,10 @@ gui_focus_info_hashtable_gui_focus_info_cb (const void *pointer, void *data,
const char *info_name, const char *info_name,
struct t_hashtable *hashtable) struct t_hashtable *hashtable)
{ {
char *error;
const char *ptr_value;
int x, y;
struct t_gui_focus_info *focus_info; struct t_gui_focus_info *focus_info;
struct t_hashtable *focus_hashtable, *ret_hashtable; struct t_hashtable *focus_hashtable, *ret_hashtable;
const char *ptr_value;
int x, y;
/* make C compiler happy */ /* make C compiler happy */
(void) pointer; (void) pointer;
@@ -298,17 +298,13 @@ gui_focus_info_hashtable_gui_focus_info_cb (const void *pointer, void *data,
ptr_value = hashtable_get (hashtable, "x"); ptr_value = hashtable_get (hashtable, "x");
if (!ptr_value) if (!ptr_value)
return NULL; return NULL;
error = NULL; if (!util_parse_int (ptr_value, 10, &x))
x = (int)strtol (ptr_value, &error, 10);
if (!error || error[0])
return NULL; return NULL;
ptr_value = hashtable_get (hashtable, "y"); ptr_value = hashtable_get (hashtable, "y");
if (!ptr_value) if (!ptr_value)
return NULL; return NULL;
error = NULL; if (!util_parse_int (ptr_value, 10, &y))
y = (int)strtol (ptr_value, &error, 10);
if (!error || error[0])
return NULL; return NULL;
/* get focus info */ /* get focus info */
+3 -7
View File
@@ -623,10 +623,8 @@ void
gui_hotlist_clear_level_string (struct t_gui_buffer *buffer, gui_hotlist_clear_level_string (struct t_gui_buffer *buffer,
const char *str_level_mask) const char *str_level_mask)
{ {
long level_mask;
char *error;
struct t_gui_hotlist *ptr_hotlist; struct t_gui_hotlist *ptr_hotlist;
int priority; int level_mask, priority;
if (str_level_mask) if (str_level_mask)
{ {
@@ -665,11 +663,9 @@ gui_hotlist_clear_level_string (struct t_gui_buffer *buffer,
else else
{ {
/* clear hotlist using a mask of levels */ /* clear hotlist using a mask of levels */
error = NULL; if (util_parse_int (str_level_mask, 10, &level_mask) && (level_mask > 0))
level_mask = strtol (str_level_mask, &error, 10);
if (error && !error[0] && (level_mask > 0))
{ {
gui_hotlist_clear ((int)level_mask); gui_hotlist_clear (level_mask);
gui_hotlist_initial_buffer = buffer; gui_hotlist_initial_buffer = buffer;
} }
} }
+4 -6
View File
@@ -44,6 +44,7 @@
#include "../core/core-log.h" #include "../core/core-log.h"
#include "../core/core-string.h" #include "../core/core-string.h"
#include "../core/core-utf8.h" #include "../core/core-utf8.h"
#include "../core/core-util.h"
#include "../plugins/plugin.h" #include "../plugins/plugin.h"
#include "gui-key.h" #include "gui-key.h"
#include "gui-bar.h" #include "gui-bar.h"
@@ -193,8 +194,7 @@ gui_key_get_current_context (void)
void void
gui_key_grab_init (int grab_command, const char *delay) gui_key_grab_init (int grab_command, const char *delay)
{ {
long milliseconds; int milliseconds;
char *error;
gui_key_grab = 1; gui_key_grab = 1;
gui_key_grab_count = 0; gui_key_grab_count = 0;
@@ -203,9 +203,7 @@ gui_key_grab_init (int grab_command, const char *delay)
gui_key_grab_delay = CONFIG_INTEGER(config_look_key_grab_delay); gui_key_grab_delay = CONFIG_INTEGER(config_look_key_grab_delay);
if (delay != NULL) if (delay != NULL)
{ {
error = NULL; if (util_parse_int (delay, 10, &milliseconds) && (milliseconds >= 0))
milliseconds = strtol (delay, &error, 10);
if (error && !error[0] && (milliseconds >= 0))
{ {
gui_key_grab_delay = milliseconds; gui_key_grab_delay = milliseconds;
if (gui_key_grab_delay == 0) if (gui_key_grab_delay == 0)
@@ -1076,7 +1074,7 @@ gui_key_set_area_type_name (const char *area,
int *area_type, char **area_name) int *area_type, char **area_name)
{ {
int focus, length; int focus, length;
char *pos_end; const char *pos_end;
for (focus = 0; focus < GUI_KEY_NUM_FOCUS; focus++) for (focus = 0; focus < GUI_KEY_NUM_FOCUS; focus++)
{ {
+24 -28
View File
@@ -39,6 +39,7 @@
#include "../core/core-infolist.h" #include "../core/core-infolist.h"
#include "../core/core-log.h" #include "../core/core-log.h"
#include "../core/core-string.h" #include "../core/core-string.h"
#include "../core/core-util.h"
#include "../plugins/plugin.h" #include "../plugins/plugin.h"
#include "gui-line.h" #include "gui-line.h"
#include "gui-buffer.h" #include "gui-buffer.h"
@@ -1674,10 +1675,10 @@ gui_line_hook_update (struct t_gui_line *line,
const char *ptr_value, *ptr_value2; const char *ptr_value, *ptr_value2;
struct t_gui_buffer *ptr_buffer; struct t_gui_buffer *ptr_buffer;
unsigned long value_pointer; unsigned long value_pointer;
long value; long long value_longlong;
char *error, *new_message, *pos_newline; char *new_message, *pos_newline;
int rc, tags_updated, notify_level_updated, highlight_updated; int rc, tags_updated, notify_level_updated, highlight_updated;
int max_notify_level; int max_notify_level, value;
tags_updated = 0; tags_updated = 0;
notify_level_updated = 0; notify_level_updated = 0;
@@ -1730,9 +1731,7 @@ gui_line_hook_update (struct t_gui_line *line,
ptr_value = hashtable_get (hashtable2, "y"); ptr_value = hashtable_get (hashtable2, "y");
if (ptr_value) if (ptr_value)
{ {
error = NULL; if (util_parse_int (ptr_value, 10, &value) && (value >= 0))
value = strtol (ptr_value, &error, 10);
if (error && !error[0] && (value >= 0))
line->data->y = value; line->data->y = value;
} }
} }
@@ -1740,9 +1739,8 @@ gui_line_hook_update (struct t_gui_line *line,
ptr_value2 = hashtable_get (hashtable2, "notify_level"); ptr_value2 = hashtable_get (hashtable2, "notify_level");
if (ptr_value2) if (ptr_value2)
{ {
error = NULL; if (util_parse_int (ptr_value2, 10, &value)
value = strtol (ptr_value2, &error, 10); && (value >= -1) && (value <= GUI_HOTLIST_MAX))
if (error && !error[0] && (value >= -1) && (value <= GUI_HOTLIST_MAX))
{ {
notify_level_updated = 1; notify_level_updated = 1;
line->data->notify_level = value; line->data->notify_level = value;
@@ -1752,9 +1750,7 @@ gui_line_hook_update (struct t_gui_line *line,
ptr_value2 = hashtable_get (hashtable2, "highlight"); ptr_value2 = hashtable_get (hashtable2, "highlight");
if (ptr_value2) if (ptr_value2)
{ {
error = NULL; if (util_parse_int (ptr_value2, 10, &value))
value = strtol (ptr_value2, &error, 10);
if (error && !error[0])
{ {
highlight_updated = 1; highlight_updated = 1;
line->data->highlight = (value) ? 1 : 0; line->data->highlight = (value) ? 1 : 0;
@@ -1764,11 +1760,10 @@ gui_line_hook_update (struct t_gui_line *line,
ptr_value2 = hashtable_get (hashtable2, "date"); ptr_value2 = hashtable_get (hashtable2, "date");
if (ptr_value2) if (ptr_value2)
{ {
error = NULL; if (util_parse_longlong (ptr_value2, 10, &value_longlong)
value = strtol (ptr_value2, &error, 10); && (value_longlong >= 0))
if (error && !error[0] && (value >= 0))
{ {
line->data->date = (time_t)value; line->data->date = (time_t)value_longlong;
free (line->data->str_time); free (line->data->str_time);
line->data->str_time = gui_chat_get_time_string ( line->data->str_time = gui_chat_get_time_string (
line->data->date, line->data->date,
@@ -1780,11 +1775,10 @@ gui_line_hook_update (struct t_gui_line *line,
ptr_value2 = hashtable_get (hashtable2, "date_usec"); ptr_value2 = hashtable_get (hashtable2, "date_usec");
if (ptr_value2) if (ptr_value2)
{ {
error = NULL; if (util_parse_int (ptr_value2, 10, &value)
value = strtol (ptr_value2, &error, 10); && (value >= 0) && (value <= 999999))
if (error && !error[0] && (value >= 0) && (value <= 999999))
{ {
line->data->date_usec = (int)value; line->data->date_usec = value;
free (line->data->str_time); free (line->data->str_time);
line->data->str_time = gui_chat_get_time_string ( line->data->str_time = gui_chat_get_time_string (
line->data->date, line->data->date,
@@ -1796,19 +1790,21 @@ gui_line_hook_update (struct t_gui_line *line,
ptr_value2 = hashtable_get (hashtable2, "date_printed"); ptr_value2 = hashtable_get (hashtable2, "date_printed");
if (ptr_value2) if (ptr_value2)
{ {
error = NULL; if (util_parse_longlong (ptr_value2, 10, &value_longlong)
value = strtol (ptr_value2, &error, 10); && (value_longlong >= 0))
if (error && !error[0] && (value >= 0)) {
line->data->date_printed = (time_t)value; line->data->date_printed = (time_t)value_longlong;
}
} }
ptr_value2 = hashtable_get (hashtable2, "date_usec_printed"); ptr_value2 = hashtable_get (hashtable2, "date_usec_printed");
if (ptr_value2) if (ptr_value2)
{ {
error = NULL; if (util_parse_int (ptr_value2, 10, &value)
value = strtol (ptr_value2, &error, 10); && (value >= 0) && (value <= 999999))
if (error && !error[0] && (value >= 0) && (value <= 999999)) {
line->data->date_usec_printed = (int)value; line->data->date_usec_printed = value;
}
} }
ptr_value = hashtable_get (hashtable, "str_time"); ptr_value = hashtable_get (hashtable, "str_time");
+9 -22
View File
@@ -44,6 +44,7 @@
#include "../core/core-log.h" #include "../core/core-log.h"
#include "../core/core-string.h" #include "../core/core-string.h"
#include "../core/core-utf8.h" #include "../core/core-utf8.h"
#include "../core/core-util.h"
#include "../plugins/plugin.h" #include "../plugins/plugin.h"
#include "gui-nicklist.h" #include "gui-nicklist.h"
#include "gui-buffer.h" #include "gui-buffer.h"
@@ -275,7 +276,6 @@ gui_nicklist_search_group (struct t_gui_buffer *buffer,
const char *name) const char *name)
{ {
const char *ptr_name; const char *ptr_name;
char *error;
long long id; long long id;
if ((!buffer && !from_group) if ((!buffer && !from_group)
@@ -287,8 +287,7 @@ gui_nicklist_search_group (struct t_gui_buffer *buffer,
if (strncmp (name, "==id:", 5) == 0) if (strncmp (name, "==id:", 5) == 0)
{ {
id = strtoll (name + 5, &error, 10); if (util_parse_longlong (name + 5, 10, &id))
if (error && !error[0])
return gui_nicklist_search_group_id (buffer, from_group, id); return gui_nicklist_search_group_id (buffer, from_group, id);
} }
@@ -570,7 +569,6 @@ gui_nicklist_search_nick (struct t_gui_buffer *buffer,
const char *name) const char *name)
{ {
long long id; long long id;
char *error;
if ((!buffer && !from_group) if ((!buffer && !from_group)
|| !name || !name
@@ -581,8 +579,7 @@ gui_nicklist_search_nick (struct t_gui_buffer *buffer,
if (strncmp (name, "==id:", 5) == 0) if (strncmp (name, "==id:", 5) == 0)
{ {
id = strtoll (name + 5, &error, 10); if (util_parse_longlong (name + 5, 10, &id))
if (error && !error[0])
return gui_nicklist_search_nick_id (buffer, from_group, id); return gui_nicklist_search_nick_id (buffer, from_group, id);
} }
@@ -1036,9 +1033,7 @@ gui_nicklist_group_set (struct t_gui_buffer *buffer,
const char *property, const char *value) const char *property, const char *value)
{ {
long long id; long long id;
long number; int group_changed, number;
char *error;
int group_changed;
if (!buffer || !group || !property || !value) if (!buffer || !group || !property || !value)
return; return;
@@ -1047,8 +1042,7 @@ gui_nicklist_group_set (struct t_gui_buffer *buffer,
if (strcmp (property, "id") == 0) if (strcmp (property, "id") == 0)
{ {
id = strtoll (value, &error, 10); if (util_parse_longlong (value, 10, &id)
if (error && !error[0]
&& (id != group->id) && (id != group->id)
&& !gui_nicklist_search_group_id (buffer, NULL, id)) && !gui_nicklist_search_group_id (buffer, NULL, id))
{ {
@@ -1064,9 +1058,7 @@ gui_nicklist_group_set (struct t_gui_buffer *buffer,
} }
else if (strcmp (property, "visible") == 0) else if (strcmp (property, "visible") == 0)
{ {
error = NULL; if (util_parse_int (value, 10, &number))
number = strtol (value, &error, 10);
if (error && !error[0])
group->visible = (number) ? 1 : 0; group->visible = (number) ? 1 : 0;
group_changed = 1; group_changed = 1;
} }
@@ -1158,9 +1150,7 @@ gui_nicklist_nick_set (struct t_gui_buffer *buffer,
const char *property, const char *value) const char *property, const char *value)
{ {
long long id; long long id;
long number; int nick_changed, number;
char *error;
int nick_changed;
if (!buffer || !nick || !property || !value) if (!buffer || !nick || !property || !value)
return; return;
@@ -1169,8 +1159,7 @@ gui_nicklist_nick_set (struct t_gui_buffer *buffer,
if (strcmp (property, "id") == 0) if (strcmp (property, "id") == 0)
{ {
id = strtoll (value, &error, 10); if (util_parse_longlong (value, 10, &id)
if (error && !error[0]
&& (id != nick->id) && (id != nick->id)
&& !gui_nicklist_search_nick_id (buffer, NULL, id)) && !gui_nicklist_search_nick_id (buffer, NULL, id))
{ {
@@ -1198,9 +1187,7 @@ gui_nicklist_nick_set (struct t_gui_buffer *buffer,
} }
else if (strcmp (property, "visible") == 0) else if (strcmp (property, "visible") == 0)
{ {
error = NULL; if (util_parse_int (value, 10, &number))
number = strtol (value, &error, 10);
if (error && !error[0])
nick->visible = (number) ? 1 : 0; nick->visible = (number) ? 1 : 0;
nick_changed = 1; nick_changed = 1;
} }
+6 -10
View File
@@ -43,6 +43,7 @@
#include "../core/core-log.h" #include "../core/core-log.h"
#include "../core/core-string.h" #include "../core/core-string.h"
#include "../core/core-utf8.h" #include "../core/core-utf8.h"
#include "../core/core-util.h"
#include "../plugins/plugin.h" #include "../plugins/plugin.h"
#include "gui-window.h" #include "gui-window.h"
#include "gui-bar.h" #include "gui-bar.h"
@@ -1182,7 +1183,7 @@ gui_window_scroll (struct t_gui_window *window, char *scroll)
int direction, stop, count_msg, scroll_from_end_free_buffer; int direction, stop, count_msg, scroll_from_end_free_buffer;
char time_letter, saved_char; char time_letter, saved_char;
time_t old_date, diff_date; time_t old_date, diff_date;
char *pos, *error; char *pos;
long number; long number;
struct t_gui_line *ptr_line; struct t_gui_line *ptr_line;
struct tm *date_tmp, line_date, old_line_date; struct tm *date_tmp, line_date, old_line_date;
@@ -1231,9 +1232,7 @@ gui_window_scroll (struct t_gui_window *window, char *scroll)
time_letter = pos[0]; time_letter = pos[0];
saved_char = pos[0]; saved_char = pos[0];
pos[0] = '\0'; pos[0] = '\0';
error = NULL; if (!util_parse_long (scroll, 10, &number))
number = strtol (scroll, &error, 10);
if (!error || error[0])
number = 0; number = 0;
pos[0] = saved_char; pos[0] = saved_char;
} }
@@ -1430,9 +1429,8 @@ gui_window_scroll (struct t_gui_window *window, char *scroll)
void void
gui_window_scroll_horiz (struct t_gui_window *window, char *scroll) gui_window_scroll_horiz (struct t_gui_window *window, char *scroll)
{ {
int direction, percentage, start_col; int direction, percentage, start_col, number;
char saved_char, *pos, *error; char saved_char, *pos;
long number;
if (!window || !window->buffer->lines->first_line) if (!window || !window->buffer->lines->first_line)
return; return;
@@ -1464,9 +1462,7 @@ gui_window_scroll_horiz (struct t_gui_window *window, char *scroll)
percentage = (pos[0] == '%') ? 1 : 0; percentage = (pos[0] == '%') ? 1 : 0;
saved_char = pos[0]; saved_char = pos[0];
pos[0] = '\0'; pos[0] = '\0';
error = NULL; if (!util_parse_int (scroll, 10, &number))
number = strtol (scroll, &error, 10);
if (!error || error[0])
number = 0; number = 0;
pos[0] = saved_char; pos[0] = saved_char;
} }
+8 -19
View File
@@ -40,9 +40,8 @@ struct t_hashtable *
buflist_focus_cb (const void *pointer, void *data, struct t_hashtable *info) buflist_focus_cb (const void *pointer, void *data, struct t_hashtable *info)
{ {
const char *ptr_bar_item_name, *ptr_bar_item_line, *keys, *ptr_value; const char *ptr_bar_item_name, *ptr_bar_item_line, *keys, *ptr_value;
long item_line; char str_value[128], **list_keys;
char *error, str_value[128], **list_keys; int i, item_index, item_line, num_keys, type;
int i, item_index, num_keys, type;
struct t_gui_buffer *ptr_buffer; struct t_gui_buffer *ptr_buffer;
/* make C compiler happy */ /* make C compiler happy */
@@ -64,15 +63,10 @@ buflist_focus_cb (const void *pointer, void *data, struct t_hashtable *info)
ptr_bar_item_line = weechat_hashtable_get (info, "_bar_item_line"); ptr_bar_item_line = weechat_hashtable_get (info, "_bar_item_line");
if (!ptr_bar_item_line) if (!ptr_bar_item_line)
goto end; goto end;
error = NULL; if (!weechat_util_parse_int (ptr_bar_item_line, 10, &item_line)
item_line = strtol (ptr_bar_item_line, &error, 10); || (item_line < 0)
if (!error || error[0])
goto end;
if ((item_line < 0)
|| (item_line >= weechat_arraylist_size (buflist_list_buffers[item_index]))) || (item_line >= weechat_arraylist_size (buflist_list_buffers[item_index])))
{
goto end; goto end;
}
/* check if buffer pointer is still valid */ /* check if buffer pointer is still valid */
ptr_buffer = weechat_arraylist_get (buflist_list_buffers[item_index], ptr_buffer = weechat_arraylist_get (buflist_list_buffers[item_index],
@@ -333,10 +327,9 @@ buflist_hsignal_cb (const void *pointer, void *data, const char *signal,
const char *ptr_key, *ptr_pointer, *ptr_number, *ptr_number2; const char *ptr_key, *ptr_pointer, *ptr_number, *ptr_number2;
const char *ptr_full_name; const char *ptr_full_name;
struct t_gui_buffer *ptr_buffer; struct t_gui_buffer *ptr_buffer;
char *error, str_command[1024]; char str_command[1024];
long number, number2;
unsigned long value; unsigned long value;
int rc, current_buffer_number; int rc, current_buffer_number, number, number2;
/* make C compiler happy */ /* make C compiler happy */
(void) pointer; (void) pointer;
@@ -360,13 +353,9 @@ buflist_hsignal_cb (const void *pointer, void *data, const char *signal,
return WEECHAT_RC_OK; return WEECHAT_RC_OK;
ptr_buffer = (struct t_gui_buffer *)value; ptr_buffer = (struct t_gui_buffer *)value;
error = NULL; if (!weechat_util_parse_int (ptr_number, 10, &number))
number = strtol (ptr_number, &error, 10);
if (!error || error[0])
return WEECHAT_RC_OK; return WEECHAT_RC_OK;
error = NULL; if (!weechat_util_parse_int (ptr_number2, 10, &number2))
number2 = strtol (ptr_number2, &error, 10);
if (!error || error[0])
return WEECHAT_RC_OK; return WEECHAT_RC_OK;
current_buffer_number = weechat_buffer_get_integer ( current_buffer_number = weechat_buffer_get_integer (
+3 -5
View File
@@ -185,8 +185,7 @@ exec_command_parse_options (struct t_exec_cmd_options *cmd_options,
int argc, char **argv, int start_arg, int argc, char **argv, int start_arg,
int set_command_index) int set_command_index)
{ {
int i, j, end, length, length_total; int i, j, end, length, length_total, timeout;
char *error;
for (i = start_arg; i < argc; i++) for (i = start_arg; i < argc; i++)
{ {
@@ -318,10 +317,9 @@ exec_command_parse_options (struct t_exec_cmd_options *cmd_options,
if (i + 1 >= argc) if (i + 1 >= argc)
return 0; return 0;
i++; i++;
error = NULL; if (!weechat_util_parse_int (argv[i], 10, &timeout))
cmd_options->timeout = strtol (argv[i], &error, 10);
if (!error || error[0])
return 0; return 0;
cmd_options->timeout = timeout;
} }
else if (weechat_strcmp (argv[i], "-name") == 0) else if (weechat_strcmp (argv[i], "-name") == 0)
{ {
+1 -4
View File
@@ -85,15 +85,12 @@ struct t_exec_cmd *
exec_search_by_id (const char *id) exec_search_by_id (const char *id)
{ {
struct t_exec_cmd* ptr_exec_cmd; struct t_exec_cmd* ptr_exec_cmd;
char *error;
long number; long number;
if (!id) if (!id)
return NULL; return NULL;
error = NULL; if (!weechat_util_parse_long (id, 10, &number))
number = strtol (id, &error, 10);
if (!error || error[0])
number = -1; number = -1;
for (ptr_exec_cmd = exec_cmds; ptr_exec_cmd; for (ptr_exec_cmd = exec_cmds; ptr_exec_cmd;
+2 -5
View File
@@ -60,15 +60,12 @@ int
fset_command_get_int_arg (int argc, char **argv, int arg_number, fset_command_get_int_arg (int argc, char **argv, int arg_number,
int default_value) int default_value)
{ {
long value; int value;
char *error;
value = default_value; value = default_value;
if (argc > arg_number) if (argc > arg_number)
{ {
error = NULL; if (!weechat_util_parse_int (argv[arg_number], 10, &value))
value = strtol (argv[arg_number], &error, 10);
if (!error || error[0])
value = default_value; value = default_value;
} }
return (int)value; return (int)value;
+9 -15
View File
@@ -42,11 +42,10 @@ struct t_hashtable *
fset_mouse_focus_cb (const void *pointer, void *data, struct t_hashtable *info) fset_mouse_focus_cb (const void *pointer, void *data, struct t_hashtable *info)
{ {
const char *buffer; const char *buffer;
int rc, format_number; int rc, format_number, y, option_index;
unsigned long value; unsigned long value;
struct t_gui_buffer *ptr_buffer; struct t_gui_buffer *ptr_buffer;
long y, option_index; char str_value[128];
char *error, str_value[128];
struct t_fset_option *ptr_fset_option; struct t_fset_option *ptr_fset_option;
/* make C compiler happy */ /* make C compiler happy */
@@ -69,13 +68,11 @@ fset_mouse_focus_cb (const void *pointer, void *data, struct t_hashtable *info)
if (!ptr_buffer || (ptr_buffer != fset_buffer)) if (!ptr_buffer || (ptr_buffer != fset_buffer))
return info; return info;
error = NULL; if (!weechat_util_parse_int (weechat_hashtable_get (info, "_chat_line_y"), 10, &y)
y = strtol (weechat_hashtable_get (info, "_chat_line_y"), &error, 10); || (y < 0))
if (!error || error[0]) {
return info;
if (y < 0)
return info; return info;
}
format_number = weechat_config_integer (fset_config_look_format_number); format_number = weechat_config_integer (fset_config_look_format_number);
option_index = y / fset_config_format_option_num_lines[format_number - 1]; option_index = y / fset_config_format_option_num_lines[format_number - 1];
@@ -87,7 +84,7 @@ fset_mouse_focus_cb (const void *pointer, void *data, struct t_hashtable *info)
snprintf (str_value, sizeof (str_value), snprintf (str_value, sizeof (str_value),
"0x%lx", (unsigned long)ptr_fset_option); "0x%lx", (unsigned long)ptr_fset_option);
weechat_hashtable_set (info, "fset_option", str_value); weechat_hashtable_set (info, "fset_option", str_value);
snprintf (str_value, sizeof (str_value), "%ld", option_index); snprintf (str_value, sizeof (str_value), "%d", option_index);
weechat_hashtable_set (info, "fset_option_index", str_value); weechat_hashtable_set (info, "fset_option_index", str_value);
weechat_hashtable_set (info, "fset_option_name", ptr_fset_option->name); weechat_hashtable_set (info, "fset_option_name", ptr_fset_option->name);
weechat_hashtable_set (info, "fset_option_parent_name", ptr_fset_option->parent_name); weechat_hashtable_set (info, "fset_option_parent_name", ptr_fset_option->parent_name);
@@ -137,15 +134,12 @@ fset_mouse_get_hashtable_int (struct t_hashtable *hashtable,
int default_value) int default_value)
{ {
const char *ptr_value; const char *ptr_value;
char *error;
int value; int value;
ptr_value = weechat_hashtable_get (hashtable, variable); ptr_value = weechat_hashtable_get (hashtable, variable);
if (!ptr_value) if (!ptr_value)
return default_value; return default_value;
error = NULL; if (!weechat_util_parse_int (ptr_value, 10, &value))
value = (int)strtol (ptr_value, &error, 10);
if (!error || error[0])
return default_value; return default_value;
return value; return value;
@@ -337,7 +331,7 @@ fset_mouse_init (void)
weechat_hashtable_set ( weechat_hashtable_set (
keys, keys,
"@chat(" FSET_PLUGIN_NAME "." FSET_BUFFER_NAME "):button1", "@chat(" FSET_PLUGIN_NAME "." FSET_BUFFER_NAME "):button1",
"/window ${_window_number};/fset -go ${fset_option_index}"); "/window ${_window_number};/mute /fset -go ${fset_option_index}");
weechat_hashtable_set ( weechat_hashtable_set (
keys, keys,
"@chat(" FSET_PLUGIN_NAME "." FSET_BUFFER_NAME "):button2*", "@chat(" FSET_PLUGIN_NAME "." FSET_BUFFER_NAME "):button2*",
+15 -28
View File
@@ -96,8 +96,8 @@ char *irc_color_string_decoded[32];
int int
irc_color_convert_rgb2term (long rgb) irc_color_convert_rgb2term (long rgb)
{ {
char str_color[64], *info_color, *error; char str_color[64], *info_color;
long number; int number;
if (rgb < 0) if (rgb < 0)
return -1; return -1;
@@ -111,9 +111,7 @@ irc_color_convert_rgb2term (long rgb)
return -1; return -1;
} }
error = NULL; if (!weechat_util_parse_int (info_color, 10, &number))
number = strtol (info_color, &error, 10);
if (!error || error[0])
{ {
free (info_color); free (info_color);
return -1; return -1;
@@ -121,7 +119,7 @@ irc_color_convert_rgb2term (long rgb)
free (info_color); free (info_color);
return (int)number; return number;
} }
/* /*
@@ -133,8 +131,8 @@ irc_color_convert_rgb2term (long rgb)
int int
irc_color_convert_rgb2irc (long rgb) irc_color_convert_rgb2irc (long rgb)
{ {
char str_color[64], *error, *info_color; char str_color[64], *info_color;
long number; int number;
if (rgb < 0) if (rgb < 0)
return -1; return -1;
@@ -151,9 +149,7 @@ irc_color_convert_rgb2irc (long rgb)
return -1; return -1;
} }
error = NULL; if (!weechat_util_parse_int (info_color, 10, &number)
number = strtol (info_color, &error, 10);
if (!error || error[0]
|| (number < 0) || (number >= IRC_COLOR_TERM2IRC_NUM_COLORS)) || (number < 0) || (number >= IRC_COLOR_TERM2IRC_NUM_COLORS))
{ {
free (info_color); free (info_color);
@@ -174,7 +170,7 @@ irc_color_convert_rgb2irc (long rgb)
int int
irc_color_convert_term2irc (int color) irc_color_convert_term2irc (int color)
{ {
char str_color[64], *error, *info_color; char str_color[64], *info_color;
long number; long number;
snprintf (str_color, sizeof (str_color), "%d", color); snprintf (str_color, sizeof (str_color), "%d", color);
@@ -186,9 +182,8 @@ irc_color_convert_term2irc (int color)
return -1; return -1;
} }
error = NULL; if (!weechat_util_parse_long (info_color, 10, &number)
number = strtol (info_color, &error, 10); || (number < 0) || (number > 0xFFFFFF))
if (!error || error[0] || (number < 0) || (number > 0xFFFFFF))
{ {
free (info_color); free (info_color);
return -1; return -1;
@@ -211,7 +206,7 @@ irc_color_convert_term2irc (int color)
char * char *
irc_color_decode (const char *string, int keep_colors) irc_color_decode (const char *string, int keep_colors)
{ {
char **out, *error; char **out;
char str_fg[16], str_bg[16], str_color[128], str_key[128], str_to_add[128]; char str_fg[16], str_bg[16], str_color[128], str_key[128], str_to_add[128];
const char *remapped_color; const char *remapped_color;
unsigned char *ptr_string; unsigned char *ptr_string;
@@ -337,18 +332,14 @@ irc_color_decode (const char *string, int keep_colors)
bg = -1; bg = -1;
if (str_fg[0]) if (str_fg[0])
{ {
error = NULL; if (weechat_util_parse_int (str_fg, 10, &fg))
fg = (int)strtol (str_fg, &error, 10);
if (error && !error[0])
fg %= IRC_NUM_COLORS; fg %= IRC_NUM_COLORS;
else else
fg = -1; fg = -1;
} }
if (str_bg[0]) if (str_bg[0])
{ {
error = NULL; if (weechat_util_parse_int (str_bg, 10, &bg))
bg = (int)strtol (str_bg, &error, 10);
if (error && !error[0])
bg %= IRC_NUM_COLORS; bg %= IRC_NUM_COLORS;
else else
bg = -1; bg = -1;
@@ -422,16 +413,12 @@ irc_color_decode (const char *string, int keep_colors)
bg_rgb = -1; bg_rgb = -1;
if (str_fg[0]) if (str_fg[0])
{ {
error = NULL; if (!weechat_util_parse_long (str_fg, 16, &fg_rgb))
fg_rgb = strtol (str_fg, &error, 16);
if (!error || error[0])
fg_rgb = -1; fg_rgb = -1;
} }
if (str_bg[0]) if (str_bg[0])
{ {
error = NULL; if (!weechat_util_parse_long (str_bg, 16, &bg_rgb))
bg_rgb = strtol (str_bg, &error, 16);
if (!error || error[0])
bg_rgb = -1; bg_rgb = -1;
} }
str_fg[0] = '\0'; str_fg[0] = '\0';
+15 -30
View File
@@ -232,9 +232,8 @@ irc_command_mode_nicks (struct t_irc_server *server,
char ** char **
irc_command_mode_masks_convert_ranges (char **argv, int arg_start) irc_command_mode_masks_convert_ranges (char **argv, int arg_start)
{ {
char **str_masks, **masks, *error1, *error2, *pos, str_number[32]; char **str_masks, **masks, *pos, str_number[32];
int i, length, added; int i, j, length, added, number1, number2;
long j, number1, number2;
if (!argv || (arg_start < 0)) if (!argv || (arg_start < 0))
return NULL; return NULL;
@@ -255,12 +254,8 @@ irc_command_mode_masks_convert_ranges (char **argv, int arg_start)
&& (argv[i][length - 1] != '-')) && (argv[i][length - 1] != '-'))
{ {
pos[0] = '\0'; pos[0] = '\0';
error1 = NULL; if (weechat_util_parse_int (argv[i], 10, &number1)
number1 = strtol (argv[i], &error1, 10); && weechat_util_parse_int (pos + 1, 10, &number2)
error2 = NULL;
number2 = strtol (pos + 1, &error2, 10);
if (error1 && !error1[0]
&& error2 && !error2[0]
&& (number1 > 0) && (number1 < 128) && (number1 > 0) && (number1 < 128)
&& (number2 > 0) && (number2 < 128) && (number2 > 0) && (number2 < 128)
&& (number1 < number2)) && (number1 < number2))
@@ -269,8 +264,7 @@ irc_command_mode_masks_convert_ranges (char **argv, int arg_start)
{ {
if ((*str_masks)[0]) if ((*str_masks)[0])
weechat_string_dyn_concat (str_masks, " ", -1); weechat_string_dyn_concat (str_masks, " ", -1);
snprintf (str_number, sizeof (str_number), snprintf (str_number, sizeof (str_number), "%d", j);
"%ld", j);
weechat_string_dyn_concat (str_masks, str_number, -1); weechat_string_dyn_concat (str_masks, str_number, -1);
} }
added = 1; added = 1;
@@ -312,14 +306,12 @@ irc_command_mode_masks (struct t_irc_server *server,
const char *set, const char *mode, const char *set, const char *mode,
char **argv, int pos_masks) char **argv, int pos_masks)
{ {
int max_modes, modes_added, msg_priority; int max_modes, modes_added, msg_priority, number;
char **modes, **masks, *mask; char **modes, **masks, *mask;
struct t_irc_channel *ptr_channel; struct t_irc_channel *ptr_channel;
struct t_irc_nick *ptr_nick; struct t_irc_nick *ptr_nick;
struct t_irc_modelist *ptr_modelist; struct t_irc_modelist *ptr_modelist;
struct t_irc_modelist_item *ptr_item; struct t_irc_modelist_item *ptr_item;
long number;
char *error;
if (irc_mode_get_chanmode_type (server, mode[0]) != 'A') if (irc_mode_get_chanmode_type (server, mode[0]) != 'A')
{ {
@@ -367,9 +359,7 @@ irc_command_mode_masks (struct t_irc_server *server,
/* use modelist item for number arguments */ /* use modelist item for number arguments */
if (ptr_modelist && (set[0] == '-')) if (ptr_modelist && (set[0] == '-'))
{ {
error = NULL; if (weechat_util_parse_int (argv[pos_masks], 10, &number))
number = strtol (argv[pos_masks], &error, 10);
if (error && !error[0])
{ {
ptr_item = irc_modelist_item_search_number (ptr_modelist, ptr_item = irc_modelist_item_search_number (ptr_modelist,
number - 1); number - 1);
@@ -2622,9 +2612,8 @@ irc_command_ignore_display (struct t_irc_ignore *ignore)
IRC_COMMAND_CALLBACK(ignore) IRC_COMMAND_CALLBACK(ignore)
{ {
struct t_irc_ignore *ptr_ignore; struct t_irc_ignore *ptr_ignore;
char *mask, *regex, *regex2, *ptr_regex, *pos, *server, *channel, *error; char *mask, *regex, *regex2, *ptr_regex, *pos, *server, *channel;
int length, update; int length, number, update;
long number;
/* make C compiler happy */ /* make C compiler happy */
(void) pointer; (void) pointer;
@@ -2767,9 +2756,7 @@ IRC_COMMAND_CALLBACK(ignore)
} }
else else
{ {
error = NULL; if (weechat_util_parse_int (argv[2], 10, &number))
number = strtol (argv[2], &error, 10);
if (error && !error[0])
{ {
ptr_ignore = irc_ignore_search_by_number (number); ptr_ignore = irc_ignore_search_by_number (number);
if (ptr_ignore) if (ptr_ignore)
@@ -2925,7 +2912,8 @@ void
irc_command_join_server (struct t_irc_server *server, const char *arguments, irc_command_join_server (struct t_irc_server *server, const char *arguments,
int manual_join, int noswitch) int manual_join, int noswitch)
{ {
char *new_args, **channels, **keys, *pos_space, *pos_keys, *pos_channel; const char *pos_space, *pos_keys;
char *new_args, **channels, **keys, *pos_channel;
char *channel_name_lower; char *channel_name_lower;
int i, num_channels, num_keys, length; int i, num_channels, num_keys, length;
time_t time_now; time_t time_now;
@@ -3429,18 +3417,15 @@ int
irc_command_list_get_int_arg (int argc, char **argv, int arg_number, irc_command_list_get_int_arg (int argc, char **argv, int arg_number,
int default_value) int default_value)
{ {
long value; int value;
char *error;
value = default_value; value = default_value;
if (argc > arg_number) if (argc > arg_number)
{ {
error = NULL; if (!weechat_util_parse_int (argv[arg_number], 10, &value))
value = strtol (argv[arg_number], &error, 10);
if (!error || error[0])
value = default_value; value = default_value;
} }
return (int)value; return value;
} }
/* /*
+3 -2
View File
@@ -470,7 +470,7 @@ irc_completion_modelist_masks_cb (const void *pointer, void *data,
struct t_gui_buffer *buffer, struct t_gui_buffer *buffer,
struct t_gui_completion *completion) struct t_gui_completion *completion)
{ {
char *pos; const char *pos;
struct t_irc_modelist *ptr_modelist; struct t_irc_modelist *ptr_modelist;
struct t_irc_modelist_item *ptr_item; struct t_irc_modelist_item *ptr_item;
@@ -512,7 +512,8 @@ irc_completion_modelist_numbers_cb (const void *pointer, void *data,
struct t_gui_buffer *buffer, struct t_gui_buffer *buffer,
struct t_gui_completion *completion) struct t_gui_completion *completion)
{ {
char *pos, str_number[32]; const char *pos;
char str_number[32];
struct t_irc_modelist *ptr_modelist; struct t_irc_modelist *ptr_modelist;
struct t_irc_modelist_item *ptr_item; struct t_irc_modelist_item *ptr_item;
+13 -15
View File
@@ -201,7 +201,8 @@ struct t_irc_server *
irc_config_get_server_from_option_name (const char *name) irc_config_get_server_from_option_name (const char *name)
{ {
struct t_irc_server *ptr_server; struct t_irc_server *ptr_server;
char *pos_option, *server_name; const char *pos_option;
char *server_name;
ptr_server = NULL; ptr_server = NULL;
@@ -274,7 +275,7 @@ irc_config_compute_nick_colors (void)
int int
irc_config_display_channel_modes_arguments (const char *modes) irc_config_display_channel_modes_arguments (const char *modes)
{ {
char *pos_space, *pos; const char *pos_space, *pos;
const char *ptr_mode; const char *ptr_mode;
pos_space = strchr (modes, ' '); pos_space = strchr (modes, ' ');
@@ -1287,10 +1288,8 @@ irc_config_server_check_value_cb (const void *pointer, void *data,
struct t_config_option *option, struct t_config_option *option,
const char *value) const char *value)
{ {
int index_option, proxy_found; int index_option, number, proxy_found;
const char *pos_error, *proxy_name; const char *pos_error, *proxy_name;
char *error;
long number;
struct t_infolist *infolist; struct t_infolist *infolist;
/* make C compiler happy */ /* make C compiler happy */
@@ -1363,9 +1362,7 @@ irc_config_server_check_value_cb (const void *pointer, void *data,
case IRC_SERVER_OPTION_SPLIT_MSG_MAX_LENGTH: case IRC_SERVER_OPTION_SPLIT_MSG_MAX_LENGTH:
if (!value || !value[0]) if (!value || !value[0])
break; break;
error = NULL; if (!weechat_util_parse_int (value, 10, &number))
number = strtol (value, &error, 10);
if (!error || error[0])
{ {
/* /*
* not a valid number, but we return 1 (OK) to let WeeChat * not a valid number, but we return 1 (OK) to let WeeChat
@@ -2811,7 +2808,8 @@ irc_config_server_read_cb (const void *pointer, void *data,
{ {
struct t_irc_server *ptr_server; struct t_irc_server *ptr_server;
int index_option, rc, i; int index_option, rc, i;
char *pos_option, *server_name; const char *pos_option;
char *server_name;
/* make C compiler happy */ /* make C compiler happy */
(void) pointer; (void) pointer;
@@ -2940,9 +2938,9 @@ irc_config_update_cb (const void *pointer, void *data,
int version_read, int version_read,
struct t_hashtable *data_read) struct t_hashtable *data_read)
{ {
const char *ptr_config, *ptr_section, *ptr_option, *ptr_value; const char *ptr_config, *ptr_section, *ptr_option, *ptr_value, *pos_option;
const char *option_autojoin_delay = "autojoin_delay"; const char *option_autojoin_delay = "autojoin_delay";
char *new_option, *pos_option, *new_value; char *new_option, *pos_new_option, *new_value;
int changes, length; int changes, length;
/* make C compiler happy */ /* make C compiler happy */
@@ -2997,11 +2995,11 @@ irc_config_update_cb (const void *pointer, void *data,
new_option = strdup (ptr_option); new_option = strdup (ptr_option);
if (new_option) if (new_option)
{ {
pos_option = strrchr (new_option, '.'); pos_new_option = strrchr (new_option, '.');
if (pos_option) if (pos_new_option)
{ {
pos_option++; pos_new_option++;
memcpy (pos_option, "tls", 3); memcpy (pos_new_option, "tls", 3);
weechat_printf ( weechat_printf (
NULL, NULL,
_("IRC option renamed: \"irc.%s.%s\" => \"irc.%s.%s\""), _("IRC option renamed: \"irc.%s.%s\" => \"irc.%s.%s\""),
+21 -24
View File
@@ -67,8 +67,8 @@ irc_info_info_irc_is_channel_cb (const void *pointer, void *data,
const char *info_name, const char *info_name,
const char *arguments) const char *arguments)
{ {
char *pos_comma, *server; char *server;
const char *pos_channel; const char *pos_channel, *pos_comma;
struct t_irc_server *ptr_server; struct t_irc_server *ptr_server;
/* make C compiler happy */ /* make C compiler happy */
@@ -106,8 +106,8 @@ irc_info_info_irc_is_nick_cb (const void *pointer, void *data,
const char *info_name, const char *info_name,
const char *arguments) const char *arguments)
{ {
char *pos_comma, *server; char *server;
const char *pos_nick; const char *pos_nick, *pos_comma;
struct t_irc_server *ptr_server; struct t_irc_server *ptr_server;
/* make C compiler happy */ /* make C compiler happy */
@@ -233,8 +233,8 @@ irc_info_info_irc_buffer_cb (const void *pointer, void *data,
const char *info_name, const char *info_name,
const char *arguments) const char *arguments)
{ {
char *pos_comma, *pos_comma2, *server, *channel, *host; char *server, *channel, *host;
const char *nick; const char *nick, *pos_comma, *pos_comma2;
struct t_irc_server *ptr_server; struct t_irc_server *ptr_server;
struct t_irc_channel *ptr_channel; struct t_irc_channel *ptr_channel;
@@ -332,8 +332,8 @@ irc_info_info_irc_server_isupport_cb (const void *pointer, void *data,
const char *info_name, const char *info_name,
const char *arguments) const char *arguments)
{ {
char *pos_comma, *server; char *server;
const char *isupport_value; const char *isupport_value, *pos_comma;
struct t_irc_server *ptr_server; struct t_irc_server *ptr_server;
/* make C compiler happy */ /* make C compiler happy */
@@ -373,8 +373,8 @@ irc_info_info_irc_server_isupport_value_cb (const void *pointer, void *data,
const char *info_name, const char *info_name,
const char *arguments) const char *arguments)
{ {
char *pos_comma, *server; char *server;
const char *isupport_value; const char *isupport_value, *pos_comma;
struct t_irc_server *ptr_server; struct t_irc_server *ptr_server;
/* make C compiler happy */ /* make C compiler happy */
@@ -414,7 +414,8 @@ irc_info_info_irc_server_cap_cb (const void *pointer, void *data,
const char *info_name, const char *info_name,
const char *arguments) const char *arguments)
{ {
char *pos_comma, *server; char *server;
const char *pos_comma;
int has_cap; int has_cap;
struct t_irc_server *ptr_server; struct t_irc_server *ptr_server;
@@ -455,8 +456,8 @@ irc_info_info_irc_server_cap_value_cb (const void *pointer, void *data,
const char *info_name, const char *info_name,
const char *arguments) const char *arguments)
{ {
char *pos_comma, *server; char *server;
const char *cap_value; const char *cap_value, *pos_comma;
struct t_irc_server *ptr_server; struct t_irc_server *ptr_server;
/* make C compiler happy */ /* make C compiler happy */
@@ -496,8 +497,8 @@ irc_info_info_irc_is_message_ignored_cb (const void *pointer, void *data,
const char *info_name, const char *info_name,
const char *arguments) const char *arguments)
{ {
char *pos_comma, *server; char *server;
const char *pos_message; const char *pos_message, *pos_comma;
struct t_irc_server *ptr_server; struct t_irc_server *ptr_server;
/* make C compiler happy */ /* make C compiler happy */
@@ -984,9 +985,8 @@ irc_info_infolist_irc_modelist_item_cb (const void *pointer, void *data,
struct t_irc_channel *ptr_channel; struct t_irc_channel *ptr_channel;
struct t_irc_modelist *ptr_modelist; struct t_irc_modelist *ptr_modelist;
struct t_irc_modelist_item *ptr_item; struct t_irc_modelist_item *ptr_item;
char **argv, *error; char **argv;
int argc; int argc, number;
long number;
/* make C compiler happy */ /* make C compiler happy */
(void) pointer; (void) pointer;
@@ -1028,15 +1028,12 @@ irc_info_infolist_irc_modelist_item_cb (const void *pointer, void *data,
} }
if (!obj_pointer && (argc >= 4)) if (!obj_pointer && (argc >= 4))
{ {
error = NULL; if (!weechat_util_parse_int (argv[3], 10, &number) || (number < 0))
number = strtol (argv[3], &error, 10);
if (!error || error[0] || (number < 0))
{ {
weechat_string_free_split (argv); weechat_string_free_split (argv);
return NULL; return NULL;
} }
obj_pointer = irc_modelist_item_search_number (ptr_modelist, obj_pointer = irc_modelist_item_search_number (ptr_modelist, number);
(int)number);
if (!obj_pointer) if (!obj_pointer)
{ {
weechat_string_free_split (argv); weechat_string_free_split (argv);
@@ -1358,7 +1355,7 @@ irc_info_init (void)
weechat_hook_info ( weechat_hook_info (
"irc_nick_from_host", "irc_nick_from_host",
N_("get nick from IRC host"), N_("get nick from IRC host"),
N_("IRC host (like `:nick!name@server.com`)"), N_("IRC host (like `:nick!name@server`)"),
&irc_info_info_irc_nick_from_host_cb, NULL, NULL); &irc_info_info_irc_nick_from_host_cb, NULL, NULL);
weechat_hook_info ( weechat_hook_info (
"irc_nick_color", "irc_nick_color",
+1 -1
View File
@@ -457,7 +457,7 @@ irc_input_send_cb (const void *pointer, void *data,
const char *type_data, void *signal_data) const char *type_data, void *signal_data)
{ {
const char *ptr_string, *ptr_message; const char *ptr_string, *ptr_message;
char *pos_semicol1, *pos_semicol2, *pos_semicol3, *pos_semicol4; const char *pos_semicol1, *pos_semicol2, *pos_semicol3, *pos_semicol4;
char *server, *channel, *options, *tags, *data_with_colors, **list_options; char *server, *channel, *options, *tags, *data_with_colors, **list_options;
int i, num_options, flags, force_user_message; int i, num_options, flags, force_user_message;
struct t_irc_server *ptr_server; struct t_irc_server *ptr_server;
+16 -22
View File
@@ -234,9 +234,8 @@ int
irc_list_channel_match_filter (struct t_irc_server *server, irc_list_channel_match_filter (struct t_irc_server *server,
struct t_irc_list_channel *channel) struct t_irc_list_channel *channel)
{ {
char *error, *result; char *result;
long number; int match, number;
int match;
/* no filter? then any channel is matching */ /* no filter? then any channel is matching */
if (!server->list->filter) if (!server->list->filter)
@@ -280,25 +279,22 @@ irc_list_channel_match_filter (struct t_irc_server *server,
else if (strncmp (server->list->filter, "u:>", 3) == 0) else if (strncmp (server->list->filter, "u:>", 3) == 0)
{ {
/* filter by users (> N)*/ /* filter by users (> N)*/
error = NULL; if (weechat_util_parse_int (server->list->filter + 3, 10, &number)
number = strtol (server->list->filter + 3, &error, 10); && (channel->users > number))
if (error && !error[0] && channel->users > (int)number)
return 1; return 1;
} }
else if (strncmp (server->list->filter, "u:<", 3) == 0) else if (strncmp (server->list->filter, "u:<", 3) == 0)
{ {
/* filter by users (< N)*/ /* filter by users (< N)*/
error = NULL; if (weechat_util_parse_int (server->list->filter + 3, 10, &number)
number = strtol (server->list->filter + 3, &error, 10); && (channel->users < number))
if (error && !error[0] && channel->users < (int)number)
return 1; return 1;
} }
else if (strncmp (server->list->filter, "u:", 2) == 0) else if (strncmp (server->list->filter, "u:", 2) == 0)
{ {
/* filter by users */ /* filter by users */
error = NULL; if (weechat_util_parse_int (server->list->filter + 2, 10, &number)
number = strtol (server->list->filter + 2, &error, 10); && (channel->users >= number))
if (error && !error[0] && channel->users >= (int)number)
return 1; return 1;
} }
else else
@@ -375,10 +371,9 @@ int
irc_list_parse_messages (struct t_irc_server *server, const char *output) irc_list_parse_messages (struct t_irc_server *server, const char *output)
{ {
struct t_irc_list_channel *channel; struct t_irc_list_channel *channel;
char **irc_msgs, *command, **params, *error; char **irc_msgs, *command, **params;
const char *ptr_name; const char *ptr_name;
int i, count_irc_msgs, num_params, length, keep_colors; int i, count_irc_msgs, num_params, length, keep_colors, number;
long number;
if (server->list->channels) if (server->list->channels)
{ {
@@ -439,9 +434,9 @@ irc_list_parse_messages (struct t_irc_server *server, const char *output)
ptr_name++; ptr_name++;
} }
channel->name2 = strdup (ptr_name); channel->name2 = strdup (ptr_name);
error = NULL; if (!weechat_util_parse_int (params[2], 10, &number))
number = strtol (params[2], &error, 10); number = 0;
channel->users = (error && !error[0]) ? number : 0; channel->users = number;
channel->topic = (num_params > 3) ? channel->topic = (num_params > 3) ?
irc_color_decode (params[3], keep_colors) : NULL; irc_color_decode (params[3], keep_colors) : NULL;
length = weechat_utf8_strlen_screen (channel->name); length = weechat_utf8_strlen_screen (channel->name);
@@ -481,10 +476,9 @@ irc_list_buffer_set_title (struct t_irc_server *server)
snprintf (str_title, sizeof (str_title), snprintf (str_title, sizeof (str_title),
_("%d channels (total: %d) | Filter: %s | Sort: %s | " _("%d channels (total: %d) | Filter: %s | Sort: %s | "
"Key(input): " "Keys: ctrl+j=join channel | "
"ctrl+j=join channel, " "Input: $=refresh, s:x,y=sort, words=filter, *=reset filter, "
"($)=refresh, " "q=close buffer"),
"(q)=close buffer"),
num_channels, num_channels,
num_channels_total, num_channels_total,
(server->list->filter) ? server->list->filter : "*", (server->list->filter) ? server->list->filter : "*",
+12 -15
View File
@@ -598,8 +598,7 @@ irc_message_parse_cap_multiline_value (struct t_irc_server *server,
{ {
struct t_hashtable *values; struct t_hashtable *values;
const char *ptr_value; const char *ptr_value;
char *error; int number;
long number;
if (!server) if (!server)
return; return;
@@ -617,18 +616,14 @@ irc_message_parse_cap_multiline_value (struct t_irc_server *server,
ptr_value = (const char *)weechat_hashtable_get (values, "max-bytes"); ptr_value = (const char *)weechat_hashtable_get (values, "max-bytes");
if (ptr_value) if (ptr_value)
{ {
error = NULL; if (weechat_util_parse_int (ptr_value, 10, &number))
number = strtol (ptr_value, &error, 10);
if (error && !error[0])
server->multiline_max_bytes = number; server->multiline_max_bytes = number;
} }
ptr_value = (const char *)weechat_hashtable_get (values, "max-lines"); ptr_value = (const char *)weechat_hashtable_get (values, "max-lines");
if (ptr_value) if (ptr_value)
{ {
error = NULL; if (weechat_util_parse_int (ptr_value, 10, &number))
number = strtol (ptr_value, &error, 10);
if (error && !error[0])
server->multiline_max_lines = number; server->multiline_max_lines = number;
} }
@@ -707,8 +702,8 @@ const char *
irc_message_get_nick_from_host (const char *host) irc_message_get_nick_from_host (const char *host)
{ {
static char nick[128]; static char nick[128];
char host2[128], *pos_space, *pos; char host2[128];
const char *ptr_host; const char *ptr_host, *pos_space, *pos;
if (!host) if (!host)
return NULL; return NULL;
@@ -756,8 +751,8 @@ const char *
irc_message_get_address_from_host (const char *host) irc_message_get_address_from_host (const char *host)
{ {
static char address[256]; static char address[256];
char host2[256], *pos_space, *pos; char host2[256];
const char *ptr_host; const char *ptr_host, *pos_space, *pos;
if (!host) if (!host)
return NULL; return NULL;
@@ -1182,8 +1177,9 @@ irc_message_split_join (struct t_irc_message_split_context *context,
{ {
int channels_count, keys_count, length, length_no_channel; int channels_count, keys_count, length, length_no_channel;
int length_to_add, index_channel; int length_to_add, index_channel;
char **channels, **keys, *pos, *str; char **channels, **keys, *str;
char msg_to_send[16384], keys_to_add[16384]; char msg_to_send[16384], keys_to_add[16384];
const char *pos;
max_length -= 2; /* by default: 512 - 2 = 510 bytes */ max_length -= 2; /* by default: 512 - 2 = 510 bytes */
@@ -1510,7 +1506,7 @@ irc_message_split_privmsg_notice (struct t_irc_message_split_context *context,
int int
irc_message_split_005 (struct t_irc_message_split_context *context, irc_message_split_005 (struct t_irc_message_split_context *context,
const char *tags, const char *host, const char *command, const char *tags, const char *host, const char *command,
const char *target, const char *arguments, const char *target, char *arguments,
int max_length) int max_length)
{ {
char *pos, suffix[4096]; char *pos, suffix[4096];
@@ -1570,7 +1566,8 @@ irc_message_split (struct t_irc_server *server, const char *message)
{ {
struct t_irc_message_split_context split_context; struct t_irc_message_split_context split_context;
char **argv, **argv_eol, *tags, *host, *command, *arguments, target[4096]; char **argv, **argv_eol, *tags, *host, *command, *arguments, target[4096];
char *pos, monitor_action[3]; char monitor_action[3];
const char *pos;
int split_ok, split_privmsg, argc, index_args, max_length_nick; int split_ok, split_privmsg, argc, index_args, max_length_nick;
int max_length_user, max_length_host, max_length_nick_user_host; int max_length_user, max_length_host, max_length_nick_user_host;
int split_msg_max_length, multiline, multiline_max_bytes; int split_msg_max_length, multiline, multiline_max_bytes;
+2 -2
View File
@@ -104,8 +104,8 @@ irc_mode_get_arguments_colors (const char *arguments)
char char
irc_mode_get_chanmode_type (struct t_irc_server *server, char chanmode) irc_mode_get_chanmode_type (struct t_irc_server *server, char chanmode)
{ {
char chanmode_type, *pos; char chanmode_type;
const char *chanmodes, *ptr_chanmodes; const char *chanmodes, *ptr_chanmodes, *pos;
/* /*
* assume it is type 'B' if mode is in prefix * assume it is type 'B' if mode is in prefix
+2 -3
View File
@@ -785,9 +785,8 @@ int
irc_notify_hsignal_cb (const void *pointer, void *data, const char *signal, irc_notify_hsignal_cb (const void *pointer, void *data, const char *signal,
struct t_hashtable *hashtable) struct t_hashtable *hashtable)
{ {
const char *error, *server, *pattern, *command, *output; const char *error, *server, *pattern, *command, *output, *ptr_args;
char **messages, **nicks_sent, **nicks_recv, *irc_cmd, *arguments; char **messages, **nicks_sent, **nicks_recv, *irc_cmd, *arguments, *pos;
char *ptr_args, *pos;
int i, j, num_messages, num_nicks_sent, num_nicks_recv, nick_was_sent; int i, j, num_messages, num_nicks_sent, num_nicks_recv, nick_was_sent;
int away_message_updated, no_such_nick; int away_message_updated, no_such_nick;
struct t_irc_server *ptr_server; struct t_irc_server *ptr_server;
+19 -31
View File
@@ -2499,8 +2499,8 @@ IRC_PROTOCOL_CALLBACK(note)
IRC_PROTOCOL_CALLBACK(notice) IRC_PROTOCOL_CALLBACK(notice)
{ {
char *notice_args, *pos, end_char, *channel, str_tags[1024]; char *notice_args, end_char, *channel, str_tags[1024];
const char *pos_target, *pos_args, *nick_address; const char *pos, *pos_target, *pos_args, *nick_address;
struct t_irc_channel *ptr_channel; struct t_irc_channel *ptr_channel;
struct t_irc_nick *ptr_nick; struct t_irc_nick *ptr_nick;
int notify_private, is_channel, is_channel_orig, display_host; int notify_private, is_channel, is_channel_orig, display_host;
@@ -4061,9 +4061,8 @@ IRC_PROTOCOL_CALLBACK(001)
IRC_PROTOCOL_CALLBACK(005) IRC_PROTOCOL_CALLBACK(005)
{ {
char *str_info, *error, *isupport2; char *str_info, *isupport2;
int i, arg_last, length_isupport, length, casemapping, utf8mapping; int i, arg_last, length_isupport, length, casemapping, utf8mapping, value;
long value;
IRC_PROTOCOL_MIN_PARAMS(2); IRC_PROTOCOL_MIN_PARAMS(2);
@@ -4081,34 +4080,26 @@ IRC_PROTOCOL_CALLBACK(005)
else if (strncmp (ctxt->params[i], "LINELEN=", 8) == 0) else if (strncmp (ctxt->params[i], "LINELEN=", 8) == 0)
{ {
/* save max message length */ /* save max message length */
error = NULL; if (weechat_util_parse_int (ctxt->params[i] + 8, 10, &value) && (value > 0))
value = strtol (ctxt->params[i] + 8, &error, 10); ctxt->server->msg_max_length = value;
if (error && !error[0] && (value > 0))
ctxt->server->msg_max_length = (int)value;
} }
else if (strncmp (ctxt->params[i], "NICKLEN=", 8) == 0) else if (strncmp (ctxt->params[i], "NICKLEN=", 8) == 0)
{ {
/* save max nick length */ /* save max nick length */
error = NULL; if (weechat_util_parse_int (ctxt->params[i] + 8, 10, &value) && (value > 0))
value = strtol (ctxt->params[i] + 8, &error, 10); ctxt->server->nick_max_length = value;
if (error && !error[0] && (value > 0))
ctxt->server->nick_max_length = (int)value;
} }
else if (strncmp (ctxt->params[i], "USERLEN=", 8) == 0) else if (strncmp (ctxt->params[i], "USERLEN=", 8) == 0)
{ {
/* save max user length */ /* save max user length */
error = NULL; if (weechat_util_parse_int (ctxt->params[i] + 8, 10, &value) && (value > 0))
value = strtol (ctxt->params[i] + 8, &error, 10); ctxt->server->user_max_length = value;
if (error && !error[0] && (value > 0))
ctxt->server->user_max_length = (int)value;
} }
else if (strncmp (ctxt->params[i], "HOSTLEN=", 8) == 0) else if (strncmp (ctxt->params[i], "HOSTLEN=", 8) == 0)
{ {
/* save max host length */ /* save max host length */
error = NULL; if (weechat_util_parse_int (ctxt->params[i] + 8, 10, &value) && (value > 0))
value = strtol (ctxt->params[i] + 8, &error, 10); ctxt->server->host_max_length = value;
if (error && !error[0] && (value > 0))
ctxt->server->host_max_length = (int)value;
} }
else if (strncmp (ctxt->params[i], "CASEMAPPING=", 12) == 0) else if (strncmp (ctxt->params[i], "CASEMAPPING=", 12) == 0)
{ {
@@ -4144,10 +4135,8 @@ IRC_PROTOCOL_CALLBACK(005)
else if (strncmp (ctxt->params[i], "MONITOR=", 8) == 0) else if (strncmp (ctxt->params[i], "MONITOR=", 8) == 0)
{ {
/* save monitor (limit) */ /* save monitor (limit) */
error = NULL; if (weechat_util_parse_int (ctxt->params[i] + 8, 10, &value) && (value > 0))
value = strtol (ctxt->params[i] + 8, &error, 10); ctxt->server->monitor = value;
if (error && !error[0] && (value > 0))
ctxt->server->monitor = (int)value;
} }
else if (strncmp (ctxt->params[i], "CLIENTTAGDENY=", 14) == 0) else if (strncmp (ctxt->params[i], "CLIENTTAGDENY=", 14) == 0)
{ {
@@ -7921,12 +7910,11 @@ irc_protocol_recv_command (struct t_irc_server *server,
int ignore_batch_tag) int ignore_batch_tag)
{ {
int i, cmd_found, return_code, ignored; int i, cmd_found, return_code, ignored;
char *pos_space, *tags;
struct t_irc_channel *ptr_channel; struct t_irc_channel *ptr_channel;
t_irc_recv_func *cmd_recv_func; t_irc_recv_func *cmd_recv_func;
const char *ptr_msg_after_tags, *ptr_batch_ref, *ptr_tag_time; const char *ptr_msg_after_tags, *ptr_batch_ref, *ptr_tag_time;
const char *nick1, *address1, *host1; const char *pos_space, *nick1, *address1, *host1;
char *host, *host_no_color; char *tags, *host, *host_no_color, *pos_space_host;
struct t_irc_protocol_ctxt ctxt; struct t_irc_protocol_ctxt ctxt;
struct timeval tv; struct timeval tv;
@@ -8198,9 +8186,9 @@ irc_protocol_recv_command (struct t_irc_server *server,
host = (host1) ? strdup (host1) : NULL; host = (host1) ? strdup (host1) : NULL;
if (host) if (host)
{ {
pos_space = strchr (host, ' '); pos_space_host = strchr (host, ' ');
if (pos_space) if (pos_space_host)
pos_space[0] = '\0'; pos_space_host[0] = '\0';
} }
host_no_color = (host) ? irc_color_decode (host, 0) : NULL; host_no_color = (host) ? irc_color_decode (host, 0) : NULL;
ctxt.host = (host) ? ctxt.host = (host) ?
+7 -18
View File
@@ -404,9 +404,8 @@ irc_redirect_new_with_commands (struct t_irc_server *server,
const char *cmd_filter) const char *cmd_filter)
{ {
struct t_irc_redirect *new_redirect; struct t_irc_redirect *new_redirect;
char **items[4], *item_upper, *pos, *error; char **items[4], *item_upper, *pos;
int i, j, num_items[4]; int i, j, num_items[4], value;
long value;
struct t_hashtable *hash_cmd[4]; struct t_hashtable *hash_cmd[4];
new_redirect = malloc (sizeof (*new_redirect)); new_redirect = malloc (sizeof (*new_redirect));
@@ -460,9 +459,7 @@ irc_redirect_new_with_commands (struct t_irc_server *server,
if (pos) if (pos)
{ {
pos[0] = '\0'; pos[0] = '\0';
error = NULL; if (!weechat_util_parse_int (pos + 1, 10, &value))
value = strtol (pos + 1, &error, 10);
if (!error || error[0])
value = -1; value = -1;
} }
item_upper = weechat_string_toupper (items[i][j]); item_upper = weechat_string_toupper (items[i][j]);
@@ -616,7 +613,7 @@ void
irc_redirect_init_command (struct t_irc_redirect *redirect, irc_redirect_init_command (struct t_irc_redirect *redirect,
const char *command) const char *command)
{ {
char *pos; const char *pos;
if (!redirect) if (!redirect)
return; return;
@@ -1257,7 +1254,6 @@ irc_redirect_pattern_hsignal_cb (const void *pointer, void *data,
struct t_hashtable *hashtable) struct t_hashtable *hashtable)
{ {
const char *pattern, *str_timeout, *cmd_start, *cmd_stop, *cmd_extra; const char *pattern, *str_timeout, *cmd_start, *cmd_stop, *cmd_extra;
char *error;
int number, timeout; int number, timeout;
/* make C compiler happy */ /* make C compiler happy */
@@ -1295,9 +1291,7 @@ irc_redirect_pattern_hsignal_cb (const void *pointer, void *data,
timeout = 0; timeout = 0;
if (str_timeout && str_timeout[0]) if (str_timeout && str_timeout[0])
{ {
error = NULL; if (weechat_util_parse_int (str_timeout, 10, &number))
number = (int)strtol (str_timeout, &error, 10);
if (error && !error[0])
timeout = number; timeout = number;
} }
@@ -1325,7 +1319,6 @@ irc_redirect_command_hsignal_cb (const void *pointer, void *data,
{ {
const char *server, *pattern, *redirect_signal, *str_count, *string; const char *server, *pattern, *redirect_signal, *str_count, *string;
const char *str_timeout, *cmd_filter; const char *str_timeout, *cmd_filter;
char *error;
struct t_irc_server *ptr_server; struct t_irc_server *ptr_server;
int number, count, timeout; int number, count, timeout;
@@ -1366,18 +1359,14 @@ irc_redirect_command_hsignal_cb (const void *pointer, void *data,
count = 1; count = 1;
if (str_count && str_count[0]) if (str_count && str_count[0])
{ {
error = NULL; if (weechat_util_parse_int (str_count, 10, &number))
number = (int)strtol (str_count, &error, 10);
if (error && !error[0])
count = number; count = number;
} }
timeout = 0; timeout = 0;
if (str_timeout && str_timeout[0]) if (str_timeout && str_timeout[0])
{ {
error = NULL; if (weechat_util_parse_int (str_timeout, 10, &number))
number = (int)strtol (str_timeout, &error, 10);
if (error && !error[0])
timeout = number; timeout = number;
} }
+5 -7
View File
@@ -109,7 +109,7 @@ irc_sasl_mechanism_scram (struct t_irc_server *server,
const char *sasl_password, const char *sasl_password,
char **sasl_error) char **sasl_error)
{ {
char *answer_base64, *string, *username, *username2, *data, **attrs, *error; char *answer_base64, *string, *username, *username2, *data, **attrs;
char nonce_client[18], nonce_client_base64[24 + 1], *nonce_server; char nonce_client[18], nonce_client_base64[24 + 1], *nonce_server;
char *salt_base64, *salt, *verifier_base64, *verifier, *attr_error; char *salt_base64, *salt, *verifier_base64, *verifier, *attr_error;
char *auth_no_proof, *auth_message; char *auth_no_proof, *auth_message;
@@ -117,10 +117,10 @@ irc_sasl_mechanism_scram (struct t_irc_server *server,
char client_signature[512 / 8], client_proof[512 / 8]; char client_signature[512 / 8], client_proof[512 / 8];
char client_proof_base64[((512 / 8) * 4) + 1], server_key[512 / 8]; char client_proof_base64[((512 / 8) * 4) + 1], server_key[512 / 8];
char server_signature[512 / 8]; char server_signature[512 / 8];
int i, rc, length, num_attrs, iterations, salt_size, salted_password_size; int i, rc, length, num_attrs, iterations, number;
int salt_size, salted_password_size;
int client_key_size, stored_key_size, client_signature_size; int client_key_size, stored_key_size, client_signature_size;
int server_key_size, server_signature_size, verifier_size; int server_key_size, server_signature_size, verifier_size;
long number;
if (!server || !hash_algo || !data_base64 || !sasl_username if (!server || !hash_algo || !data_base64 || !sasl_username
|| !sasl_password) || !sasl_password)
@@ -202,10 +202,8 @@ irc_sasl_mechanism_scram (struct t_irc_server *server,
} }
else if (strncmp (attrs[i], "i=", 2) == 0) else if (strncmp (attrs[i], "i=", 2) == 0)
{ {
error = NULL; if (weechat_util_parse_int (attrs[i] + 2, 10, &number))
number = strtol (attrs[i] + 2, &error, 10); iterations = number;
if (error && !error[0])
iterations = (int)number;
} }
else if (strncmp (attrs[i], "v=", 2) == 0) else if (strncmp (attrs[i], "v=", 2) == 0)
{ {
+155 -169
View File
@@ -588,7 +588,7 @@ irc_server_sasl_enabled (struct t_irc_server *server)
char * char *
irc_server_get_name_without_port (const char *name) irc_server_get_name_without_port (const char *name)
{ {
char *pos; const char *pos;
if (!name) if (!name)
return NULL; return NULL;
@@ -676,10 +676,9 @@ int
irc_server_set_addresses (struct t_irc_server *server, const char *addresses, irc_server_set_addresses (struct t_irc_server *server, const char *addresses,
int tls) int tls)
{ {
int rc, i, default_port; int rc, i, default_port, number;
char *pos, *error, *addresses_eval; char *pos, *addresses_eval;
const char *ptr_addresses; const char *ptr_addresses;
long number;
if (!server) if (!server)
return 0; return 0;
@@ -753,19 +752,14 @@ irc_server_set_addresses (struct t_irc_server *server, const char *addresses,
server->addresses_count * sizeof (server->retry_array[0])); server->addresses_count * sizeof (server->retry_array[0]));
for (i = 0; i < server->addresses_count; i++) for (i = 0; i < server->addresses_count; i++)
{ {
server->ports_array[i] = default_port;
pos = strchr (server->addresses_array[i], '/'); pos = strchr (server->addresses_array[i], '/');
if (pos) if (pos)
{ {
pos[0] = 0; pos[0] = 0;
pos++; pos++;
error = NULL; if (weechat_util_parse_int (pos, 10, &number))
number = strtol (pos, &error, 10); server->ports_array[i] = number;
server->ports_array[i] = (error && !error[0]) ?
number : default_port;
}
else
{
server->ports_array[i] = default_port;
} }
server->retry_array[i] = 0; server->retry_array[i] = 0;
} }
@@ -1134,7 +1128,7 @@ void
irc_server_set_prefix_modes_chars (struct t_irc_server *server, irc_server_set_prefix_modes_chars (struct t_irc_server *server,
const char *prefix) const char *prefix)
{ {
char *pos; const char *pos;
int i, old_length_chars, length_modes, length_chars; int i, old_length_chars, length_modes, length_chars;
if (!server || !prefix) if (!server || !prefix)
@@ -1379,8 +1373,7 @@ irc_server_get_prefix_chars (struct t_irc_server *server)
int int
irc_server_get_prefix_mode_index (struct t_irc_server *server, char mode) irc_server_get_prefix_mode_index (struct t_irc_server *server, char mode)
{ {
const char *prefix_modes; const char *prefix_modes, *pos;
char *pos;
if (server) if (server)
{ {
@@ -1405,8 +1398,7 @@ int
irc_server_get_prefix_char_index (struct t_irc_server *server, irc_server_get_prefix_char_index (struct t_irc_server *server,
char prefix_char) char prefix_char)
{ {
const char *prefix_chars; const char *prefix_chars, *pos;
char *pos;
if (server) if (server)
{ {
@@ -1520,18 +1512,14 @@ int
irc_server_get_max_modes (struct t_irc_server *server) irc_server_get_max_modes (struct t_irc_server *server)
{ {
const char *support_modes; const char *support_modes;
char *error; int max_modes, number;
long number;
int max_modes;
max_modes = 4; max_modes = 4;
support_modes = irc_server_get_isupport_value (server, "MODES"); support_modes = irc_server_get_isupport_value (server, "MODES");
if (support_modes) if (support_modes)
{ {
error = NULL; if (weechat_util_parse_int (support_modes, 10, &number))
number = strtol (support_modes, &error, 10);
if (error && !error[0])
{ {
max_modes = number; max_modes = number;
if (max_modes < 1) if (max_modes < 1)
@@ -2443,8 +2431,8 @@ irc_server_copy (struct t_irc_server *server, const char *new_name)
{ {
struct t_irc_server *new_server; struct t_irc_server *new_server;
struct t_infolist *infolist; struct t_infolist *infolist;
char *mask, *pos; const char *option_name, *pos;
const char *option_name; char *mask;
int index_option; int index_option;
/* check if another server exists with this name */ /* check if another server exists with this name */
@@ -2502,9 +2490,9 @@ irc_server_copy (struct t_irc_server *server, const char *new_name)
int int
irc_server_rename (struct t_irc_server *server, const char *new_name) irc_server_rename (struct t_irc_server *server, const char *new_name)
{ {
char *mask, *pos_option, *new_option_name, charset_modifier[1024]; char *mask, *new_option_name, charset_modifier[1024];
char *buffer_name; char *buffer_name;
const char *option_name; const char *option_name, *pos_option;
struct t_infolist *infolist; struct t_infolist *infolist;
struct t_config_option *ptr_option; struct t_config_option *ptr_option;
struct t_irc_channel *ptr_channel; struct t_irc_channel *ptr_channel;
@@ -2999,8 +2987,8 @@ irc_server_send_one_msg (struct t_irc_server *server, int flags,
const char *tags) const char *tags)
{ {
static char buffer[4096]; static char buffer[4096];
const char *ptr_msg, *ptr_chan_nick; const char *ptr_chan_nick;
char *new_msg, *pos, *tags_to_send, *msg_encoded; char *new_msg, *ptr_msg, *pos, *tags_to_send, *msg_encoded;
char str_modifier[128], modifier_data[1024]; char str_modifier[128], modifier_data[1024];
int first_message, queue_msg, pos_channel, pos_text, pos_encode; int first_message, queue_msg, pos_channel, pos_text, pos_encode;
struct t_irc_redirect *ptr_redirect; struct t_irc_redirect *ptr_redirect;
@@ -3013,150 +3001,148 @@ irc_server_send_one_msg (struct t_irc_server *server, int flags,
server->name, server->name,
message); message);
/* no changes in new message */ /* message dropped? */
if (new_msg && (strcmp (message, new_msg) == 0)) if (new_msg && !new_msg[0])
{
free (new_msg);
new_msg = NULL;
}
/* message not dropped? */
if (!new_msg || new_msg[0])
{
first_message = 1;
ptr_msg = (new_msg) ? new_msg : message;
msg_encoded = NULL;
irc_message_parse (server,
ptr_msg,
NULL, /* tags */
NULL, /* message_without_tags */
NULL, /* nick */
NULL, /* user */
NULL, /* host */
NULL, /* command */
NULL, /* channel */
NULL, /* arguments */
NULL, /* text */
NULL, /* params */
NULL, /* num_params */
NULL, /* pos_command */
NULL, /* pos_arguments */
&pos_channel,
&pos_text);
switch (IRC_SERVER_OPTION_ENUM(server,
IRC_SERVER_OPTION_CHARSET_MESSAGE))
{
case IRC_SERVER_CHARSET_MESSAGE_MESSAGE:
pos_encode = 0;
break;
case IRC_SERVER_CHARSET_MESSAGE_CHANNEL:
pos_encode = (pos_channel >= 0) ? pos_channel : pos_text;
break;
case IRC_SERVER_CHARSET_MESSAGE_TEXT:
pos_encode = pos_text;
break;
default:
pos_encode = 0;
break;
}
if (pos_encode >= 0)
{
ptr_chan_nick = (channel) ? channel : nick;
if (ptr_chan_nick)
{
snprintf (modifier_data, sizeof (modifier_data),
"%s.%s.%s",
weechat_plugin->name,
server->name,
ptr_chan_nick);
}
else
{
snprintf (modifier_data, sizeof (modifier_data),
"%s.%s",
weechat_plugin->name,
server->name);
}
/*
* when UTF8ONLY is enabled, clients must not send non-UTF-8 data
* to the server; the charset encoding below is then done only if
* UTF8ONLY is *NOT* enabled
* (see: https://ircv3.net/specs/extensions/utf8-only)
*/
if (!server->utf8only)
{
msg_encoded = irc_message_convert_charset (ptr_msg, pos_encode,
"charset_encode",
modifier_data);
}
}
if (msg_encoded)
ptr_msg = msg_encoded;
while (ptr_msg && ptr_msg[0])
{
pos = strchr (ptr_msg, '\n');
if (pos)
pos[0] = '\0';
snprintf (buffer, sizeof (buffer), "%s\r\n", ptr_msg);
if (flags & IRC_SERVER_SEND_OUTQ_PRIO_IMMEDIATE)
queue_msg = 0;
else if (flags & IRC_SERVER_SEND_OUTQ_PRIO_HIGH)
queue_msg = 1;
else if (flags & IRC_SERVER_SEND_OUTQ_PRIO_LOW)
queue_msg = 2;
else
{
/*
* if connected to server (message 001 received), consider
* it's low priority (otherwise send immediately)
*/
queue_msg = (server->is_connected) ? 2 : 0;
}
tags_to_send = irc_server_get_tags_to_send (tags);
ptr_redirect = irc_redirect_search_available (server);
/* queue message (do not send anything now) */
irc_server_outqueue_add (server,
queue_msg,
command,
(new_msg && first_message) ? message : NULL,
buffer,
(new_msg) ? 1 : 0,
tags_to_send,
ptr_redirect);
/* mark redirect as "used" */
if (ptr_redirect)
ptr_redirect->assigned_to_command = 1;
free (tags_to_send);
if (pos)
{
pos[0] = '\n';
ptr_msg = pos + 1;
}
else
ptr_msg = NULL;
first_message = 0;
}
free (msg_encoded);
}
else
{ {
irc_raw_print (server, IRC_RAW_FLAG_SEND | IRC_RAW_FLAG_MODIFIED, irc_raw_print (server, IRC_RAW_FLAG_SEND | IRC_RAW_FLAG_MODIFIED,
_("(message dropped)")); _("(message dropped)"));
free (new_msg);
return;
} }
if (!new_msg)
new_msg = strdup (message);
if (!new_msg)
return;
first_message = 1;
ptr_msg = new_msg;
msg_encoded = NULL;
irc_message_parse (server,
ptr_msg,
NULL, /* tags */
NULL, /* message_without_tags */
NULL, /* nick */
NULL, /* user */
NULL, /* host */
NULL, /* command */
NULL, /* channel */
NULL, /* arguments */
NULL, /* text */
NULL, /* params */
NULL, /* num_params */
NULL, /* pos_command */
NULL, /* pos_arguments */
&pos_channel,
&pos_text);
switch (IRC_SERVER_OPTION_ENUM(server,
IRC_SERVER_OPTION_CHARSET_MESSAGE))
{
case IRC_SERVER_CHARSET_MESSAGE_MESSAGE:
pos_encode = 0;
break;
case IRC_SERVER_CHARSET_MESSAGE_CHANNEL:
pos_encode = (pos_channel >= 0) ? pos_channel : pos_text;
break;
case IRC_SERVER_CHARSET_MESSAGE_TEXT:
pos_encode = pos_text;
break;
default:
pos_encode = 0;
break;
}
if (pos_encode >= 0)
{
ptr_chan_nick = (channel) ? channel : nick;
if (ptr_chan_nick)
{
snprintf (modifier_data, sizeof (modifier_data),
"%s.%s.%s",
weechat_plugin->name,
server->name,
ptr_chan_nick);
}
else
{
snprintf (modifier_data, sizeof (modifier_data),
"%s.%s",
weechat_plugin->name,
server->name);
}
/*
* when UTF8ONLY is enabled, clients must not send non-UTF-8 data
* to the server; the charset encoding below is then done only if
* UTF8ONLY is *NOT* enabled
* (see: https://ircv3.net/specs/extensions/utf8-only)
*/
if (!server->utf8only)
{
msg_encoded = irc_message_convert_charset (ptr_msg, pos_encode,
"charset_encode",
modifier_data);
}
}
if (msg_encoded)
ptr_msg = msg_encoded;
while (ptr_msg && ptr_msg[0])
{
pos = strchr (ptr_msg, '\n');
if (pos)
pos[0] = '\0';
snprintf (buffer, sizeof (buffer), "%s\r\n", ptr_msg);
if (flags & IRC_SERVER_SEND_OUTQ_PRIO_IMMEDIATE)
queue_msg = 0;
else if (flags & IRC_SERVER_SEND_OUTQ_PRIO_HIGH)
queue_msg = 1;
else if (flags & IRC_SERVER_SEND_OUTQ_PRIO_LOW)
queue_msg = 2;
else
{
/*
* if connected to server (message 001 received), consider
* it's low priority (otherwise send immediately)
*/
queue_msg = (server->is_connected) ? 2 : 0;
}
tags_to_send = irc_server_get_tags_to_send (tags);
ptr_redirect = irc_redirect_search_available (server);
/* queue message (do not send anything now) */
irc_server_outqueue_add (server,
queue_msg,
command,
(new_msg && first_message) ? message : NULL,
buffer,
(new_msg) ? 1 : 0,
tags_to_send,
ptr_redirect);
/* mark redirect as "used" */
if (ptr_redirect)
ptr_redirect->assigned_to_command = 1;
free (tags_to_send);
if (pos)
{
pos[0] = '\n';
ptr_msg = pos + 1;
}
else
ptr_msg = NULL;
first_message = 0;
}
free (msg_encoded);
free (new_msg); free (new_msg);
} }
@@ -3450,7 +3436,7 @@ irc_server_msgq_add_unterminated (struct t_irc_server *server,
*/ */
void void
irc_server_msgq_add_buffer (struct t_irc_server *server, const char *buffer) irc_server_msgq_add_buffer (struct t_irc_server *server, char *buffer)
{ {
char *pos_cr, *pos_lf; char *pos_cr, *pos_lf;
+1 -1
View File
@@ -427,7 +427,7 @@ extern struct t_arraylist *irc_server_sendf (struct t_irc_server *server,
const char *tags, const char *tags,
const char *format, ...); const char *format, ...);
extern void irc_server_msgq_add_buffer (struct t_irc_server *server, extern void irc_server_msgq_add_buffer (struct t_irc_server *server,
const char *buffer); char *buffer);
extern void irc_server_msgq_flush (void); extern void irc_server_msgq_flush (void);
extern void irc_server_set_buffer_title (struct t_irc_server *server); extern void irc_server_set_buffer_title (struct t_irc_server *server);
extern struct t_gui_buffer *irc_server_create_buffer (struct t_irc_server *server); extern struct t_gui_buffer *irc_server_create_buffer (struct t_irc_server *server);
+13 -24
View File
@@ -356,11 +356,10 @@ irc_upgrade_read_cb (const void *pointer, void *data,
int object_id, int object_id,
struct t_infolist *infolist) struct t_infolist *infolist)
{ {
int flags, sock, size, i, index, nicks_count, num_items, utf8mapping; int flags, sock, size, i, index, nicks_count, num_items, number, utf8mapping;
long number; long long number_longlong;
time_t join_time; time_t join_time;
char *buf, option_name[64], **nicks, *nick_join, *pos, *error; char *buf, option_name[64], **nicks, *nick_join, *pos, **items;
char **items;
const char *buffer_name, *str, *nick; const char *buffer_name, *str, *nick;
struct t_irc_server *ptr_server; struct t_irc_server *ptr_server;
struct t_irc_nick *ptr_nick; struct t_irc_nick *ptr_nick;
@@ -521,10 +520,8 @@ irc_upgrade_read_cb (const void *pointer, void *data,
"LINELEN"); "LINELEN");
if (str) if (str)
{ {
error = NULL; if (weechat_util_parse_int (str, 10, &number))
number = strtol (str, &error, 10); irc_upgrade_current_server->msg_max_length = number;
if (error && !error[0])
irc_upgrade_current_server->msg_max_length = (int)number;
} }
} }
irc_upgrade_current_server->nick_max_length = weechat_infolist_integer (infolist, "nick_max_length"); irc_upgrade_current_server->nick_max_length = weechat_infolist_integer (infolist, "nick_max_length");
@@ -540,10 +537,8 @@ irc_upgrade_read_cb (const void *pointer, void *data,
"USERLEN"); "USERLEN");
if (str) if (str)
{ {
error = NULL; if (weechat_util_parse_int (str, 10, &number))
number = strtol (str, &error, 10); irc_upgrade_current_server->user_max_length = number;
if (error && !error[0])
irc_upgrade_current_server->user_max_length = (int)number;
} }
} }
/* "host_max_length" is new in WeeChat 2.6 */ /* "host_max_length" is new in WeeChat 2.6 */
@@ -558,10 +553,8 @@ irc_upgrade_read_cb (const void *pointer, void *data,
"HOSTLEN"); "HOSTLEN");
if (str) if (str)
{ {
error = NULL; if (weechat_util_parse_int (str, 10, &number))
number = strtol (str, &error, 10); irc_upgrade_current_server->host_max_length = number;
if (error && !error[0])
irc_upgrade_current_server->host_max_length = (int)number;
} }
} }
irc_upgrade_current_server->casemapping = weechat_infolist_integer (infolist, "casemapping"); irc_upgrade_current_server->casemapping = weechat_infolist_integer (infolist, "casemapping");
@@ -621,10 +614,8 @@ irc_upgrade_read_cb (const void *pointer, void *data,
"MONITOR"); "MONITOR");
if (str) if (str)
{ {
error = NULL; if (weechat_util_parse_int (str, 10, &number))
number = strtol (str, &error, 10); irc_upgrade_current_server->monitor = number;
if (error && !error[0])
irc_upgrade_current_server->monitor = (int)number;
} }
} }
/* "clienttagdeny" is new in WeeChat 3.3 */ /* "clienttagdeny" is new in WeeChat 3.3 */
@@ -771,11 +762,9 @@ irc_upgrade_read_cb (const void *pointer, void *data,
pos - nicks[i]); pos - nicks[i]);
if (nick_join) if (nick_join)
{ {
error = NULL; if (weechat_util_parse_longlong (pos + 1, 10, &number_longlong))
number = strtol (pos + 1, &error, 10);
if (error && !error[0])
{ {
join_time = (time_t)number; join_time = (time_t)number_longlong;
irc_channel_join_smart_filtered_add (irc_upgrade_current_channel, irc_channel_join_smart_filtered_add (irc_upgrade_current_channel,
nick_join, nick_join,
join_time); join_time);

Some files were not shown because too many files have changed in this diff Show More