mirror of
https://github.com/weechat/weechat.git
synced 2026-06-12 14:14:48 +02:00
Compare commits
71 Commits
v4.9.0
...
ci-rockylinux
| Author | SHA1 | Date | |
|---|---|---|---|
| b29f464322 | |||
| 171a9a9fc4 | |||
| d7bc041098 | |||
| 43a118ac47 | |||
| e540d7a2cf | |||
| 6948aea626 | |||
| 5dbb96b66a | |||
| 4fdcbf8f93 | |||
| e4b70ad252 | |||
| d7fd2b7b0b | |||
| 73cf57742e | |||
| bf7b8484cd | |||
| 86f51b66b3 | |||
| 1400b6c197 | |||
| c71978c0b3 | |||
| 4c38ce050b | |||
| 5520ed1950 | |||
| ad35aef1f4 | |||
| 88f0070674 | |||
| 7683287f71 | |||
| 33adaef85c | |||
| 6f3c804379 | |||
| 617b4e4dee | |||
| ea1eb76b2d | |||
| ad12925d6c | |||
| a5fcf898b9 | |||
| 14d544be39 | |||
| 3e994996c6 | |||
| 3341b9a2d2 | |||
| 815640b840 | |||
| acd3d91318 | |||
| ef5f4d8ee6 | |||
| d40217d1e6 | |||
| 17b593325a | |||
| 3456e848da | |||
| 723232ac35 | |||
| 5f5f9f35e7 | |||
| 86a6c4f5ff | |||
| 3082c2e4e5 | |||
| 062109e33d | |||
| fd88c9a45b | |||
| a8c4d5604e | |||
| ef4c657157 | |||
| 0c29e5a630 | |||
| 77a0dbfd44 | |||
| afa42ec851 | |||
| 8da86431da | |||
| 3d7f988973 | |||
| 5ed21d7dad | |||
| 54eff44d74 | |||
| 83d760deae | |||
| 5147b19e51 | |||
| 50959eeb01 | |||
| ac2ed69c0b | |||
| 2f7f707df0 | |||
| 94e5de4836 | |||
| 38f9a5587f | |||
| 6432711798 | |||
| 81c23a5134 | |||
| 6336c22293 | |||
| 6658122b03 | |||
| 7e8f8b5178 | |||
| d00e334738 | |||
| f48b0bae2e | |||
| d3d18cd4c2 | |||
| cead39b52f | |||
| 7d88e53182 | |||
| 8fe741e057 | |||
| b6ef936cca | |||
| 7c2bae9faf | |||
| 2b48eba784 |
@@ -36,7 +36,7 @@ env:
|
||||
libcurl4-gnutls-dev
|
||||
libgcrypt20-dev
|
||||
libgnutls28-dev
|
||||
liblua5.3-dev
|
||||
liblua5.4-dev
|
||||
libncurses-dev
|
||||
libperl-dev
|
||||
libphp-embed
|
||||
@@ -51,7 +51,7 @@ env:
|
||||
ruby-pygments.rb
|
||||
tcl8.6-dev
|
||||
zlib1g-dev
|
||||
WEECHAT_DEPS_ROCKYLINUX: >-
|
||||
WEECHAT_DEPS_REDHAT: >-
|
||||
asciidoctor
|
||||
aspell-devel
|
||||
cjson-devel
|
||||
@@ -131,7 +131,7 @@ jobs:
|
||||
sudo apt-get update -qq
|
||||
sudo apt-get --yes --no-install-recommends install ${{ env.CHECK_DEPS_UBUNTU }}
|
||||
pipx install msgcheck ruff
|
||||
cargo install --version 0.0.8 poexam
|
||||
cargo install --version 0.0.10 poexam
|
||||
|
||||
- name: Check gettext files (msgcheck)
|
||||
run: msgcheck po/*.po
|
||||
@@ -253,6 +253,52 @@ jobs:
|
||||
lcov --list coverage.info
|
||||
bash <(curl -s https://codecov.io/bash) -f coverage.info || echo 'Codecov error'
|
||||
|
||||
install_fedora:
|
||||
|
||||
strategy:
|
||||
matrix:
|
||||
os:
|
||||
- ubuntu-24.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:
|
||||
|
||||
strategy:
|
||||
@@ -280,9 +326,11 @@ jobs:
|
||||
|
||||
- name: Install dependencies
|
||||
run: |
|
||||
dnf install -y epel-release
|
||||
dnf install -y epel-release dnf-plugins-core
|
||||
dnf config-manager --set-enabled crb
|
||||
dnf install -y ${{ env.WEECHAT_DEPS_ROCKYLINUX }}
|
||||
# pin a working ruby stream (ruby:4.0 has broken module metadata on Rocky 9.8)
|
||||
dnf module enable -y ruby:3.3
|
||||
dnf install -y ${{ env.WEECHAT_DEPS_REDHAT }}
|
||||
|
||||
- name: Build and run tests
|
||||
env:
|
||||
|
||||
@@ -573,6 +573,7 @@ users
|
||||
usr
|
||||
util
|
||||
valer
|
||||
valgrind
|
||||
verbose
|
||||
verify
|
||||
versiongit
|
||||
|
||||
@@ -9,7 +9,11 @@ select = [
|
||||
ignore = [
|
||||
"brackets",
|
||||
"double-quotes",
|
||||
"double-words",
|
||||
"html-tags",
|
||||
"paths",
|
||||
"unchanged",
|
||||
"urls",
|
||||
]
|
||||
path_words = "."
|
||||
langs = [
|
||||
|
||||
@@ -6,6 +6,36 @@ SPDX-License-Identifier: GPL-3.0-or-later
|
||||
|
||||
# WeeChat ChangeLog
|
||||
|
||||
## 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)
|
||||
|
||||
### Added
|
||||
|
||||
- relay: add option relay.network.unix_socket_permissions ([#2317](https://github.com/weechat/weechat/issues/2317))
|
||||
|
||||
### 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))
|
||||
- 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
|
||||
- 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))
|
||||
- relay: fix timing attack on password authentication ([GHSA-vhv8-g2r9-cwcc](https://github.com/weechat/weechat/security/advisories/GHSA-vhv8-g2r9-cwcc))
|
||||
- api, relay: fix timing attack on TOTP validation ([GHSA-vhv8-g2r9-cwcc](https://github.com/weechat/weechat/security/advisories/GHSA-vhv8-g2r9-cwcc))
|
||||
|
||||
## Version 4.9.1 (2026-05-31)
|
||||
|
||||
### 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))
|
||||
- irc: fix tag in message with list of names when joining a channel
|
||||
- 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))
|
||||
- relay: fix timing attack on password authentication ([GHSA-vhv8-g2r9-cwcc](https://github.com/weechat/weechat/security/advisories/GHSA-vhv8-g2r9-cwcc))
|
||||
- api, relay: fix timing attack on TOTP validation ([GHSA-vhv8-g2r9-cwcc](https://github.com/weechat/weechat/security/advisories/GHSA-vhv8-g2r9-cwcc))
|
||||
|
||||
## Version 4.9.0 (2026-03-29)
|
||||
|
||||
### Changed
|
||||
|
||||
+2
-1
@@ -28,6 +28,7 @@ project(weechat C)
|
||||
# CMake options
|
||||
set(CMAKE_VERBOSE_MAKEFILE OFF)
|
||||
set(CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/cmake" "${CMAKE_MODULE_PATH}")
|
||||
set(CMAKE_POSITION_INDEPENDENT_CODE ON)
|
||||
set(CMAKE_SKIP_RPATH ON)
|
||||
|
||||
# compiler options
|
||||
@@ -245,7 +246,7 @@ list(APPEND EXTRA_LIBS ${ZLIB_LIBRARY})
|
||||
|
||||
# Check for zstd
|
||||
if(ENABLE_ZSTD)
|
||||
pkg_check_modules(LIBZSTD REQUIRED libzstd)
|
||||
pkg_check_modules(LIBZSTD REQUIRED libzstd>=1.4.0)
|
||||
include_directories(${LIBZSTD_INCLUDE_DIRS})
|
||||
list(APPEND EXTRA_LIBS ${LIBZSTD_LDFLAGS})
|
||||
add_definitions(-DHAVE_ZSTD)
|
||||
|
||||
@@ -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).
|
||||
|
||||
## 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
|
||||
|
||||
### IRC temporary servers
|
||||
|
||||
@@ -12,7 +12,7 @@ Build-Depends:
|
||||
libperl-dev,
|
||||
python3-dev,
|
||||
libaspell-dev,
|
||||
liblua5.3-dev,
|
||||
liblua5.4-dev,
|
||||
tcl8.6-dev,
|
||||
guile-3.0-dev,
|
||||
php-dev, libphp-embed, libargon2-dev, libsodium-dev,
|
||||
|
||||
@@ -12,7 +12,7 @@ Build-Depends:
|
||||
libperl-dev,
|
||||
python3-dev,
|
||||
libaspell-dev,
|
||||
liblua5.3-dev,
|
||||
liblua5.4-dev,
|
||||
tcl8.6-dev,
|
||||
guile-3.0-dev,
|
||||
php-dev, libphp-embed, libargon2-dev, libsodium-dev,
|
||||
|
||||
+35
-10
@@ -36,6 +36,31 @@ if(ENABLE_MAN OR ENABLE_DOC)
|
||||
|
||||
find_package(Asciidoctor)
|
||||
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
|
||||
set(ASCIIDOCTOR_ARGS
|
||||
-v
|
||||
@@ -46,8 +71,8 @@ if(ENABLE_MAN OR ENABLE_DOC)
|
||||
-a revnumber="${VERSION}"
|
||||
-a sectanchors
|
||||
-a source-highlighter=pygments
|
||||
-a pygments-style=native
|
||||
-a docinfodir="${CMAKE_CURRENT_SOURCE_DIR}"
|
||||
-a pygments-style=${PYGMENTS_LIGHT_STYLE}
|
||||
-a docinfodir="${CMAKE_CURRENT_BINARY_DIR}"
|
||||
-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"
|
||||
COMMAND "${ASCIIDOCTOR_EXECUTABLE}" ARGS ${ASCIIDOCTOR_ARGS} ${ASCIIDOCTOR_USER_ARGS} -o "weechat_user.${lang}.html" "${CMAKE_CURRENT_SOURCE_DIR}/${lang}/weechat_user.${lang}.adoc"
|
||||
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}/includes/attributes-${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"
|
||||
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
|
||||
"${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}/includes/attributes-${lang}.adoc"
|
||||
doc-autogen
|
||||
@@ -250,7 +275,7 @@ if(ENABLE_MAN OR ENABLE_DOC)
|
||||
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"
|
||||
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}/includes/attributes-${lang}.adoc"
|
||||
doc-autogen
|
||||
@@ -268,7 +293,7 @@ if(ENABLE_MAN OR ENABLE_DOC)
|
||||
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"
|
||||
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}/includes/attributes-${lang}.adoc"
|
||||
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"
|
||||
COMMAND "${ASCIIDOCTOR_EXECUTABLE}" ARGS ${ASCIIDOCTOR_ARGS} ${ASCIIDOCTOR_QUICKSTART_ARGS} -o "weechat_quickstart.${lang}.html" "${CMAKE_CURRENT_SOURCE_DIR}/${lang}/weechat_quickstart.${lang}.adoc"
|
||||
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}/includes/attributes-${lang}.adoc"
|
||||
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"
|
||||
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
|
||||
"${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}/includes/attributes-${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"
|
||||
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
|
||||
"${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}/includes/attributes-${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"
|
||||
COMMAND "${ASCIIDOCTOR_EXECUTABLE}" ARGS ${ASCIIDOCTOR_ARGS} ${ASCIIDOCTOR_DEV_ARGS} -o "weechat_dev.${lang}.html" "${CMAKE_CURRENT_SOURCE_DIR}/${lang}/weechat_dev.${lang}.adoc"
|
||||
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}/includes/attributes-${lang}.adoc"
|
||||
WORKING_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}"
|
||||
|
||||
@@ -212,7 +212,7 @@ WeeChat optional sind:
|
||||
| asciidoctor | ≥ 1.5.4
|
||||
| zum Erstellen der man page und der Dokumentation.
|
||||
|
||||
| ruby-pygments.rb |
|
||||
| python3-pygments, ruby-pygments.rb |
|
||||
| Build Dokumentation.
|
||||
|
||||
| libcpputest-dev | ≥ 3.4
|
||||
|
||||
@@ -26,9 +26,6 @@ SPDX-License-Identifier: GPL-3.0-or-later
|
||||
--header-details-color: #aaa;
|
||||
--border: 1px solid #444;
|
||||
--code-bg-color: #252525;
|
||||
--pre-color: #ddd;
|
||||
--pre-bg-color: #202020;
|
||||
--pre-code-bg-color: #202020;
|
||||
--keyseq-color: #777;
|
||||
--kbd-bg-color: #252525;
|
||||
--kbd-border: 1px solid #333;
|
||||
@@ -39,7 +36,11 @@ SPDX-License-Identifier: GPL-3.0-or-later
|
||||
--icon-caution-color: #bf3400;
|
||||
--icon-important-color: #f44336;
|
||||
--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) {
|
||||
@@ -59,9 +60,6 @@ SPDX-License-Identifier: GPL-3.0-or-later
|
||||
--border: 1px solid #dddddf;
|
||||
--code-bg-color: #f7f7f8;
|
||||
--keyseq-color: #333c;
|
||||
--pre-color: #353535;
|
||||
--pre-bg-color: #f7f7f8;
|
||||
--pre-code-bg-color: #202020;
|
||||
--kbd-bg-color: #f7f7f7;
|
||||
--kbd-border: 1px solid #ccc;
|
||||
--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-important-color: #bf0000;
|
||||
--mark-bg-color: #9df;
|
||||
--pre-bevel-light: #e5e5e7;
|
||||
--pre-bevel-dark: #b4b4b8;
|
||||
--pre-bevel-bg: #f6f6f7;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -145,6 +146,10 @@ code, .prettyprint {
|
||||
|
||||
pre {
|
||||
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 {
|
||||
@@ -162,8 +167,8 @@ kbd {
|
||||
color: var(--body-color);
|
||||
}
|
||||
|
||||
.literalblock pre, .listingblock > .content > pre:not(.highlight), .listingblock > .content > pre[class="highlight"], .listingblock > .content > pre[class^="highlight "] {
|
||||
background-color: var(--pre-bg-color);
|
||||
.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, var(--pre-bevel-bg));
|
||||
color: var(--body-color);
|
||||
}
|
||||
|
||||
@@ -200,24 +205,6 @@ mark {
|
||||
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 */
|
||||
|
||||
#header, #content, #footnotes, #footer {
|
||||
@@ -210,7 +210,7 @@ WeeChat:
|
||||
| asciidoctor | ≥ 1.5.4
|
||||
| Build man page and documentation.
|
||||
|
||||
| ruby-pygments.rb |
|
||||
| python3-pygments, ruby-pygments.rb |
|
||||
| Build documentation.
|
||||
|
||||
| libcpputest-dev | ≥ 3.4
|
||||
|
||||
@@ -208,7 +208,7 @@ Le tableau suivant liste les paquets optionnels pour compiler WeeChat :
|
||||
| asciidoctor | ≥ 1.5.4
|
||||
| Construction de la page man et de la documentation.
|
||||
|
||||
| ruby-pygments.rb |
|
||||
| python3-pygments, ruby-pygments.rb |
|
||||
| Construction de la documentation.
|
||||
|
||||
| libcpputest-dev | ≥ 3.4
|
||||
|
||||
@@ -245,7 +245,7 @@ WeeChat:
|
||||
| Build man page and documentation.
|
||||
|
||||
// TRANSLATION MISSING
|
||||
| ruby-pygments.rb |
|
||||
| python3-pygments, ruby-pygments.rb |
|
||||
| Build documentation.
|
||||
|
||||
// TRANSLATION MISSING
|
||||
|
||||
@@ -229,7 +229,7 @@ WeeChat:
|
||||
| man ページと文書のビルド
|
||||
|
||||
// TRANSLATION MISSING
|
||||
| ruby-pygments.rb |
|
||||
| python3-pygments, ruby-pygments.rb |
|
||||
| Build documentation.
|
||||
|
||||
| libcpputest-dev | 3.4 以上
|
||||
|
||||
@@ -210,7 +210,7 @@ WeeChat:
|
||||
| asciidoctor | ≥ 1.5.4
|
||||
| Tworzenie strony man i dokumentacji.
|
||||
|
||||
| ruby-pygments.rb |
|
||||
| python3-pygments, ruby-pygments.rb |
|
||||
| Dokumentacja budowania.
|
||||
|
||||
| libcpputest-dev | ≥ 3.4
|
||||
|
||||
@@ -128,8 +128,7 @@ WeeChat „језгро” се налази у следећим директо
|
||||
|===
|
||||
| Путања/фајл | Опис
|
||||
| core/ | Функције језгра: тачка улаза, интерне структуре.
|
||||
// TRANSLATION MISSING
|
||||
| core-args.c | Command-line arguments.
|
||||
| core-args.c | Аргументи командне-линије.
|
||||
| core-arraylist.c | Листе низова.
|
||||
| core-backtrace.c | Испис трага након краха.
|
||||
| core-calc.c | Израчунавање резултата израза.
|
||||
|
||||
@@ -203,7 +203,7 @@ WeeChat мора да се изгради са CMake.
|
||||
| asciidoctor | ≥ 1.5.4
|
||||
| Изградња man странице и документације.
|
||||
|
||||
| ruby-pygments.rb |
|
||||
| python3-pygments, ruby-pygments.rb |
|
||||
| Документација изградње.
|
||||
|
||||
| libcpputest-dev | ≥ 3.4
|
||||
|
||||
@@ -23,10 +23,10 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: WeeChat\n"
|
||||
"Report-Msgid-Bugs-To: flashcode@flashtux.org\n"
|
||||
"POT-Creation-Date: 2026-03-21 17:24+0100\n"
|
||||
"PO-Revision-Date: 2026-03-12 20:24+0100\n"
|
||||
"POT-Creation-Date: 2026-05-30 14:00+0200\n"
|
||||
"PO-Revision-Date: 2026-05-30 14:01+0200\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"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
@@ -164,10 +164,10 @@ msgstr ""
|
||||
#, c-format
|
||||
msgid ""
|
||||
"WeeChat %s Copyright %s, compiled on %s %s\n"
|
||||
"Developed by Sébastien Helleu <flashcode@flashtux.org> - %s"
|
||||
"Developed by %s <%s> - %s"
|
||||
msgstr ""
|
||||
"WeeChat %s Copyright %s, zkompilováno %s %s\n"
|
||||
"Vyvinutý Sébastienem Helleu <flashcode@flashtux.org> - %s"
|
||||
"Vyvinutý %s <%s> - %s"
|
||||
|
||||
msgid "Usage:"
|
||||
msgstr ""
|
||||
@@ -1178,6 +1178,16 @@ msgstr ""
|
||||
"zpráva: zpráva pro nepřítomnost (pokud není zadána je status nepřítomnosti "
|
||||
"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"
|
||||
msgstr "řídit pole"
|
||||
|
||||
@@ -11806,8 +11816,8 @@ msgstr "jméno serveru"
|
||||
msgid "get nick from IRC host"
|
||||
msgstr "získat přezdívku od IRC hosta"
|
||||
|
||||
msgid "IRC host (like `:nick!name@server.com`)"
|
||||
msgstr "IRC host (jako `:nick!name@server.com`)"
|
||||
msgid "IRC host (like `:nick!name@server`)"
|
||||
msgstr "IRC host (jako `:nick!name@server`)"
|
||||
|
||||
msgid ""
|
||||
"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
|
||||
msgid ""
|
||||
"%d channels (total: %d) | Filter: %s | Sort: %s | Key(input): ctrl+j=join "
|
||||
"channel, ($)=refresh, (q)=close buffer"
|
||||
"%d channels (total: %d) | Filter: %s | Sort: %s | Keys: ctrl+j=join channel "
|
||||
"| Input: $=refresh, s:x,y=sort, words=filter, *=reset filter, q=close buffer"
|
||||
msgstr ""
|
||||
|
||||
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 "
|
||||
"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 "
|
||||
"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 "
|
||||
"should first set the compression type via option "
|
||||
"logger.file.rotation_compression_type"
|
||||
@@ -15086,11 +15096,11 @@ msgstr ""
|
||||
#, 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\")"
|
||||
"\"api\" and \"weechat\" protocols, 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\")"
|
||||
msgstr ""
|
||||
"čá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í "
|
||||
@@ -15098,10 +15108,10 @@ msgstr ""
|
||||
"pro vybrání několika pluginů (příklady: \"*\" nebo \"*,!lua,!tcl\")"
|
||||
|
||||
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"
|
||||
"number of iterations asked to the client in \"api\" and \"weechat\" "
|
||||
"protocols 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"
|
||||
msgstr ""
|
||||
|
||||
msgid ""
|
||||
@@ -15132,6 +15142,11 @@ msgid ""
|
||||
"1 are recommended values)"
|
||||
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 ""
|
||||
"POSIX extended regular expression with origins allowed in websockets (case-"
|
||||
"insensitive, use \"(?-i)\" at beginning to make it case-sensitive), example: "
|
||||
@@ -15241,7 +15256,7 @@ msgstr "Klienti pro přenos:"
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
"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)"
|
||||
msgstr ""
|
||||
"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"
|
||||
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
|
||||
msgid "%s%s: cannot \"listen\" on path %s (%s): error %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"
|
||||
msgstr "%s%s: nedostatek paměti pro poslouchání na portu"
|
||||
|
||||
msgid "Relay WeeChat data to remote application (irc/weechat protocols)"
|
||||
msgstr "Předání dat WeeChatu do vzdálené aplikace (irc/weechat protokoly)"
|
||||
msgid "Relay WeeChat data to remote applications"
|
||||
msgstr "Předání dat WeeChatu do vzdálené aplikace"
|
||||
|
||||
msgid "connecting"
|
||||
msgstr "připojuji"
|
||||
@@ -15660,11 +15679,16 @@ msgstr "(nic)"
|
||||
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"
|
||||
|
||||
#, 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 ""
|
||||
"%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: "
|
||||
"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"
|
||||
msgstr ""
|
||||
"%d/%d scripty (filtr: %s) | Seřaď: %s | Alt+klavesa/vstup: i=instalace, "
|
||||
|
||||
@@ -23,21 +23,22 @@
|
||||
#
|
||||
#
|
||||
# w8rabbit <w8rabbit@mail.i2p>, 2018.
|
||||
# Nils Görs <weechatter@arcor.de>, 2022-2023.
|
||||
# Nils Görs <>, 2022-2026.
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: WeeChat\n"
|
||||
"Report-Msgid-Bugs-To: flashcode@flashtux.org\n"
|
||||
"POT-Creation-Date: 2026-03-21 17:24+0100\n"
|
||||
"PO-Revision-Date: 2026-03-21 17:24+0100\n"
|
||||
"POT-Creation-Date: 2026-05-30 14:00+0200\n"
|
||||
"PO-Revision-Date: 2026-05-30 14:01+0200\n"
|
||||
"Last-Translator: Nils Görs <weechatter@arcor.de>\n"
|
||||
"Language-Team: German <kde-i18n-de@kde.org>\n"
|
||||
"Language: de_DE\n"
|
||||
"Language-Team: German - Germany <weechat-dev@nongnu.org>\n"
|
||||
"Language: de\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\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-SourceCharset: utf-8\n"
|
||||
|
||||
@@ -181,10 +182,10 @@ msgstr "deaktiviere init/deinit von gcrypt"
|
||||
#, c-format
|
||||
msgid ""
|
||||
"WeeChat %s Copyright %s, compiled on %s %s\n"
|
||||
"Developed by Sébastien Helleu <flashcode@flashtux.org> - %s"
|
||||
"Developed by %s <%s> - %s"
|
||||
msgstr ""
|
||||
"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:"
|
||||
msgstr "Aufruf:"
|
||||
@@ -1170,6 +1171,20 @@ msgstr ""
|
||||
"Nachricht: Abwesenheitsnachricht (ohne Angabe einer Nachricht wird der "
|
||||
"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"
|
||||
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"
|
||||
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 ""
|
||||
"option: option to change (for options list, look at /set weechat.bar."
|
||||
"<bar_name>.*)"
|
||||
msgstr ""
|
||||
"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"
|
||||
msgstr "Wert: neuer Wert für die Option"
|
||||
@@ -3314,7 +3325,7 @@ msgstr ""
|
||||
"werden"
|
||||
|
||||
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 ""
|
||||
"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"
|
||||
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 ""
|
||||
"option: option to change (for options list, look at /set weechat.proxy."
|
||||
"<proxy_name>.*)"
|
||||
msgstr ""
|
||||
"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:"
|
||||
msgstr ""
|
||||
@@ -3932,7 +3939,7 @@ msgid " /secure set oftc my_password"
|
||||
msgstr " /secure set oftc Mein_Passwort"
|
||||
|
||||
msgid " alias to ghost the nick \"andrew\":"
|
||||
msgstr ""
|
||||
msgstr " Alias zum ghosten des Nicks \"andrew\":"
|
||||
|
||||
msgid ""
|
||||
" /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>]"
|
||||
|
||||
msgid "quiet nicks or hosts"
|
||||
msgstr ""
|
||||
"Nicks oder Hosts das Wort entziehen (User können im Kanal erst schreiben, "
|
||||
"wenn sie \"+v\" oder höher besitzen)"
|
||||
msgstr "Nicks oder Hosts das Wort entziehen"
|
||||
|
||||
msgid ""
|
||||
"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"
|
||||
|
||||
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"
|
||||
msgstr "Standardmitteilung beim Verlassen (/part) eines IRC-Kanals"
|
||||
@@ -13121,8 +13126,8 @@ msgstr "Servername"
|
||||
msgid "get nick from IRC host"
|
||||
msgstr "Nicknamen des IRC-Hosts erhalten"
|
||||
|
||||
msgid "IRC host (like `:nick!name@server.com`)"
|
||||
msgstr "IRC host (in der Form `:nick!name@server.com`)"
|
||||
msgid "IRC host (like `:nick!name@server`)"
|
||||
msgstr "IRC host (in der Form `:nick!name@server`)"
|
||||
|
||||
msgid ""
|
||||
"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
|
||||
msgid ""
|
||||
"%d channels (total: %d) | Filter: %s | Sort: %s | Key(input): ctrl+j=join "
|
||||
"channel, ($)=refresh, (q)=close buffer"
|
||||
"%d channels (total: %d) | Filter: %s | Sort: %s | Keys: ctrl+j=join channel "
|
||||
"| Input: $=refresh, s:x,y=sort, words=filter, *=reset filter, q=close buffer"
|
||||
msgstr ""
|
||||
"%d Kanäle (Total: %d) | Filter: %s | Sortierung: %s | Taste(Eingabe): "
|
||||
"ctrl+j=Kanal betreten, ($)=Aktualisierung, (q)=Buffer schließen"
|
||||
"%d Kanäle (Total: %d) | Filter: %s | Sortierung: %s | Tastenbefehl: "
|
||||
"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"
|
||||
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 "
|
||||
"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 "
|
||||
"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 "
|
||||
"should first set the compression type via option "
|
||||
"logger.file.rotation_compression_type"
|
||||
msgstr ""
|
||||
"Wenn diese Größe erreicht ist, wird eine Rotation der Protokolldateien "
|
||||
"durchgeführt: dievorhandene rotierte Protokolldateien werden umbenannt (.1 "
|
||||
"wird zu .2, .2 wird zu .3 usw.).Die aktuelle Datei erhält wird umbenannt und "
|
||||
"erhält .1 als Erweiterung; eine ganze Zahl mitSuffix ist erlaubt: b = Bytes "
|
||||
"(Standard, wenn keine Einheit angegeben ist), k = Kilobytes, m =Megabyte, g "
|
||||
"= Gigabyte, t = Terabyte; Beispiel: \"2g\" bewirkt eine Rotationsobald die "
|
||||
"Dateigröße > 2.000.000.000 Byte ist; wenn auf „0“ gesetzt, erfolgt keine "
|
||||
"durchgeführt: die vorhandenen rotierten Protokolldateien werden umbenannt "
|
||||
"(.1 wird zu .2, .2 wird zu .3 usw.).Die aktuelle Datei wird umbenannt und "
|
||||
"erhält .1 als Dateierweiterung; eine ganze Zahl mit Suffix ist erlaubt: b = "
|
||||
"Bytes (Standard, wenn keine Einheit angegeben ist), k = Kilobytes, m = "
|
||||
"Megabyte, g = Gigabyte, t = Terabyte; Beispiel: \"2g\" startet eine Rotation "
|
||||
"sobald die Dateigröße > 2GB ist; wenn auf „0“ gesetzt, erfolgt keine "
|
||||
"Rotation der Dateien (unbegrenzte Protokollgröße); WARNUNG: Bevor Sie diese "
|
||||
"Option ändern,sollte sie zuerst den Komprimierungstyp über die Option "
|
||||
"logger.file festlegen.rotation_compression_type"
|
||||
"logger.file.rotation_compression_type festlegen"
|
||||
|
||||
msgid ""
|
||||
"timestamp used in log files (see man strftime for date/time specifiers, "
|
||||
@@ -16446,31 +16452,33 @@ msgstr ""
|
||||
|
||||
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\")"
|
||||
"\"api\" and \"weechat\" protocols, 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\")"
|
||||
msgstr ""
|
||||
"durch Kommata getrennte Liste der Hash-Algorithmen, die für die "
|
||||
"Kennwortauthentifizierung im Weechat-Protokoll verwendet werden, unter "
|
||||
"diesen Werten: \"plain\" (Kennwort im Klartext, nicht gehasht), \"sha256\", "
|
||||
"\"sha512\", \"pbkdf2 + sha256\", \"pbkdf2 + sha512\" ), \"*\" bedeutet alle "
|
||||
"Algorithmen, ein Name, der mit \"!\" beginnt ist ein negativer Wert, um die "
|
||||
"Verwendung eines Algorithmus zu vermeiden. Ein Platzhalter \"*\" im Namen "
|
||||
"ist zulässig (Beispiele: \"*\", \"pbkdf2 *\", \"*,! plain\")"
|
||||
"Kennwortauthentifizierung für die \"api\" und \"weechat\" Protokolle "
|
||||
"verwendet werden. Mögliche Werte sind: \"plain\" (Kennwort im Klartext, "
|
||||
"nicht gehasht), \"sha256\", \"sha512\", \"pbkdf2+sha256\", "
|
||||
"\"pbkdf2+sha512\" ), \"*\" bedeutet alle Algorithmen, ein Name, der mit \"!"
|
||||
"\" beginnt ist ein negativer Wert, um die Verwendung eines Algorithmus zu "
|
||||
"unterbinden. Ein Platzhalter \"*\" im Namen ist zulässig (Beispiele: \"*\", "
|
||||
"\"pbkdf2 *\", \"*,! plain\")"
|
||||
|
||||
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"
|
||||
"number of iterations asked to the client in \"api\" and \"weechat\" "
|
||||
"protocols 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"
|
||||
msgstr ""
|
||||
"Anzahl der Iterationen, die im Weechat-Protokoll an den Client gesendet "
|
||||
"werden, wenn ein Hash-Passwort mit dem Algorithmus PBKDF2 zur "
|
||||
"Authentifizierung verwendet wird; Mehr Iterationen sind aus "
|
||||
"Sicherheitsgründen besser, aber langsamer zu berechnen. Diese Zahl sollte "
|
||||
"nicht zu hoch sein, wenn Ihre CPU langsam ist"
|
||||
"Anzahl der Iterationen, die bei den Protokollen \"api\" und \"weechat\" vom "
|
||||
"Client angefordert wird, wenn zur Authentifizierung ein gehashtes Passwort "
|
||||
"mit dem Algorithmus PBKDF2 zur Authentifizierung verwendet wird. Eine höhere "
|
||||
"Anzahl an Iterationen bietet zwar mehr Sicherheit, erfordert jedoch eine "
|
||||
"verlängerte Rechenzeit; dieser Wert sollte deshalb nicht zu hoch gewählt "
|
||||
"werden, falls Ihre CPU leistungsschwach ist"
|
||||
|
||||
msgid ""
|
||||
"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 "
|
||||
"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 ""
|
||||
"POSIX extended regular expression with origins allowed in websockets (case-"
|
||||
"insensitive, use \"(?-i)\" at beginning to make it case-sensitive), example: "
|
||||
@@ -16523,7 +16538,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Erweiterter regulärer POSIX Ausdruck für Origins in WebSockets (Groß- und "
|
||||
"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)\""
|
||||
|
||||
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
|
||||
msgid ""
|
||||
"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)"
|
||||
msgstr ""
|
||||
"Protokoll,Status (beide sind Optional, bei beiden Argumenten bedeutet \"*\", "
|
||||
"alle; Protokolle: irc, weechat; Status: connecting, waiting_auth, connected, "
|
||||
"auth_failed, disconnected)"
|
||||
"alle; Protokolle: api, irc, weechat; Status: connecting, waiting_auth, "
|
||||
"connected, auth_failed, disconnected)"
|
||||
|
||||
msgid "list of 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"
|
||||
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
|
||||
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"
|
||||
@@ -16821,9 +16842,8 @@ msgstr ""
|
||||
msgid "%s%s: not enough memory for listening on new port"
|
||||
msgstr "%s%s: Nicht genug Speicher um an einem neuen Port zu lauschen"
|
||||
|
||||
msgid "Relay WeeChat data to remote application (irc/weechat protocols)"
|
||||
msgstr ""
|
||||
"Übertragung von WeeChat Daten an andere Anwendungen (irc/weechat Protokoll)"
|
||||
msgid "Relay WeeChat data to remote applications"
|
||||
msgstr "Übertragung von WeeChat Daten an andere Anwendungen"
|
||||
|
||||
msgid "connecting"
|
||||
msgstr "verbinden"
|
||||
@@ -17062,16 +17082,17 @@ msgstr "Alt+Taste/Eingabezeile: v=zurück zur Auswahl d=zeigt Unterschiede an"
|
||||
|
||||
#, c-format
|
||||
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: "
|
||||
"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"
|
||||
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, "
|
||||
"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 "
|
||||
"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"
|
||||
msgstr "Skripten"
|
||||
@@ -17330,7 +17351,7 @@ msgstr ""
|
||||
"Um Tastenkurzbefehle im Skript-Buffer direkt nutzen zu können (zum Beispiel: "
|
||||
"alt+i = installieren, alt+r = entfernen, ...), muss diese Einstellung "
|
||||
"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\")"
|
||||
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"
|
||||
|
||||
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"
|
||||
msgstr "Textfarbe für das Datum im Skript-Buffer"
|
||||
|
||||
@@ -24,10 +24,10 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: WeeChat\n"
|
||||
"Report-Msgid-Bugs-To: flashcode@flashtux.org\n"
|
||||
"POT-Creation-Date: 2026-03-21 17:24+0100\n"
|
||||
"PO-Revision-Date: 2026-03-12 20:24+0100\n"
|
||||
"POT-Creation-Date: 2026-05-30 14:00+0200\n"
|
||||
"PO-Revision-Date: 2026-05-30 14:01+0200\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"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
@@ -184,10 +184,10 @@ msgstr ""
|
||||
#, c-format
|
||||
msgid ""
|
||||
"WeeChat %s Copyright %s, compiled on %s %s\n"
|
||||
"Developed by Sébastien Helleu <flashcode@flashtux.org> - %s"
|
||||
"Developed by %s <%s> - %s"
|
||||
msgstr ""
|
||||
"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:"
|
||||
msgstr ""
|
||||
@@ -1222,6 +1222,16 @@ msgstr ""
|
||||
"mensaje: mensaje de ausencia (si no se especifica ningún mensaje, se remueve "
|
||||
"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"
|
||||
msgstr "gestionar las barras"
|
||||
|
||||
@@ -12081,8 +12091,8 @@ msgstr "nombre del servidor"
|
||||
msgid "get nick from IRC host"
|
||||
msgstr "devuelve apodo de un host IRC"
|
||||
|
||||
msgid "IRC host (like `:nick!name@server.com`)"
|
||||
msgstr "IRC host (como `:apodo!nombre@servidor.com`)"
|
||||
msgid "IRC host (like `:nick!name@server`)"
|
||||
msgstr "IRC host (como `:apodo!nombre@servidor`)"
|
||||
|
||||
msgid ""
|
||||
"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
|
||||
msgid ""
|
||||
"%d channels (total: %d) | Filter: %s | Sort: %s | Key(input): ctrl+j=join "
|
||||
"channel, ($)=refresh, (q)=close buffer"
|
||||
"%d channels (total: %d) | Filter: %s | Sort: %s | Keys: ctrl+j=join channel "
|
||||
"| Input: $=refresh, s:x,y=sort, words=filter, *=reset filter, q=close buffer"
|
||||
msgstr ""
|
||||
|
||||
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 "
|
||||
"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 "
|
||||
"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 "
|
||||
"should first set the compression type via option "
|
||||
"logger.file.rotation_compression_type"
|
||||
@@ -15390,11 +15400,11 @@ msgstr ""
|
||||
#, 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\")"
|
||||
"\"api\" and \"weechat\" protocols, 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\")"
|
||||
msgstr ""
|
||||
"lista de plugins separados por comas para cargar automáticamente al iniciar, "
|
||||
"\"*\" significa todos los plugins encontrados, un nombre empezando con \"!\" "
|
||||
@@ -15402,10 +15412,10 @@ msgstr ""
|
||||
"\"*\" para indicar varios plugins (ejemplo: \"*\" o \"*,!lua,!tcl\")"
|
||||
|
||||
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"
|
||||
"number of iterations asked to the client in \"api\" and \"weechat\" "
|
||||
"protocols 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"
|
||||
msgstr ""
|
||||
|
||||
msgid ""
|
||||
@@ -15438,6 +15448,11 @@ msgid ""
|
||||
"1 are recommended values)"
|
||||
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.
|
||||
#, fuzzy
|
||||
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
|
||||
msgid ""
|
||||
"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)"
|
||||
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"
|
||||
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
|
||||
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)"
|
||||
@@ -15711,7 +15730,7 @@ msgstr ""
|
||||
msgid "%s%s: not enough memory for listening on new port"
|
||||
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 ""
|
||||
|
||||
msgid "connecting"
|
||||
@@ -15960,9 +15979,9 @@ msgstr ""
|
||||
|
||||
#, c-format
|
||||
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: "
|
||||
"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"
|
||||
msgstr ""
|
||||
|
||||
|
||||
@@ -23,10 +23,10 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: WeeChat\n"
|
||||
"Report-Msgid-Bugs-To: flashcode@flashtux.org\n"
|
||||
"POT-Creation-Date: 2026-03-21 17:24+0100\n"
|
||||
"PO-Revision-Date: 2026-03-21 17:29+0100\n"
|
||||
"POT-Creation-Date: 2026-05-30 14:00+0200\n"
|
||||
"PO-Revision-Date: 2026-05-30 14:01+0200\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"
|
||||
"MIME-Version: 1.0\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 "
|
||||
"background"
|
||||
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 "
|
||||
"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
|
||||
msgid ""
|
||||
"WeeChat %s Copyright %s, compiled on %s %s\n"
|
||||
"Developed by Sébastien Helleu <flashcode@flashtux.org> - %s"
|
||||
"Developed by %s <%s> - %s"
|
||||
msgstr ""
|
||||
"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:"
|
||||
msgstr "Utilisation :"
|
||||
@@ -180,11 +180,11 @@ msgid "[option...] [plugin:option...]"
|
||||
msgstr "[option...] [extension:option...]"
|
||||
|
||||
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):"
|
||||
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) :"
|
||||
|
||||
#, c-format
|
||||
@@ -1155,6 +1155,20 @@ msgstr ""
|
||||
"message : message pour l'absence (si pas de message donné, le statut "
|
||||
"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"
|
||||
msgstr "gestion des barres"
|
||||
|
||||
@@ -1499,7 +1513,7 @@ msgid ""
|
||||
"\"weechat.look.jump_current_to_previous_buffer\""
|
||||
msgstr ""
|
||||
"> \"*\" : 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"
|
||||
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 "
|
||||
"name and associated command (\"q\" to quit this mode)"
|
||||
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 "
|
||||
"mode)"
|
||||
|
||||
@@ -3003,7 +3017,7 @@ msgid ""
|
||||
"Key names allowed: f0 to f20, home, insert, delete, end, backspace, pgup, "
|
||||
"pgdn, up, down, right, left, tab, return, comma, space."
|
||||
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."
|
||||
|
||||
msgid "Combo of keys must be separated by a comma."
|
||||
@@ -3052,7 +3066,7 @@ msgid ""
|
||||
"as argument."
|
||||
msgstr ""
|
||||
"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."
|
||||
|
||||
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 :"
|
||||
|
||||
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:"
|
||||
msgstr " afficher une erreur sur le tampon core :"
|
||||
@@ -4100,7 +4114,8 @@ msgid ""
|
||||
"makes possible a delayed restoration (see below)"
|
||||
msgstr ""
|
||||
"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 ""
|
||||
"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 "
|
||||
"démarrage rapide, et le guide utilisateur si vous avez le temps ; ils "
|
||||
"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"
|
||||
"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"
|
||||
@@ -8007,7 +8023,7 @@ msgid ""
|
||||
"careful, using more than one bar item slows down the display of buffers list"
|
||||
msgstr ""
|
||||
"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 "
|
||||
"l'affichage de la liste des tampons"
|
||||
|
||||
@@ -11184,7 +11200,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"filtre : définir un nouveau filtre pour voir seulement les messages "
|
||||
"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)"
|
||||
msgstr "> `*` : afficher tous les messages (pas de filtre)"
|
||||
@@ -12857,8 +12873,8 @@ msgstr "nom de serveur"
|
||||
msgid "get nick from IRC host"
|
||||
msgstr "retourne le pseudo à partir d'un host IRC"
|
||||
|
||||
msgid "IRC host (like `:nick!name@server.com`)"
|
||||
msgstr "host IRC (comme `:pseudo!nom@serveur.com`)"
|
||||
msgid "IRC host (like `:nick!name@server`)"
|
||||
msgstr "host IRC (comme `:pseudo!nom@serveur`)"
|
||||
|
||||
msgid ""
|
||||
"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
|
||||
msgid ""
|
||||
"%d channels (total: %d) | Filter: %s | Sort: %s | Key(input): ctrl+j=join "
|
||||
"channel, ($)=refresh, (q)=close buffer"
|
||||
"%d channels (total: %d) | Filter: %s | Sort: %s | Keys: ctrl+j=join channel "
|
||||
"| Input: $=refresh, s:x,y=sort, words=filter, *=reset filter, q=close buffer"
|
||||
msgstr ""
|
||||
"%d canaux (total : %d) | Filtre : %s | Tri : %s | Touche(entrée) : "
|
||||
"ctrl+j=rejoindre canal, ($)=rafraîchir, (q)=fermer le tampon"
|
||||
"%d canaux (total : %d) | Filtre : %s | Tri : %s | Touches : ctrl+j=rejoindre "
|
||||
"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"
|
||||
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 "
|
||||
"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 "
|
||||
"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 "
|
||||
"should first set the compression type via option "
|
||||
"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é "
|
||||
"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 "
|
||||
"> 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 "
|
||||
"devriez d'abord définir le type de compression via l'option "
|
||||
"logger.file.rotation_compression_type"
|
||||
@@ -15330,7 +15347,8 @@ msgstr "%sremote[%s] : impossible de créer le socket"
|
||||
|
||||
#, c-format
|
||||
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
|
||||
msgid "remote[%s]: gnutls: receiving %d certificate"
|
||||
@@ -16133,31 +16151,31 @@ msgstr ""
|
||||
|
||||
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\")"
|
||||
"\"api\" and \"weechat\" protocols, 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\")"
|
||||
msgstr ""
|
||||
"liste des algorithmes de hachage pour l'authentification par mot de passe "
|
||||
"dans le protocole relay, parmi ces valeurs : \"plain\" (mot de passe en "
|
||||
"clair, non haché), \"sha256\", \"sha512\", \"pbkdf2+sha256\", "
|
||||
"\"pbkdf2+sha512\" ; \"*\" signifie tous les algorithmes, un nom commençant "
|
||||
"par \"!\" est une valeur négative pour empêcher un algorithme d'être "
|
||||
"utilisé, le caractère joker \"*\" est autorisé dans les noms (exemples : "
|
||||
"\"*\", \"pbkdf2*\", \"*,!plain\")"
|
||||
"dans les protocoles \"api\" et \"weechat\", parmi ces valeurs : \"plain\" "
|
||||
"(mot de passe en clair, non haché), \"sha256\", \"sha512\", "
|
||||
"\"pbkdf2+sha256\", \"pbkdf2+sha512\" ; \"*\" signifie tous les algorithmes, "
|
||||
"un nom commençant par \"!\" est une valeur négative pour empêcher un "
|
||||
"algorithme d'être utilisé, le caractère joker \"*\" est autorisé dans les "
|
||||
"noms (exemples : \"*\", \"pbkdf2*\", \"*,!plain\")"
|
||||
|
||||
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"
|
||||
"number of iterations asked to the client in \"api\" and \"weechat\" "
|
||||
"protocols 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"
|
||||
msgstr ""
|
||||
"nombre d'itérations demandées au client dans le protocole weechat lorsqu'un "
|
||||
"mot de passe haché avec l'algorithme PBKDF2 est utilisé pour "
|
||||
"l'authentification ; plus d'itérations est mieux en terme de sécurité mais "
|
||||
"est plus lent à calculer ; ce nombre ne doit pas être trop élevé si votre "
|
||||
"micro-processeur est lent"
|
||||
"nombre d'itérations demandées au client dans les protocoles \"api\" et "
|
||||
"\"weechat\" lorsqu'un mot de passe haché avec l'algorithme PBKDF2 est "
|
||||
"utilisé pour l'authentification ; plus d'itérations est mieux en terme de "
|
||||
"sécurité mais est plus lent à calculer ; ce nombre ne doit pas être trop "
|
||||
"élevé si votre micro-processeur est lent"
|
||||
|
||||
msgid ""
|
||||
"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 "
|
||||
"é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 ""
|
||||
"POSIX extended regular expression with origins allowed in websockets (case-"
|
||||
"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
|
||||
msgid ""
|
||||
"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)"
|
||||
msgstr ""
|
||||
"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)"
|
||||
|
||||
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"
|
||||
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
|
||||
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"
|
||||
@@ -16504,10 +16535,8 @@ msgstr ""
|
||||
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"
|
||||
|
||||
msgid "Relay WeeChat data to remote application (irc/weechat protocols)"
|
||||
msgstr ""
|
||||
"Relai des données WeeChat à des applications distantes (protocoles irc/"
|
||||
"weechat)"
|
||||
msgid "Relay WeeChat data to remote applications"
|
||||
msgstr "Relai des données WeeChat à des applications distantes"
|
||||
|
||||
msgid "connecting"
|
||||
msgstr "connexion"
|
||||
@@ -16743,16 +16772,16 @@ msgstr "Alt+touche/entrée : v=retour à la liste d=sauter au diff"
|
||||
|
||||
#, c-format
|
||||
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: "
|
||||
"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"
|
||||
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, "
|
||||
"h=(dé)figer, v=voir script | Entrée : q=fermer, $=rafraîchir, s:x,y=trier, "
|
||||
"mots=filtrer, *=réinit filtre | Souris : gauche=sélectionner, "
|
||||
"droit=installer/supprimer"
|
||||
"h=(dé)figer, v=voir script | Entrée : $=rafraîchir, s:x,y=trier, "
|
||||
"mots=filtrer, *=réinit filtre, q=fermer le tampon | Souris : "
|
||||
"gauche=sélectionner, droit=installer/supprimer"
|
||||
|
||||
msgid "Scripts"
|
||||
msgstr "Scripts"
|
||||
@@ -17776,7 +17805,7 @@ msgid "> type `signal`: name(s) of signal (required)"
|
||||
msgstr "> type `signal` : nom(s) de signal (obligatoire)"
|
||||
|
||||
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)"
|
||||
msgstr "> type `modifier` : nom(s) de modificateur (obligatoire)"
|
||||
|
||||
@@ -22,10 +22,10 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: WeeChat\n"
|
||||
"Report-Msgid-Bugs-To: flashcode@flashtux.org\n"
|
||||
"POT-Creation-Date: 2026-03-21 17:24+0100\n"
|
||||
"POT-Creation-Date: 2026-05-30 14:00+0200\n"
|
||||
"PO-Revision-Date: 2026-03-08 08:59+0100\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"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
@@ -159,7 +159,7 @@ msgstr ""
|
||||
#, fuzzy, c-format
|
||||
msgid ""
|
||||
"WeeChat %s Copyright %s, compiled on %s %s\n"
|
||||
"Developed by Sébastien Helleu <flashcode@flashtux.org> - %s"
|
||||
"Developed by %s <%s> - %s"
|
||||
msgstr ""
|
||||
"%s Copyright (C) 2003-2010, fordítva: %s %s\n"
|
||||
"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 "
|
||||
"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
|
||||
msgid "manage bars"
|
||||
msgstr "pufferek kezelése"
|
||||
@@ -11281,7 +11291,7 @@ msgstr "cél: szerver neve"
|
||||
msgid "get nick from IRC host"
|
||||
msgstr "név vagy gép letiltása"
|
||||
|
||||
msgid "IRC host (like `:nick!name@server.com`)"
|
||||
msgid "IRC host (like `:nick!name@server`)"
|
||||
msgstr ""
|
||||
|
||||
msgid ""
|
||||
@@ -11515,8 +11525,8 @@ msgstr "Ez az ablak nem egy szoba!\n"
|
||||
|
||||
#, c-format
|
||||
msgid ""
|
||||
"%d channels (total: %d) | Filter: %s | Sort: %s | Key(input): ctrl+j=join "
|
||||
"channel, ($)=refresh, (q)=close buffer"
|
||||
"%d channels (total: %d) | Filter: %s | Sort: %s | Keys: ctrl+j=join channel "
|
||||
"| Input: $=refresh, s:x,y=sort, words=filter, *=reset filter, q=close buffer"
|
||||
msgstr ""
|
||||
|
||||
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 "
|
||||
"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 "
|
||||
"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 "
|
||||
"should first set the compression type via option "
|
||||
"logger.file.rotation_compression_type"
|
||||
@@ -14391,21 +14401,21 @@ msgstr ""
|
||||
#, 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\")"
|
||||
"\"api\" and \"weechat\" protocols, 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\")"
|
||||
msgstr ""
|
||||
"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 "
|
||||
"\"perl\" elegendő \"libperl.so\" helyett)"
|
||||
|
||||
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"
|
||||
"number of iterations asked to the client in \"api\" and \"weechat\" "
|
||||
"protocols 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"
|
||||
msgstr ""
|
||||
|
||||
msgid ""
|
||||
@@ -14438,6 +14448,11 @@ msgid ""
|
||||
"1 are recommended values)"
|
||||
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 ""
|
||||
"POSIX extended regular expression with origins allowed in websockets (case-"
|
||||
"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
|
||||
msgid ""
|
||||
"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)"
|
||||
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"
|
||||
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
|
||||
msgid "%s%s: cannot \"listen\" on path %s (%s): error %d %s"
|
||||
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"
|
||||
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 ""
|
||||
|
||||
#, fuzzy
|
||||
@@ -14939,9 +14958,9 @@ msgstr ""
|
||||
|
||||
#, c-format
|
||||
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: "
|
||||
"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"
|
||||
msgstr ""
|
||||
|
||||
|
||||
@@ -22,10 +22,10 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: WeeChat\n"
|
||||
"Report-Msgid-Bugs-To: flashcode@flashtux.org\n"
|
||||
"POT-Creation-Date: 2026-03-21 17:24+0100\n"
|
||||
"PO-Revision-Date: 2026-03-12 20:24+0100\n"
|
||||
"POT-Creation-Date: 2026-05-30 14:00+0200\n"
|
||||
"PO-Revision-Date: 2026-05-30 14:02+0200\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"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
@@ -164,10 +164,10 @@ msgstr ""
|
||||
#, c-format
|
||||
msgid ""
|
||||
"WeeChat %s Copyright %s, compiled on %s %s\n"
|
||||
"Developed by Sébastien Helleu <flashcode@flashtux.org> - %s"
|
||||
"Developed by %s <%s> - %s"
|
||||
msgstr ""
|
||||
"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:"
|
||||
msgstr ""
|
||||
@@ -1174,6 +1174,16 @@ msgstr ""
|
||||
"messaggio: messaggio di assenza (se non specificato, lo stato di assenza "
|
||||
"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"
|
||||
msgstr "gestione delle barre"
|
||||
|
||||
@@ -12120,8 +12130,8 @@ msgstr "nome server"
|
||||
msgid "get nick from IRC host"
|
||||
msgstr "ottiene nick dall'host IRC"
|
||||
|
||||
msgid "IRC host (like `:nick!name@server.com`)"
|
||||
msgstr "host IRC (come `:nick!nome@server.com`)"
|
||||
msgid "IRC host (like `:nick!name@server`)"
|
||||
msgstr "host IRC (come `:nick!nome@server`)"
|
||||
|
||||
msgid ""
|
||||
"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
|
||||
msgid ""
|
||||
"%d channels (total: %d) | Filter: %s | Sort: %s | Key(input): ctrl+j=join "
|
||||
"channel, ($)=refresh, (q)=close buffer"
|
||||
"%d channels (total: %d) | Filter: %s | Sort: %s | Keys: ctrl+j=join channel "
|
||||
"| Input: $=refresh, s:x,y=sort, words=filter, *=reset filter, q=close buffer"
|
||||
msgstr ""
|
||||
|
||||
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 "
|
||||
"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 "
|
||||
"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 "
|
||||
"should first set the compression type via option "
|
||||
"logger.file.rotation_compression_type"
|
||||
@@ -15443,11 +15453,11 @@ msgstr ""
|
||||
#, 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\")"
|
||||
"\"api\" and \"weechat\" protocols, 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\")"
|
||||
msgstr ""
|
||||
"elenco separato da virgole di plugin da caricare automaticamente all'avvio, "
|
||||
"\"*\" equivale a tutti i plugin trovati. un nome che comincia con \"!\" è un "
|
||||
@@ -15456,10 +15466,10 @@ msgstr ""
|
||||
"oppure \"*,!lua,!tcl\")"
|
||||
|
||||
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"
|
||||
"number of iterations asked to the client in \"api\" and \"weechat\" "
|
||||
"protocols 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"
|
||||
msgstr ""
|
||||
|
||||
msgid ""
|
||||
@@ -15492,6 +15502,11 @@ msgid ""
|
||||
"1 are recommended values)"
|
||||
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
|
||||
msgid ""
|
||||
"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
|
||||
msgid ""
|
||||
"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)"
|
||||
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"
|
||||
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
|
||||
msgid "%s%s: cannot \"listen\" on path %s (%s): error %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"
|
||||
msgstr "%s%s: memoria non sufficiente per l'ascolto su una nuova porta"
|
||||
|
||||
msgid "Relay WeeChat data to remote application (irc/weechat protocols)"
|
||||
msgstr ""
|
||||
"Esegui il relay dei dati di WeeChat ad un'applicazione remota (protocolli "
|
||||
"irc/weechat)"
|
||||
msgid "Relay WeeChat data to remote applications"
|
||||
msgstr "Esegui il relay dei dati di WeeChat ad un'applicazione remota"
|
||||
|
||||
msgid "connecting"
|
||||
msgstr "connessione"
|
||||
@@ -16043,9 +16060,9 @@ msgstr ""
|
||||
|
||||
#, c-format
|
||||
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: "
|
||||
"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"
|
||||
msgstr ""
|
||||
|
||||
|
||||
@@ -22,11 +22,10 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: WeeChat\n"
|
||||
"Report-Msgid-Bugs-To: flashcode@flashtux.org\n"
|
||||
"POT-Creation-Date: 2026-03-21 17:24+0100\n"
|
||||
"PO-Revision-Date: 2026-03-16 13:22+0100\n"
|
||||
"POT-Creation-Date: 2026-05-30 14:00+0200\n"
|
||||
"PO-Revision-Date: 2026-05-30 14:02+0200\n"
|
||||
"Last-Translator: AYANOKOUZI, Ryuunosuke <i38w7i3@yahoo.co.jp>\n"
|
||||
"Language-Team: Japanese <https://github.com/l/weechat/tree/master/"
|
||||
"translation/ja_JP>\n"
|
||||
"Language-Team: Japanese <weechat-dev@nongnu.org>\n"
|
||||
"Language: ja\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
@@ -168,10 +167,10 @@ msgstr "gcrypt の init/deinit を無効化"
|
||||
#, c-format
|
||||
msgid ""
|
||||
"WeeChat %s Copyright %s, compiled on %s %s\n"
|
||||
"Developed by Sébastien Helleu <flashcode@flashtux.org> - %s"
|
||||
"Developed by %s <%s> - %s"
|
||||
msgstr ""
|
||||
"WeeChat %s 著作権 %s、%s %s にコンパイル\n"
|
||||
"開発者 Sébastien Helleu <flashcode@flashtux.org> - %s"
|
||||
"開発者 %s <%s> - %s"
|
||||
|
||||
msgid "Usage:"
|
||||
msgstr "使い方:"
|
||||
@@ -1184,6 +1183,16 @@ msgstr ""
|
||||
" -all: 全ての接続済みサーバに対して離席状態を切り替え\n"
|
||||
"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"
|
||||
msgstr "バーの管理"
|
||||
|
||||
@@ -12575,8 +12584,8 @@ msgstr "サーバ名"
|
||||
msgid "get nick from IRC host"
|
||||
msgstr "IRC ホストからニックネームを取得"
|
||||
|
||||
msgid "IRC host (like `:nick!name@server.com`)"
|
||||
msgstr "IRC ホスト (例: `:nick!name@server.com`)"
|
||||
msgid "IRC host (like `:nick!name@server`)"
|
||||
msgstr "IRC ホスト (例: `:nick!name@server`)"
|
||||
|
||||
msgid ""
|
||||
"get nick color code (*deprecated* since version 1.5, replaced by "
|
||||
@@ -12811,8 +12820,8 @@ msgstr "%s%s: このバッファはチャンネルではありません!"
|
||||
|
||||
#, c-format
|
||||
msgid ""
|
||||
"%d channels (total: %d) | Filter: %s | Sort: %s | Key(input): ctrl+j=join "
|
||||
"channel, ($)=refresh, (q)=close buffer"
|
||||
"%d channels (total: %d) | Filter: %s | Sort: %s | Keys: ctrl+j=join channel "
|
||||
"| Input: $=refresh, s:x,y=sort, words=filter, *=reset filter, q=close buffer"
|
||||
msgstr ""
|
||||
|
||||
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 "
|
||||
"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 "
|
||||
"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 "
|
||||
"should first set the compression type via option "
|
||||
"logger.file.rotation_compression_type"
|
||||
@@ -15951,21 +15960,21 @@ msgstr ""
|
||||
#, 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\")"
|
||||
"\"api\" and \"weechat\" protocols, 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\")"
|
||||
msgstr ""
|
||||
"スタートアップ時にロードするプラグインのコンマ区切りリスト、\"*\" は見つかっ"
|
||||
"た全てのプラグイン、\"!\" から始まる名前はロードしないプラグイン、名前にワイ"
|
||||
"ルドカード \"*\" を使うことができます (例: \"*\" または \"*,!lua,!tcl\")"
|
||||
|
||||
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"
|
||||
"number of iterations asked to the client in \"api\" and \"weechat\" "
|
||||
"protocols 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"
|
||||
msgstr ""
|
||||
|
||||
msgid ""
|
||||
@@ -16013,6 +16022,11 @@ msgstr ""
|
||||
"のパスワードを考慮、...; この値を大きくするとセキュリティレベルが低下します "
|
||||
"(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
|
||||
#| msgid ""
|
||||
#| "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
|
||||
msgid ""
|
||||
"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)"
|
||||
msgstr ""
|
||||
"protocol,status (どちらも任意、引数の \"*\" はすべてを意味します; プロトコ"
|
||||
"ル: irc、weechat。状態: connecting、waiting_auth、connected、auth_failed、"
|
||||
"disconnected)"
|
||||
"ル: api、irc、weechat。状態: connecting、waiting_auth、connected、"
|
||||
"auth_failed、disconnected)"
|
||||
|
||||
msgid "list of relay clients"
|
||||
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"
|
||||
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
|
||||
msgid "%s%s: cannot \"listen\" on path %s (%s): error %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"
|
||||
msgstr "%s%s: 新しいポートをリッスンするためのメモリ不足"
|
||||
|
||||
msgid "Relay WeeChat data to remote application (irc/weechat protocols)"
|
||||
msgstr ""
|
||||
"WeeChat データをリモートアプリケーションにリレー (irc/weechat プロトコル)"
|
||||
msgid "Relay WeeChat data to remote applications"
|
||||
msgstr "WeeChat データをリモートアプリケーションにリレー"
|
||||
|
||||
msgid "connecting"
|
||||
msgstr "接続中"
|
||||
@@ -16578,11 +16596,16 @@ msgstr "(なし)"
|
||||
msgid "Alt+key/input: v=back to list d=jump to diff"
|
||||
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 ""
|
||||
"%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: "
|
||||
"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"
|
||||
msgstr ""
|
||||
"%d/%d 個のスクリプト (フィルタ: %s) | ソート: %s | Alt+key/input: i=インス"
|
||||
|
||||
@@ -24,10 +24,10 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: WeeChat\n"
|
||||
"Report-Msgid-Bugs-To: flashcode@flashtux.org\n"
|
||||
"POT-Creation-Date: 2026-03-21 17:24+0100\n"
|
||||
"PO-Revision-Date: 2026-03-21 17:26+0100\n"
|
||||
"POT-Creation-Date: 2026-05-30 14:00+0200\n"
|
||||
"PO-Revision-Date: 2026-05-30 14:02+0200\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"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
@@ -166,10 +166,10 @@ msgstr "wyłącza funkcje init/deinit z gcrypt"
|
||||
#, c-format
|
||||
msgid ""
|
||||
"WeeChat %s Copyright %s, compiled on %s %s\n"
|
||||
"Developed by Sébastien Helleu <flashcode@flashtux.org> - %s"
|
||||
"Developed by %s <%s> - %s"
|
||||
msgstr ""
|
||||
"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:"
|
||||
msgstr "Użycie:"
|
||||
@@ -1148,6 +1148,21 @@ msgstr ""
|
||||
"wiadomość: powód nieobecności (jeśli nie podano wiadomości status "
|
||||
"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"
|
||||
msgstr "zarządzaj paskami"
|
||||
|
||||
@@ -12466,8 +12481,8 @@ msgstr "nazwa serwera"
|
||||
msgid "get nick from IRC host"
|
||||
msgstr "pobiera nick z hosta IRC"
|
||||
|
||||
msgid "IRC host (like `:nick!name@server.com`)"
|
||||
msgstr "Host IRC (jak `:nick!nazwa@serwer.com`)"
|
||||
msgid "IRC host (like `:nick!name@server`)"
|
||||
msgstr "Host IRC (jak `:nick!nazwa@serwer`)"
|
||||
|
||||
msgid ""
|
||||
"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!"
|
||||
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 ""
|
||||
"%d channels (total: %d) | Filter: %s | Sort: %s | Key(input): ctrl+j=join "
|
||||
"channel, ($)=refresh, (q)=close buffer"
|
||||
"%d channels (total: %d) | Filter: %s | Sort: %s | Keys: ctrl+j=join channel "
|
||||
"| Input: $=refresh, s:x,y=sort, words=filter, *=reset filter, q=close buffer"
|
||||
msgstr ""
|
||||
"%d kanałów (łącznie: %d) | Filtr: %s | Sortowanie: %s | Key(input): "
|
||||
"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 "
|
||||
"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 ""
|
||||
"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 "
|
||||
"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 "
|
||||
"should first set the compression type via option "
|
||||
"logger.file.rotation_compression_type"
|
||||
@@ -15688,13 +15717,21 @@ msgstr ""
|
||||
"oznacza brak hasła, zobacz opcję relay.network.allow_empty_password) (uwaga: "
|
||||
"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 ""
|
||||
"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\")"
|
||||
"\"api\" and \"weechat\" protocols, 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\")"
|
||||
msgstr ""
|
||||
"oddzielona przecinkami lista algorytmów hashujących używanych dla "
|
||||
"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: \"*\", "
|
||||
"\"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 ""
|
||||
"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"
|
||||
"number of iterations asked to the client in \"api\" and \"weechat\" "
|
||||
"protocols 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"
|
||||
msgstr ""
|
||||
"ilość iteracji zapytań klienta protokołu weechat w przypadku hashowania "
|
||||
"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 "
|
||||
"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 ""
|
||||
"POSIX extended regular expression with origins allowed in websockets (case-"
|
||||
"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 "
|
||||
"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: "
|
||||
"\"^http://(www\\.)?przykład\\.(com|org)\""
|
||||
"\"^https?://(www\\.)?example\\.(com|org)\""
|
||||
|
||||
msgid ""
|
||||
"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
|
||||
msgid ""
|
||||
"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)"
|
||||
msgstr ""
|
||||
"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)"
|
||||
|
||||
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"
|
||||
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
|
||||
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"
|
||||
@@ -16064,9 +16117,8 @@ msgstr ""
|
||||
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"
|
||||
|
||||
msgid "Relay WeeChat data to remote application (irc/weechat protocols)"
|
||||
msgstr ""
|
||||
"Przekazywanie danych WeeChat do zdalnych aplikacji (protokoły irc i weechat)"
|
||||
msgid "Relay WeeChat data to remote applications"
|
||||
msgstr "Przekazywanie danych WeeChat do zdalnych aplikacji"
|
||||
|
||||
msgid "connecting"
|
||||
msgstr "łączę"
|
||||
@@ -16298,11 +16350,16 @@ msgstr "(brak)"
|
||||
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"
|
||||
|
||||
#, 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 ""
|
||||
"%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: "
|
||||
"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"
|
||||
msgstr ""
|
||||
"%d/%d skrypty (filtr: %s) | Sort: %s | Alt+klawisz/wejście: i=instaluj "
|
||||
|
||||
@@ -22,10 +22,10 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: WeeChat\n"
|
||||
"Report-Msgid-Bugs-To: flashcode@flashtux.org\n"
|
||||
"POT-Creation-Date: 2026-03-21 17:24+0100\n"
|
||||
"PO-Revision-Date: 2026-03-12 20:24+0100\n"
|
||||
"POT-Creation-Date: 2026-05-30 14:00+0200\n"
|
||||
"PO-Revision-Date: 2026-05-30 14:02+0200\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"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
@@ -165,10 +165,10 @@ msgstr ""
|
||||
#, c-format
|
||||
msgid ""
|
||||
"WeeChat %s Copyright %s, compiled on %s %s\n"
|
||||
"Developed by Sébastien Helleu <flashcode@flashtux.org> - %s"
|
||||
"Developed by %s <%s> - %s"
|
||||
msgstr ""
|
||||
"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:"
|
||||
msgstr "Utilização:"
|
||||
@@ -1190,6 +1190,16 @@ msgstr ""
|
||||
"mensagem: mensagem de ausência (se não for indicada uma mensagem, o estado "
|
||||
"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"
|
||||
msgstr "gerir barras"
|
||||
|
||||
@@ -12495,8 +12505,8 @@ msgstr "nome do servidor"
|
||||
msgid "get nick from IRC host"
|
||||
msgstr "obter nick do host de IRC"
|
||||
|
||||
msgid "IRC host (like `:nick!name@server.com`)"
|
||||
msgstr "host de IRC (tal como `:nick!nome@servidor.com`)"
|
||||
msgid "IRC host (like `:nick!name@server`)"
|
||||
msgstr "host de IRC (tal como `:nick!nome@servidor`)"
|
||||
|
||||
msgid ""
|
||||
"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
|
||||
msgid ""
|
||||
"%d channels (total: %d) | Filter: %s | Sort: %s | Key(input): ctrl+j=join "
|
||||
"channel, ($)=refresh, (q)=close buffer"
|
||||
"%d channels (total: %d) | Filter: %s | Sort: %s | Keys: ctrl+j=join channel "
|
||||
"| Input: $=refresh, s:x,y=sort, words=filter, *=reset filter, q=close buffer"
|
||||
msgstr ""
|
||||
|
||||
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 "
|
||||
"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 "
|
||||
"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 "
|
||||
"should first set the compression type via option "
|
||||
"logger.file.rotation_compression_type"
|
||||
@@ -15834,11 +15844,11 @@ msgstr ""
|
||||
#, 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\")"
|
||||
"\"api\" and \"weechat\" protocols, 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\")"
|
||||
msgstr ""
|
||||
"lista de plugins separados por vírgula para carregar automaticamente ao "
|
||||
"iniciar, \"*\" significa todos os plugins encontrados, um nome começado com "
|
||||
@@ -15847,10 +15857,10 @@ msgstr ""
|
||||
"tcl\")"
|
||||
|
||||
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"
|
||||
"number of iterations asked to the client in \"api\" and \"weechat\" "
|
||||
"protocols 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"
|
||||
msgstr ""
|
||||
|
||||
msgid ""
|
||||
@@ -15883,6 +15893,11 @@ msgid ""
|
||||
"1 are recommended values)"
|
||||
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
|
||||
msgid ""
|
||||
"POSIX extended regular expression with origins allowed in websockets (case-"
|
||||
@@ -16006,7 +16021,7 @@ msgstr "número de cliente para reencaminhar"
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
"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)"
|
||||
msgstr ""
|
||||
"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"
|
||||
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
|
||||
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"
|
||||
@@ -16195,10 +16214,8 @@ msgstr ""
|
||||
msgid "%s%s: not enough memory for listening on new port"
|
||||
msgstr "%s%s: memória insuficiente para escutar nova porta"
|
||||
|
||||
msgid "Relay WeeChat data to remote application (irc/weechat protocols)"
|
||||
msgstr ""
|
||||
"Reencaminhar dados do WeeChat para aplicações remotas (protocolos irc/"
|
||||
"weechat)"
|
||||
msgid "Relay WeeChat data to remote applications"
|
||||
msgstr "Reencaminhar dados do WeeChat para aplicações remotas"
|
||||
|
||||
msgid "connecting"
|
||||
msgstr "a conectar"
|
||||
@@ -16442,11 +16459,16 @@ msgstr "(nada)"
|
||||
msgid "Alt+key/input: v=back to list d=jump to 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 ""
|
||||
"%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: "
|
||||
"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"
|
||||
msgstr ""
|
||||
"%d/%d scripts (filtro: %s) | Ordenar: %s | Alt+tecla/entrada: i=instalar, "
|
||||
|
||||
+42
-23
@@ -46,10 +46,10 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: WeeChat\n"
|
||||
"Report-Msgid-Bugs-To: flashcode@flashtux.org\n"
|
||||
"POT-Creation-Date: 2026-03-21 17:24+0100\n"
|
||||
"PO-Revision-Date: 2026-03-12 20:19+0100\n"
|
||||
"POT-Creation-Date: 2026-05-30 14:00+0200\n"
|
||||
"PO-Revision-Date: 2026-05-30 14:02+0200\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"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
@@ -189,10 +189,10 @@ msgstr ""
|
||||
#, c-format
|
||||
msgid ""
|
||||
"WeeChat %s Copyright %s, compiled on %s %s\n"
|
||||
"Developed by Sébastien Helleu <flashcode@flashtux.org> - %s"
|
||||
"Developed by %s <%s> - %s"
|
||||
msgstr ""
|
||||
"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:"
|
||||
msgstr "Uso:"
|
||||
@@ -1201,6 +1201,16 @@ msgstr ""
|
||||
"message: mensagem para ausência (se nenhuma mensagem for fornecida, o status "
|
||||
"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"
|
||||
msgstr "gerenciar barras"
|
||||
|
||||
@@ -11644,8 +11654,8 @@ msgstr "nome do servidor"
|
||||
msgid "get nick from IRC host"
|
||||
msgstr "obter apelido de host IRC"
|
||||
|
||||
msgid "IRC host (like `:nick!name@server.com`)"
|
||||
msgstr "host IRC (exemplo: `:apelido!nome@servidor.com`)"
|
||||
msgid "IRC host (like `:nick!name@server`)"
|
||||
msgstr "host IRC (exemplo: `:apelido!nome@servidor`)"
|
||||
|
||||
msgid ""
|
||||
"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
|
||||
msgid ""
|
||||
"%d channels (total: %d) | Filter: %s | Sort: %s | Key(input): ctrl+j=join "
|
||||
"channel, ($)=refresh, (q)=close buffer"
|
||||
"%d channels (total: %d) | Filter: %s | Sort: %s | Keys: ctrl+j=join channel "
|
||||
"| Input: $=refresh, s:x,y=sort, words=filter, *=reset filter, q=close buffer"
|
||||
msgstr ""
|
||||
|
||||
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 "
|
||||
"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 "
|
||||
"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 "
|
||||
"should first set the compression type via option "
|
||||
"logger.file.rotation_compression_type"
|
||||
@@ -14878,11 +14888,11 @@ msgstr ""
|
||||
#, 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\")"
|
||||
"\"api\" and \"weechat\" protocols, 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\")"
|
||||
msgstr ""
|
||||
"lista separada por vírgulas dos plugins para carregar automaticamente "
|
||||
"nainicialização, \"*\" significa todos os plugins encontrados, um nome "
|
||||
@@ -14891,10 +14901,10 @@ msgstr ""
|
||||
"plugins (exemplos: \"*\" ou \"*,!lua,!tcl\")"
|
||||
|
||||
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"
|
||||
"number of iterations asked to the client in \"api\" and \"weechat\" "
|
||||
"protocols 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"
|
||||
msgstr ""
|
||||
|
||||
msgid ""
|
||||
@@ -14927,6 +14937,11 @@ msgid ""
|
||||
"1 are recommended values)"
|
||||
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
|
||||
msgid ""
|
||||
"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
|
||||
msgid ""
|
||||
"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)"
|
||||
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"
|
||||
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
|
||||
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)"
|
||||
@@ -15201,7 +15220,7 @@ msgstr ""
|
||||
msgid "%s%s: not enough memory for listening on new port"
|
||||
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 ""
|
||||
|
||||
msgid "connecting"
|
||||
@@ -15445,9 +15464,9 @@ msgstr "Alt+key/input: v=volta para lista d=pular para o diff"
|
||||
|
||||
#, c-format
|
||||
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: "
|
||||
"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"
|
||||
msgstr ""
|
||||
|
||||
|
||||
@@ -23,10 +23,10 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: WeeChat\n"
|
||||
"Report-Msgid-Bugs-To: flashcode@flashtux.org\n"
|
||||
"POT-Creation-Date: 2026-03-21 17:24+0100\n"
|
||||
"POT-Creation-Date: 2026-05-30 14:00+0200\n"
|
||||
"PO-Revision-Date: 2026-03-08 08:59+0100\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"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
@@ -162,7 +162,7 @@ msgstr ""
|
||||
#, fuzzy, c-format
|
||||
msgid ""
|
||||
"WeeChat %s Copyright %s, compiled on %s %s\n"
|
||||
"Developed by Sébastien Helleu <flashcode@flashtux.org> - %s"
|
||||
"Developed by %s <%s> - %s"
|
||||
msgstr ""
|
||||
"%s Copyright (C) 2003-2010, собран %s %s\n"
|
||||
"Разработчик - Sébastien Helleu <flashcode@flashtux.org> - %s"
|
||||
@@ -1179,6 +1179,16 @@ msgstr ""
|
||||
" -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
|
||||
msgid "manage bars"
|
||||
msgstr "управление буферами"
|
||||
@@ -11327,7 +11337,7 @@ msgstr "цель: название сервера"
|
||||
msgid "get nick from IRC host"
|
||||
msgstr "банит ник или хост"
|
||||
|
||||
msgid "IRC host (like `:nick!name@server.com`)"
|
||||
msgid "IRC host (like `:nick!name@server`)"
|
||||
msgstr ""
|
||||
|
||||
msgid ""
|
||||
@@ -11561,8 +11571,8 @@ msgstr "Это окно не является каналом!\n"
|
||||
|
||||
#, c-format
|
||||
msgid ""
|
||||
"%d channels (total: %d) | Filter: %s | Sort: %s | Key(input): ctrl+j=join "
|
||||
"channel, ($)=refresh, (q)=close buffer"
|
||||
"%d channels (total: %d) | Filter: %s | Sort: %s | Keys: ctrl+j=join channel "
|
||||
"| Input: $=refresh, s:x,y=sort, words=filter, *=reset filter, q=close buffer"
|
||||
msgstr ""
|
||||
|
||||
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 "
|
||||
"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 "
|
||||
"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 "
|
||||
"should first set the compression type via option "
|
||||
"logger.file.rotation_compression_type"
|
||||
@@ -14442,21 +14452,21 @@ msgstr ""
|
||||
#, 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\")"
|
||||
"\"api\" and \"weechat\" protocols, 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\")"
|
||||
msgstr ""
|
||||
"разделённый запятыми список автоматически загружаемых при запуске plug-"
|
||||
"in'ов , \"*\" означает все найденные plug-in'ы (имена могут быть не полными, "
|
||||
"например \"perl\" успешно загрузит \"libperl.so\")"
|
||||
|
||||
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"
|
||||
"number of iterations asked to the client in \"api\" and \"weechat\" "
|
||||
"protocols 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"
|
||||
msgstr ""
|
||||
|
||||
msgid ""
|
||||
@@ -14489,6 +14499,11 @@ msgid ""
|
||||
"1 are recommended values)"
|
||||
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 ""
|
||||
"POSIX extended regular expression with origins allowed in websockets (case-"
|
||||
"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
|
||||
msgid ""
|
||||
"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)"
|
||||
msgstr ""
|
||||
|
||||
@@ -14710,6 +14725,10 @@ msgstr "%s невозможно создать сокет\n"
|
||||
msgid "%s%s: cannot \"bind\" on port %d (%s): error %d %s"
|
||||
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
|
||||
msgid "%s%s: cannot \"listen\" on path %s (%s): error %d %s"
|
||||
msgstr "%s невозможно создать сокет\n"
|
||||
@@ -14748,7 +14767,7 @@ msgstr ""
|
||||
msgid "%s%s: not enough memory for listening on new port"
|
||||
msgstr "%s недостаточно памяти для нового DCC\n"
|
||||
|
||||
msgid "Relay WeeChat data to remote application (irc/weechat protocols)"
|
||||
msgid "Relay WeeChat data to remote applications"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
@@ -14992,9 +15011,9 @@ msgstr ""
|
||||
|
||||
#, c-format
|
||||
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: "
|
||||
"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"
|
||||
msgstr ""
|
||||
|
||||
|
||||
@@ -22,10 +22,10 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: WeeChat\n"
|
||||
"Report-Msgid-Bugs-To: flashcode@flashtux.org\n"
|
||||
"POT-Creation-Date: 2026-03-21 17:24+0100\n"
|
||||
"PO-Revision-Date: 2026-03-21 17:26+0100\n"
|
||||
"POT-Creation-Date: 2026-05-30 14:00+0200\n"
|
||||
"PO-Revision-Date: 2026-05-30 14:02+0200\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"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
@@ -166,10 +166,10 @@ msgstr "искључује иниц/деиниц gcrypt"
|
||||
#, c-format
|
||||
msgid ""
|
||||
"WeeChat %s Copyright %s, compiled on %s %s\n"
|
||||
"Developed by Sébastien Helleu <flashcode@flashtux.org> - %s"
|
||||
"Developed by %s <%s> - %s"
|
||||
msgstr ""
|
||||
"WeeChat %s ауторска права %s, компајлиран %s %s\n"
|
||||
"Написао Себастијен Елеу <flashcode@flashtux.org> - %s"
|
||||
"Написао %s <%s> - %s"
|
||||
|
||||
msgid "Usage:"
|
||||
msgstr "Употреба:"
|
||||
@@ -1138,6 +1138,20 @@ msgid ""
|
||||
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"
|
||||
msgstr "управљање тракама"
|
||||
|
||||
@@ -1240,16 +1254,12 @@ msgstr "маска: име у којем је дозвољен џокер „*
|
||||
msgid "raw[set]: set a value for a bar property"
|
||||
msgstr "raw[set]: поставља вредност особине траке"
|
||||
|
||||
#, fuzzy
|
||||
#| msgid ""
|
||||
#| "option: option to change (for options list, look at /set weechat.bar."
|
||||
#| "<barname>.*)"
|
||||
msgid ""
|
||||
"option: option to change (for options list, look at /set weechat.bar."
|
||||
"<bar_name>.*)"
|
||||
msgstr ""
|
||||
"опција: опција која се мења (за листу опција, погледајте /set weechat.bar."
|
||||
"<иметраке>.*)"
|
||||
"<име_траке>.*)"
|
||||
|
||||
msgid "value: new value for option"
|
||||
msgstr "вредност: нова вредност опције"
|
||||
@@ -1779,14 +1789,11 @@ msgid "evaluate expression"
|
||||
msgstr "израчунавање израза"
|
||||
|
||||
#. 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 ""
|
||||
"[-n|-s] [-e] [-d] <expression> || [-n] [-d [-d]] -c <expression1> <operator> "
|
||||
"<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)"
|
||||
msgstr "raw[-n]: приказује резултат и не шаље га у бафер (дибаг режим)"
|
||||
@@ -1799,7 +1806,7 @@ msgstr ""
|
||||
"тачка запетама)"
|
||||
|
||||
msgid "raw[-e]: evaluate all commands before executing them"
|
||||
msgstr ""
|
||||
msgstr "raw[-e]: израчунај све команде пре него што се изврше"
|
||||
|
||||
msgid ""
|
||||
"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"
|
||||
msgstr "raw[set]: поставља вредност особине проксија"
|
||||
|
||||
#, fuzzy
|
||||
#| msgid ""
|
||||
#| "option: option to change (for options list, look at /set weechat.proxy."
|
||||
#| "<proxyname>.*)"
|
||||
msgid ""
|
||||
"option: option to change (for options list, look at /set weechat.proxy."
|
||||
"<proxy_name>.*)"
|
||||
msgstr ""
|
||||
"опција: опција која треба да се промени (за листу опција, погледајте /set "
|
||||
"weechat.proxy.<имепроксија>.*)"
|
||||
"weechat.proxy.<име_проксија>.*)"
|
||||
|
||||
msgid " add a http proxy, running on local host, port 8888:"
|
||||
msgstr " додаје http прокси који се извршава на локалном хосту, порт 8888:"
|
||||
@@ -4048,10 +4051,8 @@ msgstr ""
|
||||
msgid "With option \"-quit\", the process is:"
|
||||
msgstr "Процес са опцијом „-quit” је следећи:"
|
||||
|
||||
#, fuzzy
|
||||
#| msgid " 1. close *ALL* connections (irc, xfer, relay, ...)"
|
||||
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)"
|
||||
msgstr " 2. чување сесије у фајлове (*.upgrade)"
|
||||
@@ -11906,7 +11907,6 @@ msgstr ""
|
||||
msgid "left/right scroll in /list buffer (percent of width)"
|
||||
msgstr "скроловање у лево/десно у /list баферу (проценат ширине)"
|
||||
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
"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 \"~\" "
|
||||
@@ -11917,8 +11917,8 @@ msgstr ""
|
||||
"листа поља за сортирање канала раздвојених запетама (погледајте /help list "
|
||||
"за листу поља); карактер „-” може да се користи испред поља чиме се обрће "
|
||||
"редослед, карактер „~” може да се употреби за поређење које не прави разлику "
|
||||
"у величини слова; пример: „-users,~name2” за поређење које не прави разлику "
|
||||
"у величини слова и обрнуто сортирање по имену опције"
|
||||
"у величини слова; пример: „-users,~name2” најпре за највеће канале, па онда "
|
||||
"сортирање које не прави разлику у величини слова по имену канала без префикса"
|
||||
|
||||
msgid "strip channel topic colors in /list buffer"
|
||||
msgstr "уклањање боја теме канала у /list баферу"
|
||||
@@ -12446,8 +12446,8 @@ msgstr "име сервера"
|
||||
msgid "get nick from IRC host"
|
||||
msgstr "враћа надимак из IRC хоста"
|
||||
|
||||
msgid "IRC host (like `:nick!name@server.com`)"
|
||||
msgstr "IRC хост (као `:надимак!име@сервер.com`)"
|
||||
msgid "IRC host (like `:nick!name@server`)"
|
||||
msgstr "IRC хост (као `:надимак!име@сервер`)"
|
||||
|
||||
msgid ""
|
||||
"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!"
|
||||
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 ""
|
||||
"%d channels (total: %d) | Filter: %s | Sort: %s | Key(input): ctrl+j=join "
|
||||
"channel, ($)=refresh, (q)=close buffer"
|
||||
"%d channels (total: %d) | Filter: %s | Sort: %s | Keys: ctrl+j=join channel "
|
||||
"| Input: $=refresh, s:x,y=sort, words=filter, *=reset filter, q=close buffer"
|
||||
msgstr ""
|
||||
"%d канала (укупно: %d) | Филтер: %s | Сортирање: %s | Тастер(унос): ctrl+j= "
|
||||
"приступ каналу, ($)=освежавање, (q)=затварање бафера"
|
||||
@@ -13867,7 +13870,7 @@ msgid ""
|
||||
"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 "
|
||||
"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 "
|
||||
"should first set the compression type via option "
|
||||
"logger.file.rotation_compression_type"
|
||||
@@ -13877,9 +13880,9 @@ msgstr ""
|
||||
"текућем фајлу се поставља екстензија .1; дозвољава се цели број са суфиксом: "
|
||||
"b = бајтова (подразумевано ако се не наведе јединица), k = килобајта, m = "
|
||||
"мегабајта, g = гигабајта, t = терабајта; пример: „2g” значи да се ротација "
|
||||
"врши ако је величина фајла > 2,000,000,000 бајтова; ако се постави на „0”, "
|
||||
"ротација се не врши (нема ограничења лог фајла); УПОЗОРЕЊЕ: пре него што "
|
||||
"промените ову опцију, требало би најпре да поставите тип компресије опцијом "
|
||||
"врши ако је величина фајла > 2 GB; ако се постави на „0”, ротација се не "
|
||||
"врши (нема ограничења лог фајла); УПОЗОРЕЊЕ: пре него што промените ову "
|
||||
"опцију, требало би најпре да поставите тип компресије опцијом "
|
||||
"logger.file.rotation_compression_type"
|
||||
|
||||
msgid ""
|
||||
@@ -15676,13 +15679,21 @@ msgstr ""
|
||||
"relay.network.allow_empty_password) (напомена: садржај се израчунава, "
|
||||
"погледајте /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 ""
|
||||
"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\")"
|
||||
"\"api\" and \"weechat\" protocols, 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\")"
|
||||
msgstr ""
|
||||
"листа хеш алгоритама раздвојених запетама који се користе за аутентификацију "
|
||||
"лозинке у weechat протоколу, могу бити: „plain” (лозинка је чисти текст, не "
|
||||
@@ -15691,11 +15702,17 @@ msgstr ""
|
||||
"спречава употреба тог алгоритма, у именима је дозвољена употреба џокера „*” "
|
||||
"(примери: „*”, „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 ""
|
||||
"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"
|
||||
"number of iterations asked to the client in \"api\" and \"weechat\" "
|
||||
"protocols 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"
|
||||
msgstr ""
|
||||
"број итерација који се захтева од клијента у weechat протоколу када се за "
|
||||
"аутентификацију користи лозинка хеширана PBKDF2 алгоритмом ; више итерација "
|
||||
@@ -15744,6 +15761,13 @@ msgstr ""
|
||||
"након, ...; велики број умањује ниво безбедности (препоручене вредности су 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 ""
|
||||
"дозволе за Unix сокет, као октална вредност (погледајте man chmod); мора да "
|
||||
"буде број од 3 цифре, свака између 0 и 7"
|
||||
|
||||
msgid ""
|
||||
"POSIX extended regular expression with origins allowed in websockets (case-"
|
||||
"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
|
||||
msgid ""
|
||||
"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)"
|
||||
msgstr ""
|
||||
"протокол,статус (оба нису обавезна, за сваки аргумент „*” значи све; "
|
||||
"протоколи: irc, weechat; статуси: connecting, waiting_auth, connected, "
|
||||
"протоколи: api, irc, weechat; статуси: connecting, waiting_auth, connected, "
|
||||
"auth_failed, disconnected)"
|
||||
|
||||
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"
|
||||
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
|
||||
msgid "%s%s: cannot \"listen\" on path %s (%s): error %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"
|
||||
msgstr "%s%s: нема довољно слободне меморије за слушање на новом порту"
|
||||
|
||||
msgid "Relay WeeChat data to remote application (irc/weechat protocols)"
|
||||
msgstr "Релеј WeeChat података удаљеној апликацији (irc/weechat протоколи)"
|
||||
msgid "Relay WeeChat data to remote applications"
|
||||
msgstr "Релеј WeeChat података удаљеној апликацији"
|
||||
|
||||
msgid "connecting"
|
||||
msgstr "повезивање"
|
||||
@@ -16274,11 +16303,16 @@ msgstr "(ништа)"
|
||||
msgid "Alt+key/input: v=back to list d=jump to 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 ""
|
||||
"%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: "
|
||||
"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"
|
||||
msgstr ""
|
||||
"%d/%d скрипти (филтер: %s) | Сортирање: %s | Alt+тастер/унос: i=инсталација, "
|
||||
@@ -17701,6 +17735,9 @@ msgid ""
|
||||
"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"
|
||||
msgstr ""
|
||||
"текст који се приказује испред надимака у ставци траке „typing”; ако је "
|
||||
"постављен, употребиће се уместо преведеног стринга „Typing: ”, који се "
|
||||
"подразумевано користи"
|
||||
|
||||
msgid "Typing status of users"
|
||||
msgstr "Статус куцања корисника"
|
||||
@@ -17834,17 +17871,14 @@ msgstr "величина блока за слање пакета, у бајто
|
||||
msgid "does not wait for ACK when sending file"
|
||||
msgstr "не чека се на ACK када се шаље фајл"
|
||||
|
||||
#, fuzzy
|
||||
#| msgid ""
|
||||
#| "IP or DNS address used for sending and passively receiving files/chats "
|
||||
#| "(if empty, local interface IP is used)"
|
||||
msgid ""
|
||||
"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 "
|
||||
"eval)"
|
||||
msgstr ""
|
||||
"IP или DNS адреса која се користи за слање и пасивно примање фајлова/"
|
||||
"разговора (ако је празно, користи се IP локалног интерфејса)"
|
||||
"разговора; ако је празно, користи се IP локалног интерфејса (напомена: "
|
||||
"садржај сер израчунава, погледајте /help eval)"
|
||||
|
||||
msgid ""
|
||||
"restricts outgoing files/chats and incoming/passive files to use only ports "
|
||||
|
||||
@@ -23,10 +23,10 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: WeeChat\n"
|
||||
"Report-Msgid-Bugs-To: flashcode@flashtux.org\n"
|
||||
"POT-Creation-Date: 2026-03-21 17:24+0100\n"
|
||||
"PO-Revision-Date: 2026-03-24 23:00+0100\n"
|
||||
"POT-Creation-Date: 2026-05-30 14:00+0200\n"
|
||||
"PO-Revision-Date: 2026-05-30 14:02+0200\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"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
@@ -85,8 +85,9 @@ msgstr "-P, --plugins <eklenti>"
|
||||
|
||||
#. TRANSLATORS: command line option "-P", "--plugins <plugins>"
|
||||
msgid "load only these plugins at startup (see /help weechat.plugin.autoload)"
|
||||
msgstr "başlangıçta yalnızca bu üç eklentiyi yükle "
|
||||
"(bkz. /help weechat.plugin.autoload)"
|
||||
msgstr ""
|
||||
"başlangıçta yalnızca bu üç eklentiyi yükle (bkz. /help "
|
||||
"weechat.plugin.autoload)"
|
||||
|
||||
#. TRANSLATORS: only "<cmd>" may be translated (please keep it short)
|
||||
msgid "-r, --run-command <cmd>"
|
||||
@@ -162,10 +163,10 @@ msgstr "gcrypt başlat/sonlandır devre dışı bırak"
|
||||
#, c-format
|
||||
msgid ""
|
||||
"WeeChat %s Copyright %s, compiled on %s %s\n"
|
||||
"Developed by Sébastien Helleu <flashcode@flashtux.org> - %s"
|
||||
"Developed by %s <%s> - %s"
|
||||
msgstr ""
|
||||
"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:"
|
||||
msgstr "Kullanım:"
|
||||
@@ -1128,6 +1129,21 @@ msgid ""
|
||||
msgstr ""
|
||||
"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"
|
||||
msgstr "çubukları yönet"
|
||||
|
||||
@@ -1771,8 +1787,7 @@ msgid ""
|
||||
"[-n|-s] [-e] [-d] <expression> || [-n] [-d [-d]] -c <expression1> <operator> "
|
||||
"<expression2>"
|
||||
msgstr ""
|
||||
"[-n|-s] [-e] [-d] <ifade> || [-n] [-d [-d]] -c <ifade1> <işleç> "
|
||||
"<ifade2>"
|
||||
"[-n|-s] [-e] [-d] <ifade> || [-n] [-d [-d]] -c <ifade1> <işleç> <ifade2>"
|
||||
|
||||
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)"
|
||||
@@ -2396,7 +2411,8 @@ msgstr "-list|-listfull [<eklenti>...] || <komut> || <seçenek>"
|
||||
msgid ""
|
||||
"raw[-list]: list commands, by plugin (without argument, this list is "
|
||||
"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)"
|
||||
|
||||
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 "
|
||||
"combination of 1=join/part, 2=message, 4=private, 8=highlight"
|
||||
msgstr ""
|
||||
"düzey: Sıcak listede yalnızca en düşük düzeyi temizlemek için \"lowest\", "
|
||||
"en yüksek düzey için \"highest\" veya düzey maskesi olarak tamsayı; şunların "
|
||||
"düzey: Sıcak listede yalnızca en düşük düzeyi temizlemek için \"lowest\", en "
|
||||
"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"
|
||||
|
||||
msgid "raw[remove]: remove current buffer from hotlist"
|
||||
@@ -2542,13 +2558,11 @@ msgstr "> raw[delete_next_word]: Sonraki sözcüğü sil"
|
||||
|
||||
msgid ""
|
||||
"> raw[delete_beginning_of_line]: delete from beginning of line until cursor"
|
||||
msgstr ""
|
||||
"> raw[delete_beginning_of_line]: Satırın başından imlece kadar sil"
|
||||
msgstr "> raw[delete_beginning_of_line]: Satırın başından imlece kadar sil"
|
||||
|
||||
msgid ""
|
||||
"> raw[delete_beginning_of_input]: delete from beginning of input until cursor"
|
||||
msgstr ""
|
||||
"> raw[delete_beginning_of_input]: Girişin başından imlece kadar sil"
|
||||
msgstr "> 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"
|
||||
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 /"
|
||||
"help print)"
|
||||
msgstr ""
|
||||
"> raw[insert]: Komut satırına metin gir (kaçırılan karakterlere izin verilir; "
|
||||
"bkz. /help print)"
|
||||
"> raw[insert]: Komut satırına metin gir (kaçırılan karakterlere izin "
|
||||
"verilir; bkz. /help print)"
|
||||
|
||||
msgid "> raw[send]: send text to the buffer"
|
||||
msgstr "> raw [send]: Arabelleğe metin gönder"
|
||||
@@ -2713,7 +2727,8 @@ msgstr ""
|
||||
msgid ""
|
||||
"raw[recreate]: set input with the command used to edit the custom bar item"
|
||||
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"
|
||||
msgstr "raw[del]: Özel çubuk ögesini sil"
|
||||
@@ -3308,16 +3323,12 @@ msgstr ""
|
||||
msgid "raw[set]: set a value for a proxy property"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
#| msgid ""
|
||||
#| "option: option to change (for options list, look at /set weechat.bar."
|
||||
#| "<barname>.*)"
|
||||
msgid ""
|
||||
"option: option to change (for options list, look at /set weechat.proxy."
|
||||
"<proxy_name>.*)"
|
||||
msgstr ""
|
||||
"seçenek: değiştirilecek seçenek (seçenekler listesi için /set "
|
||||
"weechat.bar<çubukadı>.* komutunu çalıştırın)"
|
||||
"seçenek: değiştirilecek seçenek (seçenekler listesi için /set weechat.proxy."
|
||||
"<vekil_adı>.* bölümüne bakın)"
|
||||
|
||||
msgid " add a http proxy, running on local host, port 8888:"
|
||||
msgstr ""
|
||||
@@ -4194,18 +4205,14 @@ msgstr ""
|
||||
msgid "names of filters"
|
||||
msgstr "süzgeçlerin adları"
|
||||
|
||||
#, fuzzy
|
||||
#| msgid "names of 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"
|
||||
msgstr "süzgeçlerin adları"
|
||||
msgstr "etkinleştirilmiş süzgeçlerin adları"
|
||||
|
||||
msgid "hook types"
|
||||
msgstr ""
|
||||
msgstr "kanca türleri"
|
||||
|
||||
msgid ""
|
||||
"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
|
||||
#, c-format
|
||||
msgid "WeeChat %s, compiled on %s %s\n"
|
||||
msgstr ""
|
||||
msgstr "WeeChat %s, derlenme: %s %s\n"
|
||||
|
||||
#, fuzzy
|
||||
#| msgid "(old options?)"
|
||||
msgid "Build options:\n"
|
||||
msgstr "(eski seçenekler?)"
|
||||
msgstr "Yapı seçenekleri:\n"
|
||||
|
||||
msgid "Windows tree:"
|
||||
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ı)"
|
||||
|
||||
msgid "not initialized"
|
||||
msgstr ""
|
||||
msgstr "ilklendirilmedi"
|
||||
|
||||
#, fuzzy
|
||||
#| msgid "no variable"
|
||||
msgid "not available"
|
||||
msgstr "değişken yok"
|
||||
msgstr "kullanılamıyor"
|
||||
|
||||
msgid "TEMPORARY, deleted on exit"
|
||||
msgstr "GEÇİCİ, çıkışta silinir"
|
||||
@@ -6143,13 +6146,13 @@ msgid "Constants"
|
||||
msgstr "Sabitler"
|
||||
|
||||
msgid "Rank"
|
||||
msgstr ""
|
||||
msgstr "Derece"
|
||||
|
||||
msgid "Priority"
|
||||
msgstr ""
|
||||
msgstr "Öncelik"
|
||||
|
||||
msgid "File"
|
||||
msgstr ""
|
||||
msgstr "Dosya"
|
||||
|
||||
#, fuzzy
|
||||
#| 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 "
|
||||
"veriyi DEVRE DIŞI bırakacaktır!)"
|
||||
|
||||
#, fuzzy
|
||||
#| 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 ""
|
||||
"To recover your secured data, you can use /secure decrypt (see /help secure)"
|
||||
@@ -6368,10 +6369,9 @@ msgid ""
|
||||
"version is too old?)"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%sError encrypting data \"%s\" (%d)"
|
||||
#, c-format
|
||||
msgid "%sFailed to encrypt data \"%s\" (%d)"
|
||||
msgstr "%s\"%s\" verisi şifrelenirken hata (%d)"
|
||||
msgstr "%s\"%s\" verisi şifrelenemedi (%d)"
|
||||
|
||||
msgid ""
|
||||
"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 ""
|
||||
"%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):"
|
||||
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
|
||||
#| msgid "%sUnable to set resource limit \"%s\" to %s: error %d %s"
|
||||
#, c-format
|
||||
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
|
||||
#| msgid "%s: error: dictionary \"%s\" is not available on your system"
|
||||
#, c-format
|
||||
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):"
|
||||
msgstr "Bellek kullanımı (yardım için bkz. \"man mallinfo\"):"
|
||||
msgstr "Özkaynak kullanımı (yardım için bkz. \"man getrusage\"):"
|
||||
|
||||
#, c-format
|
||||
msgid "%sError upgrading WeeChat with file \"%s\":"
|
||||
@@ -6550,95 +6544,84 @@ msgid "Upgrade done (%.02fs)"
|
||||
msgstr "Yükseltme bitti (%.02fs)"
|
||||
|
||||
msgid "invalid URL"
|
||||
msgstr ""
|
||||
msgstr "geçersiz URL"
|
||||
|
||||
msgid "not enough memory"
|
||||
msgstr "yetersiz bellek"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%sFilter \"%s\" not found"
|
||||
#, c-format
|
||||
msgid "file \"%s\" not found"
|
||||
msgstr "%s\"%s\" süzgeci bulunamadı"
|
||||
msgstr "\"%s\" dosyası bulunamadı"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%sCannot create file \"%s\""
|
||||
#, c-format
|
||||
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"
|
||||
msgstr "çatal hatası"
|
||||
msgstr "aktarım hatası"
|
||||
|
||||
#, c-format
|
||||
msgid "curl error %d (%s) (URL: \"%s\")\n"
|
||||
msgstr "curl hatası %d (%s) (URL: \"%s\")\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "curl error %d (%s) (URL: \"%s\")\n"
|
||||
#, c-format
|
||||
msgid "transfer stopped (URL: \"%s\")\n"
|
||||
msgstr "curl hatası %d (%s) (URL: \"%s\")\n"
|
||||
msgstr "aktarım durduruldu (URL: \"%s\")\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "End of command '%s', timeout reached (%.1fs)"
|
||||
#, c-format
|
||||
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
|
||||
msgid "%sAnother command \"%s\" already exists for plugin \"%s\""
|
||||
msgstr "%sŞu eklenti için başka bir komut (\"%s\") halihazırda var: \"%s\""
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%sUnknown command \"%s\" (type /help for help)"
|
||||
#, c-format
|
||||
msgid ""
|
||||
"%sUnknown command \"%s\" (commands are case-sensitive, type /help for help), "
|
||||
"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
|
||||
#| msgid "%sUnknown command \"%s\" (type /help for help)"
|
||||
#, c-format
|
||||
msgid ""
|
||||
"%sUnknown command \"%s\" (type /help for help), commands with similar name: "
|
||||
"%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
|
||||
msgid "%sBad file descriptor (%d) used in hook_fd"
|
||||
msgstr "%sHatalı dosya açıklayıcısı (%d) hook_fd içinde kullanılmış"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "End of command '%s', timeout reached (%.1fs)"
|
||||
#, c-format
|
||||
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
|
||||
msgid "System clock skew detected (%+ld seconds), reinitializing all timers"
|
||||
msgstr ""
|
||||
"Sistem saati hatalı (%+ld saniye), tüm zamanlayıcılar yeniden başlatılıyor"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "curl error %d (%s) (URL: \"%s\")\n"
|
||||
#, c-format
|
||||
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
|
||||
#| msgid "End of command '%s', timeout reached (%.1fs)"
|
||||
#, c-format
|
||||
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
|
||||
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
|
||||
#| msgid "End of command '%s', timeout reached (%.1fs)"
|
||||
#, c-format
|
||||
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)."
|
||||
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 ""
|
||||
"Welcome to WeeChat!\n"
|
||||
@@ -6737,7 +6720,7 @@ msgid "Nick colors:"
|
||||
msgstr "Takma ad renkleri:"
|
||||
|
||||
msgid "Syntax highlighting colors in evaluated strings:"
|
||||
msgstr ""
|
||||
msgstr "Değerlendirilen dizilerdeki sözdizim vurgulama renkleri:"
|
||||
|
||||
msgid "Color aliases:"
|
||||
msgstr "Renk armaları:"
|
||||
@@ -6781,35 +6764,30 @@ msgstr "çubuk ögesinin içeriği (değerlendirilir, bkz. /help eval)"
|
||||
#, c-format
|
||||
msgid "debug: long callback: bar: %s, item: %s, plugin: %s, time elapsed: %s"
|
||||
msgstr ""
|
||||
"hata ayıkla: uzun geri çağrı: çubuk: %s, öge: %s, eklenti: %s, geçen süre: %s"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%sPaste %d line? [ctrl-Y] Yes [ctrl-N] No"
|
||||
#| msgid_plural "%sPaste %d lines? [ctrl-Y] Yes [ctrl-N] No"
|
||||
#, c-format
|
||||
msgid "%sPaste %d line? [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[1] "%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"
|
||||
|
||||
#. TRANSLATORS: search in "local" history
|
||||
msgid "local"
|
||||
msgstr ""
|
||||
msgstr "yerel"
|
||||
|
||||
#. TRANSLATORS: search in "global" history
|
||||
msgid "global"
|
||||
msgstr ""
|
||||
msgstr "global"
|
||||
|
||||
#, fuzzy
|
||||
#| msgid "Search"
|
||||
msgid "Search lines"
|
||||
msgstr "Arama"
|
||||
msgstr "Satırlar ara"
|
||||
|
||||
#, fuzzy
|
||||
#| msgid "default command:"
|
||||
msgid "Search command"
|
||||
msgstr "öntanımlı komut:"
|
||||
msgstr "Arama komutu"
|
||||
|
||||
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
|
||||
msgid "%s-MORE(%d)-"
|
||||
@@ -6968,10 +6946,9 @@ msgstr ""
|
||||
msgid "New key binding (context \"%s\"): %s%s => %s%s"
|
||||
msgstr "Yeni düğme bağıntısı (bağlam: \"%s\"): %s%s => %s%s"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%sUnable to bind key \"%s\""
|
||||
#, c-format
|
||||
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
|
||||
msgid ""
|
||||
@@ -6988,6 +6965,8 @@ msgid ""
|
||||
"%sWarning: key \"%s\" seems either a raw code or invalid, it may not work "
|
||||
"(see /help key)"
|
||||
msgstr ""
|
||||
"%sUyarı: \"%s\" düğmesi ya bir ham kod ya da geçersiz, çalışmayabilir (bkz. /"
|
||||
"help key)"
|
||||
|
||||
#, c-format
|
||||
msgid "Key \"%s\" unbound (context: \"%s\")"
|
||||
@@ -7008,16 +6987,14 @@ msgstr "hsignal gönderiliyor: \"%s\""
|
||||
msgid "Executing command: \"%s\" on buffer \"%s\""
|
||||
msgstr "Komut yürütülüyor: \"%s\", \"%s\" arabelleğinde"
|
||||
|
||||
#, fuzzy
|
||||
#| msgid "list of key bindings"
|
||||
msgid "no key binding"
|
||||
msgstr "düğme bağıntılarının listesi"
|
||||
msgstr "düğme bağıntısı yok"
|
||||
|
||||
msgid "debug:"
|
||||
msgstr ""
|
||||
msgstr "hata ayıkla:"
|
||||
|
||||
msgid "mouse"
|
||||
msgstr ""
|
||||
msgstr "fare"
|
||||
|
||||
#, c-format
|
||||
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\""
|
||||
msgstr "%s%s: \"%s\" => \"%s\" arması oluşturulurken hata"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "Alias \"%s\" => \"%s\" created"
|
||||
#, c-format
|
||||
msgid "Alias updated: \"%s\" => \"%s\""
|
||||
msgstr "\"%s\" => \"%s\" arması oluşturuldu"
|
||||
msgstr "Arma güncellendi: \"%s\" => \"%s\""
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "Alias \"%s\" => \"%s\" created"
|
||||
#, c-format
|
||||
msgid "Alias created: \"%s\" => \"%s\""
|
||||
msgstr "\"%s\" => \"%s\" arması oluşturuldu"
|
||||
msgstr "Arma oluşturuldu: \"%s\" => \"%s\""
|
||||
|
||||
#, c-format
|
||||
msgid "Aliases with \"%s\":"
|
||||
@@ -7082,9 +7057,9 @@ msgid ""
|
||||
"addcompletion|addreplacecompletion <completion> <name> [<command>[;"
|
||||
"<command>...]] || del <name>|<mask>... || rename <name> <new_name> || missing"
|
||||
msgstr ""
|
||||
"list [<ad>] || add|addreplace <ad> [<komut>[;<komut>...]] || "
|
||||
"addcompletion|addreplacecompletion <tamamlama> <ad> [<komut>[;"
|
||||
"<komut>...]] || del <ad>|<maske>... || rename <ad> <yeni_ad> || missing"
|
||||
"list [<ad>] || add|addreplace <ad> [<komut>[;<komut>...]] || addcompletion|"
|
||||
"addreplacecompletion <tamamlama> <ad> [<komut>[;<komut>...]] || del <ad>|"
|
||||
"<maske>... || rename <ad> <yeni_ad> || missing"
|
||||
|
||||
msgid "raw[list]: list aliases (without argument, this list is displayed)"
|
||||
msgstr ""
|
||||
@@ -7305,16 +7280,12 @@ msgid ""
|
||||
" - ${number_displayed}: \"1\" if the number is displayed, otherwise \"0\""
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
#| msgid ""
|
||||
#| "string displayed to indent channel and private buffers (note: content is "
|
||||
#| "evaluated, see /help buflist)"
|
||||
msgid ""
|
||||
" - ${indent}: indentation for name (channel, private and list buffers are "
|
||||
"indented) (evaluation of option buflist.format.indent)"
|
||||
msgstr ""
|
||||
"kanal ve özel arabellekleri girintilendirmek için görüntülenen dizi (not: "
|
||||
"içerik değerlendirilir, bkz. /help buflist)"
|
||||
" - ${indent}: Ad için girintileme (kanal, özel ve liste arabellekleri "
|
||||
"girintilenir) (buflist.format.indent seçeneğinin değerlendirmesi)"
|
||||
|
||||
msgid ""
|
||||
" - ${format_nick_prefix}: colored nick prefix for a channel (evaluation "
|
||||
@@ -12649,8 +12620,8 @@ msgstr "sunucu adı"
|
||||
msgid "get nick from IRC host"
|
||||
msgstr "IRC makinesinden takma adı al"
|
||||
|
||||
msgid "IRC host (like `:nick!name@server.com`)"
|
||||
msgstr "IRC makinesi (örneğin: `:nick!name@server.com`)"
|
||||
msgid "IRC host (like `:nick!name@server`)"
|
||||
msgstr "IRC makinesi (örneğin: `:nick!name@server`)"
|
||||
|
||||
msgid ""
|
||||
"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
|
||||
msgid ""
|
||||
"%d channels (total: %d) | Filter: %s | Sort: %s | Key(input): ctrl+j=join "
|
||||
"channel, ($)=refresh, (q)=close buffer"
|
||||
"%d channels (total: %d) | Filter: %s | Sort: %s | Keys: ctrl+j=join channel "
|
||||
"| Input: $=refresh, s:x,y=sort, words=filter, *=reset filter, q=close buffer"
|
||||
msgstr ""
|
||||
|
||||
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 "
|
||||
"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 "
|
||||
"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 "
|
||||
"should first set the compression type via option "
|
||||
"logger.file.rotation_compression_type"
|
||||
@@ -16072,13 +16043,21 @@ msgstr ""
|
||||
"şifreye gerek yok anlamına gelir, relay.network.allow_empty_password "
|
||||
"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 ""
|
||||
"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\")"
|
||||
"\"api\" and \"weechat\" protocols, 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\")"
|
||||
msgstr ""
|
||||
"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, "
|
||||
@@ -16088,11 +16067,17 @@ msgstr ""
|
||||
"adlarda \"*\" jokerine izin verilir (örnekler: \"*\", \"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 ""
|
||||
"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"
|
||||
"number of iterations asked to the client in \"api\" and \"weechat\" "
|
||||
"protocols 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"
|
||||
msgstr ""
|
||||
"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 "
|
||||
@@ -16151,6 +16136,11 @@ msgstr ""
|
||||
"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)"
|
||||
|
||||
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
|
||||
#| msgid ""
|
||||
#| "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
|
||||
msgid ""
|
||||
"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)"
|
||||
msgstr ""
|
||||
"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)"
|
||||
|
||||
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"
|
||||
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
|
||||
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"
|
||||
@@ -16469,9 +16464,8 @@ msgstr ""
|
||||
msgid "%s%s: not enough memory for listening on new port"
|
||||
msgstr "%s%s: yeni kapıda dinleme için yetersiz bellek"
|
||||
|
||||
msgid "Relay WeeChat data to remote application (irc/weechat protocols)"
|
||||
msgstr ""
|
||||
"WeeChat verisini uzak konum uygulamalarına ilet (irc/weechat protokolleri)"
|
||||
msgid "Relay WeeChat data to remote applications"
|
||||
msgstr "WeeChat verisini uzak konum uygulamalarına ilet"
|
||||
|
||||
msgid "connecting"
|
||||
msgstr "bağlanıyor"
|
||||
@@ -16712,11 +16706,16 @@ msgstr "(hiçbir şey)"
|
||||
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"
|
||||
|
||||
#, 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 ""
|
||||
"%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: "
|
||||
"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"
|
||||
msgstr ""
|
||||
"%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"
|
||||
msgstr ""
|
||||
"enable || list [-o|-ol|-i|-il] || search <metin> || show <betik> || load|"
|
||||
"unload|reload <betik>... || autoload|noautoload|toggleautoload <betik>... "
|
||||
"|| install|remove|installremove|hold [-q] <betik>... || upgrade || update "
|
||||
"|| -up|-down [<sayı>] || -go <satır>|end"
|
||||
"unload|reload <betik>... || autoload|noautoload|toggleautoload <betik>... || "
|
||||
"install|remove|installremove|hold [-q] <betik>... || upgrade || update || "
|
||||
"-up|-down [<sayı>] || -go <satır>|end"
|
||||
|
||||
#, fuzzy
|
||||
#| msgid ""
|
||||
@@ -18138,8 +18137,8 @@ msgid ""
|
||||
"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"
|
||||
msgstr ""
|
||||
"\"typing\" çubuk ögesinde takma adlardan önce görüntülenecek metin; ayarlıysa "
|
||||
"öntanımlı olarak görüntülenen \"Yazıyar: \" metni yerine kullanılır"
|
||||
"\"typing\" çubuk ögesinde takma adlardan önce görüntülenecek metin; "
|
||||
"ayarlıysa öntanımlı olarak görüntülenen \"Yazıyar: \" metni yerine kullanılır"
|
||||
|
||||
msgid "Typing status of users"
|
||||
msgstr "Kullanıcıların metin yazma durumu"
|
||||
|
||||
+38
-19
@@ -23,7 +23,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: WeeChat\n"
|
||||
"Report-Msgid-Bugs-To: flashcode@flashtux.org\n"
|
||||
"POT-Creation-Date: 2026-03-21 17:24+0100\n"
|
||||
"POT-Creation-Date: 2026-05-30 14:00+0200\n"
|
||||
"PO-Revision-Date: 2014-08-16 10:27+0200\n"
|
||||
"Last-Translator: Sébastien Helleu <flashcode@flashtux.org>\n"
|
||||
"Language-Team: weechat-dev <weechat-dev@nongnu.org>\n"
|
||||
@@ -148,7 +148,7 @@ msgstr ""
|
||||
#, c-format
|
||||
msgid ""
|
||||
"WeeChat %s Copyright %s, compiled on %s %s\n"
|
||||
"Developed by Sébastien Helleu <flashcode@flashtux.org> - %s"
|
||||
"Developed by %s <%s> - %s"
|
||||
msgstr ""
|
||||
|
||||
msgid "Usage:"
|
||||
@@ -1072,6 +1072,16 @@ msgid ""
|
||||
"message: message for away (if no message is given, away status is removed)"
|
||||
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"
|
||||
msgstr ""
|
||||
|
||||
@@ -10267,7 +10277,7 @@ msgstr ""
|
||||
msgid "get nick from IRC host"
|
||||
msgstr ""
|
||||
|
||||
msgid "IRC host (like `:nick!name@server.com`)"
|
||||
msgid "IRC host (like `:nick!name@server`)"
|
||||
msgstr ""
|
||||
|
||||
msgid ""
|
||||
@@ -10471,8 +10481,8 @@ msgstr ""
|
||||
|
||||
#, c-format
|
||||
msgid ""
|
||||
"%d channels (total: %d) | Filter: %s | Sort: %s | Key(input): ctrl+j=join "
|
||||
"channel, ($)=refresh, (q)=close buffer"
|
||||
"%d channels (total: %d) | Filter: %s | Sort: %s | Keys: ctrl+j=join channel "
|
||||
"| Input: $=refresh, s:x,y=sort, words=filter, *=reset filter, q=close buffer"
|
||||
msgstr ""
|
||||
|
||||
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 "
|
||||
"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 "
|
||||
"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 "
|
||||
"should first set the compression type via option "
|
||||
"logger.file.rotation_compression_type"
|
||||
@@ -13167,18 +13177,18 @@ msgstr ""
|
||||
|
||||
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\")"
|
||||
"\"api\" and \"weechat\" protocols, 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\")"
|
||||
msgstr ""
|
||||
|
||||
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"
|
||||
"number of iterations asked to the client in \"api\" and \"weechat\" "
|
||||
"protocols 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"
|
||||
msgstr ""
|
||||
|
||||
msgid ""
|
||||
@@ -13208,6 +13218,11 @@ msgid ""
|
||||
"1 are recommended values)"
|
||||
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 ""
|
||||
"POSIX extended regular expression with origins allowed in websockets (case-"
|
||||
"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
|
||||
msgid ""
|
||||
"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)"
|
||||
msgstr ""
|
||||
|
||||
@@ -13418,6 +13433,10 @@ msgstr ""
|
||||
msgid "%s%s: cannot \"bind\" on port %d (%s): error %d %s"
|
||||
msgstr ""
|
||||
|
||||
#, c-format
|
||||
msgid "%s%s: warning: failed to set permissions on path %s (%s): error %d %s"
|
||||
msgstr ""
|
||||
|
||||
#, c-format
|
||||
msgid "%s%s: cannot \"listen\" on path %s (%s): error %d %s"
|
||||
msgstr ""
|
||||
@@ -13454,7 +13473,7 @@ msgstr ""
|
||||
msgid "%s%s: not enough memory for listening on new port"
|
||||
msgstr ""
|
||||
|
||||
msgid "Relay WeeChat data to remote application (irc/weechat protocols)"
|
||||
msgid "Relay WeeChat data to remote applications"
|
||||
msgstr ""
|
||||
|
||||
msgid "connecting"
|
||||
@@ -13679,9 +13698,9 @@ msgstr ""
|
||||
|
||||
#, c-format
|
||||
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: "
|
||||
"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"
|
||||
msgstr ""
|
||||
|
||||
|
||||
@@ -178,12 +178,14 @@ args_display_copyright (void)
|
||||
stdout,
|
||||
/* TRANSLATORS: "%s %s" after "compiled on" is date and time */
|
||||
_("WeeChat %s Copyright %s, compiled on %s %s\n"
|
||||
"Developed by Sébastien Helleu <flashcode@flashtux.org> "
|
||||
"Developed by %s <%s> "
|
||||
"- %s"),
|
||||
version_get_version_with_git (),
|
||||
WEECHAT_COPYRIGHT_DATE,
|
||||
version_get_compilation_date (),
|
||||
version_get_compilation_time (),
|
||||
WEECHAT_AUTHOR_NAME,
|
||||
WEECHAT_AUTHOR_EMAIL,
|
||||
WEECHAT_WEBSITE);
|
||||
string_fprintf (stdout, "\n");
|
||||
}
|
||||
|
||||
+120
-179
@@ -240,8 +240,7 @@ command_bar_list (int full)
|
||||
COMMAND_CALLBACK(bar)
|
||||
{
|
||||
int i, type, position, number, update;
|
||||
long value;
|
||||
char *error, *str_type, *pos_condition, *name;
|
||||
char *str_type, *pos_condition, *name;
|
||||
struct t_gui_bar *ptr_bar, *ptr_bar2, *ptr_next_bar;
|
||||
struct t_gui_bar_item *ptr_item;
|
||||
struct t_gui_window *ptr_window;
|
||||
@@ -331,10 +330,7 @@ COMMAND_CALLBACK(bar)
|
||||
free (str_type);
|
||||
return WEECHAT_RC_ERROR;
|
||||
}
|
||||
error = NULL;
|
||||
value = strtol (argv[5], &error, 10);
|
||||
(void) value;
|
||||
if (!error || error[0])
|
||||
if (!util_parse_int (argv[5], 10, NULL))
|
||||
{
|
||||
gui_chat_printf (NULL,
|
||||
_("%sInvalid size \"%s\" for bar \"%s\""),
|
||||
@@ -572,9 +568,7 @@ COMMAND_CALLBACK(bar)
|
||||
else
|
||||
{
|
||||
ptr_window = NULL;
|
||||
error = NULL;
|
||||
number = (int)strtol (argv[3], &error, 10);
|
||||
if (error && !error[0])
|
||||
if (util_parse_int (argv[3], 10, &number))
|
||||
ptr_window = gui_window_search_by_number (number);
|
||||
}
|
||||
if (!ptr_window)
|
||||
@@ -609,7 +603,7 @@ COMMAND_CALLBACK(bar)
|
||||
*/
|
||||
|
||||
int
|
||||
command_buffer_check_number (long number)
|
||||
command_buffer_check_number (int number)
|
||||
{
|
||||
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 *weechat_buffer;
|
||||
struct t_arraylist *buffers_to_close;
|
||||
long number, number1, number2, numbers[3];
|
||||
long long number_id;
|
||||
char *error, *value, *pos, *str_number1, *pos_number2;
|
||||
int i, count, prev_number, clear_number, list_size;
|
||||
char *value, *pos, *str_number1, *pos_number2;
|
||||
int i, count, prev_number, clear_by_number, list_size;
|
||||
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 */
|
||||
(void) pointer;
|
||||
@@ -752,7 +746,9 @@ COMMAND_CALLBACK(buffer)
|
||||
if (argc > 2)
|
||||
{
|
||||
if (string_strcmp (argv[2], "-all") == 0)
|
||||
{
|
||||
gui_buffer_clear_all ();
|
||||
}
|
||||
else
|
||||
{
|
||||
for (i = 2; i < argc; i++)
|
||||
@@ -760,18 +756,19 @@ COMMAND_CALLBACK(buffer)
|
||||
if (string_strcmp (argv[i], "-merged") == 0)
|
||||
{
|
||||
ptr_buffer = buffer;
|
||||
clear_number = 1;
|
||||
clear_by_number = 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
ptr_buffer = gui_buffer_search_by_id_number_name (argv[i]);
|
||||
error = NULL;
|
||||
(void) strtol (argv[i], &error, 10);
|
||||
clear_number = (error && !error[0]);
|
||||
clear_by_number = (util_parse_int (argv[i], 10, &number)
|
||||
&& ptr_buffer
|
||||
&& (ptr_buffer->number == number)) ?
|
||||
1 : 0;
|
||||
}
|
||||
if (ptr_buffer)
|
||||
{
|
||||
if (clear_number)
|
||||
if (clear_by_number)
|
||||
{
|
||||
for (ptr_buffer2 = gui_buffers; ptr_buffer2;
|
||||
ptr_buffer2 = ptr_buffer2->next_buffer)
|
||||
@@ -817,20 +814,21 @@ COMMAND_CALLBACK(buffer)
|
||||
}
|
||||
else
|
||||
{
|
||||
error = NULL;
|
||||
number = strtol (((argv[2][0] == '+') || (argv[2][0] == '-')) ?
|
||||
argv[2] + 1 : argv[2],
|
||||
&error, 10);
|
||||
if (error && !error[0]
|
||||
&& (number >= INT_MIN) && (number <= INT_MAX))
|
||||
pos = ((argv[2][0] == '+') || (argv[2][0] == '-')) ?
|
||||
argv[2] + 1 : argv[2];
|
||||
if (util_parse_int (pos, 10, &number)
|
||||
&& (number >= 1)
|
||||
&& (number <= GUI_BUFFER_NUMBER_MAX)
|
||||
&& ((argv[2][0] != '+') || (number <= INT_MAX - buffer->number))
|
||||
&& ((argv[2][0] != '-') || (buffer->number >= INT_MIN + number)))
|
||||
{
|
||||
if (argv[2][0] == '+')
|
||||
number = buffer->number + number;
|
||||
else if (argv[2][0] == '-')
|
||||
number = buffer->number - number;
|
||||
number = (int)number;
|
||||
if (command_buffer_check_number (number))
|
||||
gui_buffer_move_to_number (buffer, number);
|
||||
if (!command_buffer_check_number (number))
|
||||
return WEECHAT_RC_ERROR;
|
||||
gui_buffer_move_to_number (buffer, number);
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -940,7 +938,6 @@ COMMAND_CALLBACK(buffer)
|
||||
if (string_strcmp (argv[1], "merge") == 0)
|
||||
{
|
||||
COMMAND_MIN_ARGS(3, argv[1]);
|
||||
error = NULL;
|
||||
ptr_buffer = gui_buffer_search_by_id_number_name (argv[2]);
|
||||
if (!ptr_buffer)
|
||||
{
|
||||
@@ -967,9 +964,7 @@ COMMAND_CALLBACK(buffer)
|
||||
}
|
||||
else
|
||||
{
|
||||
error = NULL;
|
||||
number = strtol (argv[2], &error, 10);
|
||||
if (!error || error[0])
|
||||
if (!util_parse_int (argv[2], 10, &number))
|
||||
{
|
||||
/* invalid number */
|
||||
gui_chat_printf (NULL,
|
||||
@@ -978,11 +973,11 @@ COMMAND_CALLBACK(buffer)
|
||||
argv[2]);
|
||||
return WEECHAT_RC_ERROR;
|
||||
}
|
||||
if (!command_buffer_check_number ((int)number))
|
||||
if (!command_buffer_check_number (number))
|
||||
COMMAND_ERROR;
|
||||
}
|
||||
}
|
||||
gui_buffer_unmerge (buffer, (int)number);
|
||||
gui_buffer_unmerge (buffer, number);
|
||||
|
||||
return WEECHAT_RC_OK;
|
||||
}
|
||||
@@ -998,23 +993,26 @@ COMMAND_CALLBACK(buffer)
|
||||
{
|
||||
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)
|
||||
{
|
||||
error = NULL;
|
||||
(void) strtol (argv[i], &error, 10);
|
||||
if (error && !error[0])
|
||||
/* hide by number */
|
||||
for (ptr_buffer2 = gui_buffers; ptr_buffer2;
|
||||
ptr_buffer2 = ptr_buffer2->next_buffer)
|
||||
{
|
||||
for (ptr_buffer2 = gui_buffers; ptr_buffer2;
|
||||
ptr_buffer2 = ptr_buffer2->next_buffer)
|
||||
if (ptr_buffer2->number == ptr_buffer->number)
|
||||
{
|
||||
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);
|
||||
}
|
||||
}
|
||||
@@ -1037,23 +1035,25 @@ COMMAND_CALLBACK(buffer)
|
||||
{
|
||||
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)
|
||||
{
|
||||
error = NULL;
|
||||
(void) strtol (argv[i], &error, 10);
|
||||
if (error && !error[0])
|
||||
/* unhide by number */
|
||||
for (ptr_buffer2 = gui_buffers; ptr_buffer2;
|
||||
ptr_buffer2 = ptr_buffer2->next_buffer)
|
||||
{
|
||||
for (ptr_buffer2 = gui_buffers; ptr_buffer2;
|
||||
ptr_buffer2 = ptr_buffer2->next_buffer)
|
||||
if (ptr_buffer2->number == ptr_buffer->number)
|
||||
{
|
||||
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);
|
||||
}
|
||||
}
|
||||
@@ -1098,9 +1098,7 @@ COMMAND_CALLBACK(buffer)
|
||||
{
|
||||
if (argc >= i + 3)
|
||||
{
|
||||
error = NULL;
|
||||
numbers[i] = strtol (argv[i + 2], &error, 10);
|
||||
if (!error || error[0])
|
||||
if (!util_parse_int (argv[i + 2], 10, &numbers[i]))
|
||||
{
|
||||
/* invalid number */
|
||||
gui_chat_printf (NULL,
|
||||
@@ -1109,7 +1107,7 @@ COMMAND_CALLBACK(buffer)
|
||||
argv[i + 2]);
|
||||
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;
|
||||
}
|
||||
else
|
||||
@@ -1120,8 +1118,8 @@ COMMAND_CALLBACK(buffer)
|
||||
* renumber the buffers; if we are renumbering all buffers (no numbers
|
||||
* given), start at number 1
|
||||
*/
|
||||
gui_buffer_renumber ((int)numbers[0], (int)numbers[1],
|
||||
(argc == 2) ? 1 : (int)numbers[2]);
|
||||
gui_buffer_renumber (numbers[0], numbers[1],
|
||||
(argc == 2) ? 1 : numbers[2]);
|
||||
|
||||
return WEECHAT_RC_OK;
|
||||
}
|
||||
@@ -1159,15 +1157,11 @@ COMMAND_CALLBACK(buffer)
|
||||
}
|
||||
if (str_number1)
|
||||
{
|
||||
error = NULL;
|
||||
number1 = strtol (str_number1, &error, 10);
|
||||
if (error && !error[0])
|
||||
if (util_parse_int (str_number1, 10, &number1))
|
||||
{
|
||||
if (pos_number2)
|
||||
{
|
||||
error = NULL;
|
||||
number2 = strtol (pos_number2, &error, 10);
|
||||
if (!error || error[0])
|
||||
if (!util_parse_int (pos_number2, 10, &number2))
|
||||
{
|
||||
free (str_number1);
|
||||
COMMAND_ERROR;
|
||||
@@ -1189,10 +1183,7 @@ COMMAND_CALLBACK(buffer)
|
||||
while (ptr_buffer && (ptr_buffer->number <= number2))
|
||||
{
|
||||
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;
|
||||
}
|
||||
}
|
||||
@@ -1201,10 +1192,7 @@ COMMAND_CALLBACK(buffer)
|
||||
{
|
||||
ptr_buffer = gui_buffer_search_by_full_name (argv[i]);
|
||||
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)
|
||||
arraylist_add (buffers_to_close, ptr_buffer);
|
||||
}
|
||||
@@ -1470,9 +1458,7 @@ COMMAND_CALLBACK(buffer)
|
||||
}
|
||||
else
|
||||
{
|
||||
error = NULL;
|
||||
number = strtol (argv[1] + 1, &error, 10);
|
||||
if (error && !error[0] && (number > 0))
|
||||
if (util_parse_int (argv[1] + 1, 10, &number) && (number > 0))
|
||||
{
|
||||
count = 0;
|
||||
prev_number = gui_current_window->buffer->number;
|
||||
@@ -1531,9 +1517,7 @@ COMMAND_CALLBACK(buffer)
|
||||
}
|
||||
else
|
||||
{
|
||||
error = NULL;
|
||||
number = strtol (argv[1] + 1, &error, 10);
|
||||
if (error && !error[0] && (number > 0))
|
||||
if (util_parse_int (argv[1] + 1, 10, &number) && (number > 0))
|
||||
{
|
||||
count = 0;
|
||||
prev_number = gui_current_window->buffer->number;
|
||||
@@ -1586,9 +1570,9 @@ COMMAND_CALLBACK(buffer)
|
||||
/* smart jump (jump to previous buffer for current number) */
|
||||
if (argv[1][0] == '*')
|
||||
{
|
||||
error = NULL;
|
||||
number = strtol (argv[1] + 1, &error, 10);
|
||||
if (error && !error[0])
|
||||
if (!argv[1][1])
|
||||
COMMAND_ERROR;
|
||||
if (util_parse_int (argv[1] + 1, 10, &number))
|
||||
{
|
||||
/* buffer is currently displayed ? then jump to previous buffer */
|
||||
if ((number == buffer->number)
|
||||
@@ -1619,9 +1603,7 @@ COMMAND_CALLBACK(buffer)
|
||||
}
|
||||
|
||||
/* jump to buffer by id, number or name */
|
||||
error = NULL;
|
||||
number_id = strtoll (argv[1], &error, 10);
|
||||
if (error && !error[0])
|
||||
if (util_parse_longlong (argv[1], 10, &number_id))
|
||||
{
|
||||
ptr_buffer = gui_buffer_search_by_id (number_id);
|
||||
if (ptr_buffer)
|
||||
@@ -1652,11 +1634,10 @@ COMMAND_CALLBACK(buffer)
|
||||
|
||||
COMMAND_CALLBACK(color)
|
||||
{
|
||||
char *str_alias, *str_rgb, *pos, *error;
|
||||
char *str_alias, *str_rgb, *pos;
|
||||
char str_color[1024], str_command[2048];
|
||||
long number, limit;
|
||||
unsigned int rgb;
|
||||
int i;
|
||||
int i, number, limit;
|
||||
struct t_gui_color_palette *color_palette;
|
||||
|
||||
/* make C compiler happy */
|
||||
@@ -1688,9 +1669,7 @@ COMMAND_CALLBACK(color)
|
||||
COMMAND_MIN_ARGS(4, argv[1]);
|
||||
|
||||
/* check color number */
|
||||
error = NULL;
|
||||
number = strtol (argv[2], &error, 10);
|
||||
if (error && !error[0])
|
||||
if (util_parse_int (argv[2], 10, &number))
|
||||
{
|
||||
if ((number < 0) || (number > gui_color_get_term_colors ()))
|
||||
number = -1;
|
||||
@@ -1735,7 +1714,7 @@ COMMAND_CALLBACK(color)
|
||||
/* add color alias */
|
||||
snprintf (str_command, sizeof (str_command),
|
||||
"/set weechat.palette.%d \"%s\"",
|
||||
(int)number,
|
||||
number,
|
||||
(str_color[0]) ? str_color + 1 : "");
|
||||
(void) input_exec_command (buffer, 1, NULL, str_command, NULL);
|
||||
|
||||
@@ -1748,9 +1727,7 @@ COMMAND_CALLBACK(color)
|
||||
COMMAND_MIN_ARGS(3, argv[1]);
|
||||
|
||||
/* check color number */
|
||||
error = NULL;
|
||||
number = strtol (argv[2], &error, 10);
|
||||
if (error && !error[0])
|
||||
if (util_parse_int (argv[2], 10, &number))
|
||||
{
|
||||
if ((number < 0) || (number > gui_color_get_term_colors ()))
|
||||
number = -1;
|
||||
@@ -1770,7 +1747,7 @@ COMMAND_CALLBACK(color)
|
||||
}
|
||||
|
||||
/* search color */
|
||||
color_palette = gui_color_palette_get ((int)number);
|
||||
color_palette = gui_color_palette_get (number);
|
||||
if (!color_palette)
|
||||
{
|
||||
gui_chat_printf (NULL,
|
||||
@@ -1783,7 +1760,7 @@ COMMAND_CALLBACK(color)
|
||||
/* delete color alias */
|
||||
snprintf (str_command, sizeof (str_command),
|
||||
"/unset weechat.palette.%d",
|
||||
(int)number);
|
||||
number);
|
||||
(void) input_exec_command (buffer, 1, NULL, str_command, NULL);
|
||||
|
||||
return WEECHAT_RC_OK;
|
||||
@@ -1807,12 +1784,10 @@ COMMAND_CALLBACK(color)
|
||||
if (string_strcmp (argv[1], "term2rgb") == 0)
|
||||
{
|
||||
COMMAND_MIN_ARGS(3, argv[1]);
|
||||
error = NULL;
|
||||
number = strtol (argv[2], &error, 10);
|
||||
if (!error || error[0] || (number < 0) || (number > 255))
|
||||
if (!util_parse_int (argv[2], 10, &number) || (number < 0) || (number > 255))
|
||||
COMMAND_ERROR;
|
||||
gui_chat_printf (NULL,
|
||||
"%ld -> #%06x",
|
||||
"%d -> #%06x",
|
||||
number,
|
||||
gui_color_convert_term_to_rgb (number));
|
||||
return WEECHAT_RC_OK;
|
||||
@@ -1829,9 +1804,7 @@ COMMAND_CALLBACK(color)
|
||||
limit = 256;
|
||||
if (argc > 3)
|
||||
{
|
||||
error = NULL;
|
||||
limit = strtol (argv[3], &error, 10);
|
||||
if (!error || error[0] || (limit < 1) || (limit > 256))
|
||||
if (!util_parse_int (argv[3], 10, &limit) || (limit < 1) || (limit > 256))
|
||||
COMMAND_ERROR;
|
||||
}
|
||||
gui_chat_printf (NULL,
|
||||
@@ -1938,7 +1911,7 @@ COMMAND_CALLBACK(command)
|
||||
|
||||
COMMAND_CALLBACK(cursor)
|
||||
{
|
||||
char *pos, *str_x, *error;
|
||||
char *pos, *str_x;
|
||||
int x, y;
|
||||
|
||||
/* make C compiler happy */
|
||||
@@ -1966,18 +1939,12 @@ COMMAND_CALLBACK(cursor)
|
||||
pos++;
|
||||
if (str_x)
|
||||
{
|
||||
error = NULL;
|
||||
x = (int) strtol (str_x, &error, 10);
|
||||
if (error && !error[0])
|
||||
if (util_parse_int (str_x, 10, &x)
|
||||
&& util_parse_int (pos, 10, &y))
|
||||
{
|
||||
error = NULL;
|
||||
y = (int) strtol (pos, &error, 10);
|
||||
if (error && !error[0])
|
||||
{
|
||||
gui_cursor_move_xy (x, y);
|
||||
free (str_x);
|
||||
return WEECHAT_RC_OK;
|
||||
}
|
||||
gui_cursor_move_xy (x, y);
|
||||
free (str_x);
|
||||
return WEECHAT_RC_OK;
|
||||
}
|
||||
free (str_x);
|
||||
}
|
||||
@@ -3531,7 +3498,6 @@ COMMAND_CALLBACK(history)
|
||||
{
|
||||
struct t_gui_history *ptr_history;
|
||||
int n, n_total, n_user, displayed;
|
||||
char *error;
|
||||
|
||||
/* make C compiler happy */
|
||||
(void) pointer;
|
||||
@@ -3549,9 +3515,7 @@ COMMAND_CALLBACK(history)
|
||||
}
|
||||
else
|
||||
{
|
||||
error = NULL;
|
||||
n_user = (int)strtol (argv[1], &error, 10);
|
||||
if (!error || error[0] || (n_user < 0))
|
||||
if (!util_parse_int (argv[1], 10, &n_user) || (n_user < 0))
|
||||
COMMAND_ERROR;
|
||||
}
|
||||
}
|
||||
@@ -4872,11 +4836,8 @@ void
|
||||
command_mouse_timer (const char *delay)
|
||||
{
|
||||
long seconds;
|
||||
char *error;
|
||||
|
||||
error = NULL;
|
||||
seconds = strtol (delay, &error, 10);
|
||||
if (error && !error[0] && (seconds > 0))
|
||||
if (util_parse_long (delay, 10, &seconds) && (seconds > 0))
|
||||
{
|
||||
hook_timer (NULL, seconds * 1000, 0, 1,
|
||||
&command_mouse_timer_cb, NULL, NULL);
|
||||
@@ -5573,7 +5534,7 @@ COMMAND_CALLBACK(print)
|
||||
int i, y, escape, to_stdout, to_stderr, arg_new_buffer_name;
|
||||
int new_buffer_type_free, free_content, switch_to_buffer;
|
||||
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;
|
||||
long value;
|
||||
|
||||
@@ -5638,11 +5599,8 @@ COMMAND_CALLBACK(print)
|
||||
if (i + 1 >= argc)
|
||||
COMMAND_ERROR;
|
||||
i++;
|
||||
error = NULL;
|
||||
value = strtol (argv[i], &error, 10);
|
||||
if (!error || error[0])
|
||||
if (!util_parse_int (argv[i], 10, &y))
|
||||
COMMAND_ERROR;
|
||||
y = (int)value;
|
||||
}
|
||||
else if (string_strcmp (argv[i], "-date") == 0)
|
||||
{
|
||||
@@ -5651,9 +5609,7 @@ COMMAND_CALLBACK(print)
|
||||
i++;
|
||||
if ((argv[i][0] == '-') || (argv[i][0] == '+'))
|
||||
{
|
||||
error = NULL;
|
||||
value = strtol (argv[i] + 1, &error, 10);
|
||||
if (!error || error[0])
|
||||
if (!util_parse_long (argv[i] + 1, 10, &value))
|
||||
COMMAND_ERROR;
|
||||
gettimeofday (&tv_date, NULL);
|
||||
tv_date.tv_sec += (argv[i][0] == '+') ? value : value * -1;
|
||||
@@ -5877,9 +5833,8 @@ command_proxy_list (void)
|
||||
COMMAND_CALLBACK(proxy)
|
||||
{
|
||||
struct t_proxy *ptr_proxy, *ptr_next_proxy;
|
||||
char *error, *name;
|
||||
char *name;
|
||||
int type, i, update;
|
||||
long value;
|
||||
|
||||
/* make C compiler happy */
|
||||
(void) pointer;
|
||||
@@ -5925,10 +5880,7 @@ COMMAND_CALLBACK(proxy)
|
||||
argv[3], argv[2]);
|
||||
return WEECHAT_RC_ERROR;
|
||||
}
|
||||
error = NULL;
|
||||
value = strtol (argv[5], &error, 10);
|
||||
(void) value;
|
||||
if (error && !error[0])
|
||||
if (util_parse_int (argv[5], 10, NULL))
|
||||
{
|
||||
/* add proxy */
|
||||
if (proxy_new (argv[2], argv[3], "auto", argv[4], argv[5],
|
||||
@@ -6256,7 +6208,6 @@ COMMAND_CALLBACK(repeat)
|
||||
{
|
||||
int arg_count, count, i;
|
||||
unsigned long long interval;
|
||||
char *error;
|
||||
struct t_command_repeat *cmd_repeat;
|
||||
|
||||
/* make C compiler happy */
|
||||
@@ -6276,9 +6227,7 @@ COMMAND_CALLBACK(repeat)
|
||||
arg_count = 3;
|
||||
}
|
||||
|
||||
error = NULL;
|
||||
count = (int)strtol (argv[arg_count], &error, 10);
|
||||
if (!error || error[0] || (count < 1))
|
||||
if (!util_parse_int (argv[arg_count], 10, &count) || (count < 1))
|
||||
{
|
||||
/* invalid count */
|
||||
gui_chat_printf (NULL,
|
||||
@@ -7171,8 +7120,8 @@ COMMAND_CALLBACK(set)
|
||||
|
||||
COMMAND_CALLBACK(sys)
|
||||
{
|
||||
long value;
|
||||
char *error;
|
||||
long size;
|
||||
int num_processes;
|
||||
|
||||
/* make C compiler happy */
|
||||
(void) pointer;
|
||||
@@ -7202,15 +7151,13 @@ COMMAND_CALLBACK(sys)
|
||||
if (string_strcmp (argv[1], "malloc_trim") == 0)
|
||||
{
|
||||
#ifdef HAVE_MALLOC_TRIM
|
||||
error = NULL;
|
||||
value = 0;
|
||||
size = 0;
|
||||
if (argc > 2)
|
||||
{
|
||||
value = strtol (argv[2], &error, 10);
|
||||
if (!error || error[0] || (value < 0))
|
||||
if (!util_parse_long (argv[2], 10, &size) || (size < 0))
|
||||
COMMAND_ERROR;
|
||||
}
|
||||
malloc_trim ((size_t)value);
|
||||
malloc_trim ((size_t)size);
|
||||
return WEECHAT_RC_OK;
|
||||
#else
|
||||
gui_chat_printf (NULL,
|
||||
@@ -7225,13 +7172,10 @@ COMMAND_CALLBACK(sys)
|
||||
if (string_strcmp (argv[1], "waitpid") == 0)
|
||||
{
|
||||
COMMAND_MIN_ARGS(3, argv[1]);
|
||||
error = NULL;
|
||||
value = strtol (argv[2], &error, 10);
|
||||
if (!error || error[0])
|
||||
if (!util_parse_int (argv[2], 10, &num_processes) || (num_processes < 1))
|
||||
COMMAND_ERROR;
|
||||
sys_waitpid ((int)value);
|
||||
sys_waitpid (num_processes);
|
||||
return WEECHAT_RC_OK;
|
||||
|
||||
}
|
||||
COMMAND_ERROR;
|
||||
}
|
||||
@@ -7980,9 +7924,8 @@ COMMAND_CALLBACK(window)
|
||||
{
|
||||
struct t_gui_window *ptr_win;
|
||||
struct t_gui_window_tree *ptr_tree;
|
||||
char *error, *ptr_sizearg, sign;
|
||||
long number;
|
||||
int win_args;
|
||||
char *ptr_sizearg, sign;
|
||||
int number, win_args;
|
||||
|
||||
/* make C compiler happy */
|
||||
(void) pointer;
|
||||
@@ -8043,9 +7986,7 @@ COMMAND_CALLBACK(window)
|
||||
win_args = 2;
|
||||
if ((argc > 3) && (string_strcmp (argv[2], "-window") == 0))
|
||||
{
|
||||
error = NULL;
|
||||
number = strtol (argv[3], &error, 10);
|
||||
if (error && !error[0] && (number >= 1))
|
||||
if (util_parse_int (argv[3], 10, &number) && (number >= 1))
|
||||
{
|
||||
ptr_win = gui_window_search_by_number (number);
|
||||
if (!ptr_win)
|
||||
@@ -8164,9 +8105,7 @@ COMMAND_CALLBACK(window)
|
||||
{
|
||||
if (argc > win_args)
|
||||
{
|
||||
error = NULL;
|
||||
number = strtol (argv[win_args], &error, 10);
|
||||
if (error && !error[0]
|
||||
if (util_parse_int (argv[win_args], 10, &number)
|
||||
&& (number > 0) && (number < 100))
|
||||
{
|
||||
gui_window_split_horizontal (ptr_win, number);
|
||||
@@ -8175,7 +8114,9 @@ COMMAND_CALLBACK(window)
|
||||
COMMAND_ERROR;
|
||||
}
|
||||
else
|
||||
{
|
||||
gui_window_split_horizontal (ptr_win, 50);
|
||||
}
|
||||
return WEECHAT_RC_OK;
|
||||
}
|
||||
|
||||
@@ -8184,9 +8125,7 @@ COMMAND_CALLBACK(window)
|
||||
{
|
||||
if (argc > win_args)
|
||||
{
|
||||
error = NULL;
|
||||
number = strtol (argv[win_args], &error, 10);
|
||||
if (error && !error[0]
|
||||
if (util_parse_int (argv[win_args], 10, &number)
|
||||
&& (number > 0) && (number < 100))
|
||||
{
|
||||
gui_window_split_vertical (ptr_win, number);
|
||||
@@ -8195,7 +8134,9 @@ COMMAND_CALLBACK(window)
|
||||
COMMAND_ERROR;
|
||||
}
|
||||
else
|
||||
{
|
||||
gui_window_split_vertical (ptr_win, 50);
|
||||
}
|
||||
return WEECHAT_RC_OK;
|
||||
}
|
||||
|
||||
@@ -8220,9 +8161,7 @@ COMMAND_CALLBACK(window)
|
||||
sign = ptr_sizearg[0];
|
||||
ptr_sizearg++;
|
||||
}
|
||||
error = NULL;
|
||||
number = strtol (ptr_sizearg, &error, 10);
|
||||
if (error && !error[0])
|
||||
if (util_parse_int (ptr_sizearg, 10, &number))
|
||||
{
|
||||
if (sign)
|
||||
{
|
||||
@@ -8360,9 +8299,7 @@ COMMAND_CALLBACK(window)
|
||||
/* jump to window by buffer number */
|
||||
if (string_strncmp (argv[1], "b", 1) == 0)
|
||||
{
|
||||
error = NULL;
|
||||
number = strtol (argv[1] + 1, &error, 10);
|
||||
if (error && !error[0])
|
||||
if (util_parse_int (argv[1] + 1, 10, &number))
|
||||
{
|
||||
gui_window_switch_by_buffer (ptr_win, number);
|
||||
return WEECHAT_RC_OK;
|
||||
@@ -8370,9 +8307,7 @@ COMMAND_CALLBACK(window)
|
||||
}
|
||||
|
||||
/* jump to window by number */
|
||||
error = NULL;
|
||||
number = strtol (argv[1], &error, 10);
|
||||
if (error && !error[0])
|
||||
if (util_parse_int (argv[1], 10, &number))
|
||||
{
|
||||
gui_window_switch_by_number (number);
|
||||
return WEECHAT_RC_OK;
|
||||
@@ -8412,7 +8347,13 @@ command_init (void)
|
||||
CMD_ARGS_DESC(
|
||||
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 "
|
||||
"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);
|
||||
hook_command (
|
||||
NULL, "bar",
|
||||
|
||||
+40
-89
@@ -46,6 +46,7 @@
|
||||
#include "core-infolist.h"
|
||||
#include "core-log.h"
|
||||
#include "core-string.h"
|
||||
#include "core-util.h"
|
||||
#include "core-version.h"
|
||||
#include "../gui/gui-color.h"
|
||||
#include "../gui/gui-chat.h"
|
||||
@@ -703,9 +704,8 @@ config_file_new_option (struct t_config_file *config_file,
|
||||
void *callback_delete_data)
|
||||
{
|
||||
struct t_config_option *new_option;
|
||||
int var_type, int_value, argc, i, index_value;
|
||||
long number;
|
||||
char *error, *pos, *option_name, *parent_name;
|
||||
int var_type, int_value, argc, i, index_value, number;
|
||||
char *pos, *option_name, *parent_name;
|
||||
|
||||
new_option = NULL;
|
||||
option_name = NULL;
|
||||
@@ -818,9 +818,7 @@ config_file_new_option (struct t_config_file *config_file,
|
||||
new_option->max = max;
|
||||
if (default_value)
|
||||
{
|
||||
error = NULL;
|
||||
number = strtol (default_value, &error, 10);
|
||||
if (!error || error[0])
|
||||
if (!util_parse_int (default_value, 10, &number))
|
||||
number = 0;
|
||||
if (number < min)
|
||||
number = min;
|
||||
@@ -833,9 +831,7 @@ config_file_new_option (struct t_config_file *config_file,
|
||||
}
|
||||
if (value)
|
||||
{
|
||||
error = NULL;
|
||||
number = strtol (value, &error, 10);
|
||||
if (!error || error[0])
|
||||
if (!util_parse_int (value, 10, &number))
|
||||
number = 0;
|
||||
if (number < min)
|
||||
number = min;
|
||||
@@ -1404,9 +1400,7 @@ int
|
||||
config_file_option_set (struct t_config_option *option, const char *value,
|
||||
int run_callback)
|
||||
{
|
||||
int value_int, i, rc, new_value_ok, old_value_was_null, old_value;
|
||||
long number;
|
||||
char *error;
|
||||
int value_int, i, rc, new_value_ok, old_value_was_null, old_value, number;
|
||||
|
||||
if (!option)
|
||||
return WEECHAT_CONFIG_OPTION_SET_ERROR;
|
||||
@@ -1493,10 +1487,8 @@ config_file_option_set (struct t_config_option *option, const char *value,
|
||||
new_value_ok = 0;
|
||||
if (strncmp (value, "++", 2) == 0)
|
||||
{
|
||||
error = NULL;
|
||||
number = strtol (value + 2, &error, 10);
|
||||
if (error && !error[0]
|
||||
&& (long)old_value + number <= (long)(option->max))
|
||||
if (util_parse_int (value + 2, 10, &number)
|
||||
&& ((long)old_value + (long)number <= (long)(option->max)))
|
||||
{
|
||||
value_int = old_value + number;
|
||||
new_value_ok = 1;
|
||||
@@ -1504,10 +1496,8 @@ config_file_option_set (struct t_config_option *option, const char *value,
|
||||
}
|
||||
else if (strncmp (value, "--", 2) == 0)
|
||||
{
|
||||
error = NULL;
|
||||
number = strtol (value + 2, &error, 10);
|
||||
if (error && !error[0]
|
||||
&& (long)old_value - number >= (long)(option->min))
|
||||
if (util_parse_int (value + 2, 10, &number)
|
||||
&& ((long)old_value - (long)number >= (long)(option->min)))
|
||||
{
|
||||
value_int = old_value - number;
|
||||
new_value_ok = 1;
|
||||
@@ -1515,20 +1505,16 @@ config_file_option_set (struct t_config_option *option, const char *value,
|
||||
}
|
||||
else
|
||||
{
|
||||
error = NULL;
|
||||
number = strtol (value, &error, 10);
|
||||
if (error && !error[0])
|
||||
if (util_parse_int (value, 10, &number))
|
||||
{
|
||||
value_int = number;
|
||||
if ((value_int >= option->min)
|
||||
&& (value_int <= option->max))
|
||||
if ((value_int >= option->min) && (value_int <= option->max))
|
||||
new_value_ok = 1;
|
||||
}
|
||||
}
|
||||
if (new_value_ok)
|
||||
{
|
||||
if (old_value_was_null
|
||||
|| (value_int != old_value))
|
||||
if (old_value_was_null || (value_int != old_value))
|
||||
{
|
||||
CONFIG_INTEGER(option) = value_int;
|
||||
rc = WEECHAT_CONFIG_OPTION_SET_OK_CHANGED;
|
||||
@@ -1572,9 +1558,7 @@ config_file_option_set (struct t_config_option *option, const char *value,
|
||||
new_value_ok = 0;
|
||||
if (strncmp (value, "++", 2) == 0)
|
||||
{
|
||||
error = NULL;
|
||||
number = strtol (value + 2, &error, 10);
|
||||
if (error && !error[0])
|
||||
if (util_parse_int (value + 2, 10, &number))
|
||||
{
|
||||
if (gui_color_assign_by_diff (&value_int,
|
||||
gui_color_get_name (old_value),
|
||||
@@ -1584,9 +1568,7 @@ config_file_option_set (struct t_config_option *option, const char *value,
|
||||
}
|
||||
else if (strncmp (value, "--", 2) == 0)
|
||||
{
|
||||
error = NULL;
|
||||
number = strtol (value + 2, &error, 10);
|
||||
if (error && !error[0])
|
||||
if (util_parse_int (value + 2, 10, &number))
|
||||
{
|
||||
if (gui_color_assign_by_diff (&value_int,
|
||||
gui_color_get_name (old_value),
|
||||
@@ -1601,8 +1583,7 @@ config_file_option_set (struct t_config_option *option, const char *value,
|
||||
}
|
||||
if (new_value_ok)
|
||||
{
|
||||
if (old_value_was_null
|
||||
|| (value_int != old_value))
|
||||
if (old_value_was_null || (value_int != old_value))
|
||||
{
|
||||
CONFIG_COLOR(option) = value_int;
|
||||
rc = WEECHAT_CONFIG_OPTION_SET_OK_CHANGED;
|
||||
@@ -1631,9 +1612,7 @@ config_file_option_set (struct t_config_option *option, const char *value,
|
||||
value_int = -1;
|
||||
if (strncmp (value, "++", 2) == 0)
|
||||
{
|
||||
error = NULL;
|
||||
number = strtol (value + 2, &error, 10);
|
||||
if (error && !error[0])
|
||||
if (util_parse_int (value + 2, 10, &number))
|
||||
{
|
||||
number = number % (option->max + 1);
|
||||
value_int = (old_value + number) %
|
||||
@@ -1642,9 +1621,7 @@ config_file_option_set (struct t_config_option *option, const char *value,
|
||||
}
|
||||
else if (strncmp (value, "--", 2) == 0)
|
||||
{
|
||||
error = NULL;
|
||||
number = strtol (value + 2, &error, 10);
|
||||
if (error && !error[0])
|
||||
if (util_parse_int (value + 2, 10, &number))
|
||||
{
|
||||
number = number % (option->max + 1);
|
||||
value_int = (old_value + (option->max + 1) - number) %
|
||||
@@ -1664,8 +1641,7 @@ config_file_option_set (struct t_config_option *option, const char *value,
|
||||
}
|
||||
if (value_int >= 0)
|
||||
{
|
||||
if (old_value_was_null
|
||||
|| (value_int != old_value))
|
||||
if (old_value_was_null || (value_int != old_value))
|
||||
{
|
||||
CONFIG_ENUM(option) = value_int;
|
||||
rc = WEECHAT_CONFIG_OPTION_SET_OK_CHANGED;
|
||||
@@ -1888,9 +1864,7 @@ config_file_option_set_default (struct t_config_option *option,
|
||||
const char *value,
|
||||
int run_callback)
|
||||
{
|
||||
int value_int, i, rc, new_value_ok, old_value_was_null, old_value;
|
||||
long number;
|
||||
char *error;
|
||||
int value_int, i, rc, new_value_ok, old_value_was_null, old_value, number;
|
||||
|
||||
if (!option)
|
||||
return WEECHAT_CONFIG_OPTION_SET_ERROR;
|
||||
@@ -1965,42 +1939,34 @@ config_file_option_set_default (struct t_config_option *option,
|
||||
new_value_ok = 0;
|
||||
if (strncmp (value, "++", 2) == 0)
|
||||
{
|
||||
error = NULL;
|
||||
number = strtol (value + 2, &error, 10);
|
||||
if (error && !error[0])
|
||||
if (util_parse_int (value + 2, 10, &number)
|
||||
&& ((long)old_value + (long)number <= (long)(option->max)))
|
||||
{
|
||||
value_int = old_value + number;
|
||||
if (value_int <= option->max)
|
||||
new_value_ok = 1;
|
||||
new_value_ok = 1;
|
||||
}
|
||||
}
|
||||
else if (strncmp (value, "--", 2) == 0)
|
||||
{
|
||||
error = NULL;
|
||||
number = strtol (value + 2, &error, 10);
|
||||
if (error && !error[0])
|
||||
if (util_parse_int (value + 2, 10, &number)
|
||||
&& ((long)old_value - (long)number >= (long)(option->min)))
|
||||
{
|
||||
value_int = old_value - number;
|
||||
if (value_int >= option->min)
|
||||
new_value_ok = 1;
|
||||
new_value_ok = 1;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
error = NULL;
|
||||
number = strtol (value, &error, 10);
|
||||
if (error && !error[0])
|
||||
if (util_parse_int (value, 10, &number))
|
||||
{
|
||||
value_int = number;
|
||||
if ((value_int >= option->min)
|
||||
&& (value_int <= option->max))
|
||||
if ((value_int >= option->min) && (value_int <= option->max))
|
||||
new_value_ok = 1;
|
||||
}
|
||||
}
|
||||
if (new_value_ok)
|
||||
{
|
||||
if (old_value_was_null
|
||||
|| (value_int != old_value))
|
||||
if (old_value_was_null || (value_int != old_value))
|
||||
{
|
||||
CONFIG_INTEGER_DEFAULT(option) = value_int;
|
||||
rc = WEECHAT_CONFIG_OPTION_SET_OK_CHANGED;
|
||||
@@ -2044,9 +2010,7 @@ config_file_option_set_default (struct t_config_option *option,
|
||||
new_value_ok = 0;
|
||||
if (strncmp (value, "++", 2) == 0)
|
||||
{
|
||||
error = NULL;
|
||||
number = strtol (value + 2, &error, 10);
|
||||
if (error && !error[0])
|
||||
if (util_parse_int (value + 2, 10, &number))
|
||||
{
|
||||
if (gui_color_assign_by_diff (&value_int,
|
||||
gui_color_get_name (old_value),
|
||||
@@ -2056,9 +2020,7 @@ config_file_option_set_default (struct t_config_option *option,
|
||||
}
|
||||
else if (strncmp (value, "--", 2) == 0)
|
||||
{
|
||||
error = NULL;
|
||||
number = strtol (value + 2, &error, 10);
|
||||
if (error && !error[0])
|
||||
if (util_parse_int (value + 2, 10, &number))
|
||||
{
|
||||
if (gui_color_assign_by_diff (&value_int,
|
||||
gui_color_get_name (old_value),
|
||||
@@ -2073,8 +2035,7 @@ config_file_option_set_default (struct t_config_option *option,
|
||||
}
|
||||
if (new_value_ok)
|
||||
{
|
||||
if (old_value_was_null
|
||||
|| (value_int != old_value))
|
||||
if (old_value_was_null || (value_int != old_value))
|
||||
{
|
||||
CONFIG_COLOR_DEFAULT(option) = value_int;
|
||||
rc = WEECHAT_CONFIG_OPTION_SET_OK_CHANGED;
|
||||
@@ -2103,9 +2064,7 @@ config_file_option_set_default (struct t_config_option *option,
|
||||
value_int = -1;
|
||||
if (strncmp (value, "++", 2) == 0)
|
||||
{
|
||||
error = NULL;
|
||||
number = strtol (value + 2, &error, 10);
|
||||
if (error && !error[0])
|
||||
if (util_parse_int (value + 2, 10, &number))
|
||||
{
|
||||
number = number % (option->max + 1);
|
||||
value_int = (old_value + number) %
|
||||
@@ -2114,9 +2073,7 @@ config_file_option_set_default (struct t_config_option *option,
|
||||
}
|
||||
else if (strncmp (value, "--", 2) == 0)
|
||||
{
|
||||
error = NULL;
|
||||
number = strtol (value + 2, &error, 10);
|
||||
if (error && !error[0])
|
||||
if (util_parse_int (value + 2, 10, &number))
|
||||
{
|
||||
number = number % (option->max + 1);
|
||||
value_int = (old_value + (option->max + 1) - number) %
|
||||
@@ -2136,8 +2093,7 @@ config_file_option_set_default (struct t_config_option *option,
|
||||
}
|
||||
if (value_int >= 0)
|
||||
{
|
||||
if (old_value_was_null
|
||||
|| (value_int != old_value))
|
||||
if (old_value_was_null || (value_int != old_value))
|
||||
{
|
||||
CONFIG_ENUM_DEFAULT(option) = value_int;
|
||||
rc = WEECHAT_CONFIG_OPTION_SET_OK_CHANGED;
|
||||
@@ -3156,7 +3112,7 @@ config_file_write_internal (struct t_config_file *config_file,
|
||||
{
|
||||
int rc;
|
||||
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_option *ptr_option;
|
||||
|
||||
@@ -3307,9 +3263,7 @@ config_file_write_internal (struct t_config_file *config_file,
|
||||
config_file->file = NULL;
|
||||
|
||||
/* update file mode */
|
||||
error = NULL;
|
||||
file_perms = strtol (CONFIG_STRING(config_look_config_permissions), &error, 8);
|
||||
if (!error || error[0])
|
||||
if (!util_parse_long (CONFIG_STRING(config_look_config_permissions), 8, &file_perms))
|
||||
file_perms = 0600;
|
||||
if (chmod (filename2, file_perms) < 0)
|
||||
{
|
||||
@@ -3382,18 +3336,15 @@ config_file_write (struct t_config_file *config_file)
|
||||
int
|
||||
config_file_parse_version (const char *version)
|
||||
{
|
||||
long number;
|
||||
char *error;
|
||||
int number;
|
||||
|
||||
if (!version)
|
||||
return -1;
|
||||
|
||||
error = NULL;
|
||||
number = strtoll (version, &error, 10);
|
||||
if (!error || error[0])
|
||||
if (!util_parse_int (version, 10, &number) || (number < 1))
|
||||
return -1;
|
||||
|
||||
return (number < 1) ? -1 : (int)number;
|
||||
return number;
|
||||
}
|
||||
|
||||
/*
|
||||
|
||||
+12
-30
@@ -50,6 +50,7 @@
|
||||
#include "core-proxy.h"
|
||||
#include "core-string.h"
|
||||
#include "core-sys.h"
|
||||
#include "core-util.h"
|
||||
#include "core-version.h"
|
||||
#include "../gui/gui-bar.h"
|
||||
#include "../gui/gui-bar-item.h"
|
||||
@@ -2147,19 +2148,14 @@ void
|
||||
config_weechat_palette_change_cb (const void *pointer, void *data,
|
||||
struct t_config_option *option)
|
||||
{
|
||||
char *error;
|
||||
int number;
|
||||
|
||||
/* make C compiler happy */
|
||||
(void) pointer;
|
||||
(void) data;
|
||||
|
||||
error = NULL;
|
||||
number = (int)strtol (option->name, &error, 10);
|
||||
if (error && !error[0])
|
||||
{
|
||||
if (util_parse_int (option->name, 10, &number))
|
||||
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)
|
||||
{
|
||||
struct t_config_option *ptr_option;
|
||||
char *error;
|
||||
int rc, number;
|
||||
|
||||
/* 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;
|
||||
|
||||
error = NULL;
|
||||
number = (int)strtol (option_name, &error, 10);
|
||||
if (error && !error[0])
|
||||
if (util_parse_int (option_name, 10, &number))
|
||||
{
|
||||
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_option *option)
|
||||
{
|
||||
char *error;
|
||||
int number;
|
||||
|
||||
/* make C compiler happy */
|
||||
@@ -2252,9 +2244,7 @@ config_weechat_palette_delete_option_cb (const void *pointer, void *data,
|
||||
(void) config_file;
|
||||
(void) section;
|
||||
|
||||
error = NULL;
|
||||
number = (int)strtol (option->name, &error, 10);
|
||||
if (error && !error[0])
|
||||
if (util_parse_int (option->name, 10, &number))
|
||||
gui_color_palette_remove (number);
|
||||
|
||||
config_file_option_free (option, 1);
|
||||
@@ -2521,10 +2511,9 @@ config_weechat_layout_read_cb (const void *pointer, void *data,
|
||||
struct t_config_section *section,
|
||||
const char *option_name, const char *value)
|
||||
{
|
||||
int argc, force_current_layout;
|
||||
char **argv, *pos, *layout_name, *error1, *error2, *error3, *error4;
|
||||
int argc, force_current_layout, number1, number2, number3, number4;
|
||||
char **argv, *pos, *layout_name;
|
||||
const char *ptr_option_name;
|
||||
long number1, number2, number3, number4;
|
||||
struct t_gui_layout *ptr_layout;
|
||||
struct t_gui_layout_window *parent;
|
||||
|
||||
@@ -2582,9 +2571,7 @@ config_weechat_layout_read_cb (const void *pointer, void *data,
|
||||
{
|
||||
if (argc >= 3)
|
||||
{
|
||||
error1 = NULL;
|
||||
number1 = strtol (argv[2], &error1, 10);
|
||||
if (error1 && !error1[0])
|
||||
if (util_parse_int (argv[2], 10, &number1))
|
||||
gui_layout_buffer_add (ptr_layout, argv[0], argv[1], number1);
|
||||
}
|
||||
string_free_split (argv);
|
||||
@@ -2601,16 +2588,10 @@ config_weechat_layout_read_cb (const void *pointer, void *data,
|
||||
{
|
||||
if (argc >= 6)
|
||||
{
|
||||
error1 = NULL;
|
||||
number1 = strtol (argv[0], &error1, 10);
|
||||
error2 = NULL;
|
||||
number2 = strtol (argv[1], &error2, 10);
|
||||
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])
|
||||
if (util_parse_int (argv[0], 10, &number1)
|
||||
&& util_parse_int (argv[1], 10, &number2)
|
||||
&& util_parse_int (argv[2], 10, &number3)
|
||||
&& util_parse_int (argv[3], 10, &number4))
|
||||
{
|
||||
parent = gui_layout_window_search_by_id (ptr_layout->layout_windows,
|
||||
number2);
|
||||
@@ -3781,6 +3762,7 @@ config_weechat_init_options (void)
|
||||
NULL, 0, 0,
|
||||
"${away} "
|
||||
"|| ${buffer.num_displayed} == 0 "
|
||||
"|| ${info:relay_client_count,api,connected} > 0 "
|
||||
"|| ${info:relay_client_count,weechat,connected} > 0",
|
||||
NULL, 0,
|
||||
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL);
|
||||
|
||||
+10
-4
@@ -46,6 +46,9 @@
|
||||
#include <netinet/in.h>
|
||||
#include <inttypes.h>
|
||||
#define BE_INT64 htonll
|
||||
#elif defined(__HAIKU__)
|
||||
#include <ByteOrder.h>
|
||||
#define BE_INT64 B_HOST_TO_BENDIAN_INT64
|
||||
#else
|
||||
#define BE_INT64 htobe64
|
||||
#endif
|
||||
@@ -657,15 +660,18 @@ weecrypto_totp_validate (const char *secret_base32, time_t totp_time,
|
||||
|
||||
otp_ok = 0;
|
||||
|
||||
/*
|
||||
* Compare in constant time and never break early: a non-constant
|
||||
* compare and an early exit on match would let an observer measure
|
||||
* how many digits of the expected OTP they got right and which
|
||||
* time-window offset matched.
|
||||
*/
|
||||
for (i = moving_factor - window; i <= moving_factor + window; i++)
|
||||
{
|
||||
rc = weecrypto_totp_generate_internal (secret, length_secret,
|
||||
i, digits, str_otp);
|
||||
if (rc && (strcmp (str_otp, otp) == 0))
|
||||
{
|
||||
if (rc && (string_memcmp_constant_time (str_otp, otp, digits) == 0))
|
||||
otp_ok = 1;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
free (secret);
|
||||
|
||||
@@ -1223,14 +1223,9 @@ dir_file_compress_zstd (const char *from, const char *to,
|
||||
void *buffer_in, *buffer_out;
|
||||
size_t buffer_in_size, buffer_out_size, num_read, remaining;
|
||||
int rc;
|
||||
#if ZSTD_VERSION_NUMBER >= 10400 /* zstd ≥ 1.4.0 */
|
||||
ZSTD_CCtx *cctx = NULL;
|
||||
ZSTD_EndDirective mode;
|
||||
int finished, last_chunk;
|
||||
#else /* zstd < 1.4.0 */
|
||||
ZSTD_CStream *cstream = NULL;
|
||||
size_t result, to_read;
|
||||
#endif
|
||||
ZSTD_inBuffer input;
|
||||
ZSTD_outBuffer output;
|
||||
|
||||
@@ -1259,7 +1254,6 @@ dir_file_compress_zstd (const char *from, const char *to,
|
||||
if (!dest)
|
||||
goto end;
|
||||
|
||||
#if ZSTD_VERSION_NUMBER >= 10400 /* zstd ≥ 1.4.0 */
|
||||
cctx = ZSTD_createCCtx ();
|
||||
if (!cctx)
|
||||
goto error;
|
||||
@@ -1296,77 +1290,21 @@ dir_file_compress_zstd (const char *from, const char *to,
|
||||
if (last_chunk)
|
||||
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;
|
||||
goto end;
|
||||
|
||||
error:
|
||||
#if ZSTD_VERSION_NUMBER >= 10400 /* zstd ≥ 1.4.0 */
|
||||
if (cctx)
|
||||
{
|
||||
ZSTD_freeCCtx (cctx);
|
||||
cctx = NULL;
|
||||
}
|
||||
#else /* zstd < 1.4.0 */
|
||||
if (cstream)
|
||||
{
|
||||
ZSTD_freeCStream (cstream);
|
||||
cstream = NULL;
|
||||
}
|
||||
#endif
|
||||
unlink (to);
|
||||
|
||||
end:
|
||||
#if ZSTD_VERSION_NUMBER >= 10400 /* zstd ≥ 1.4.0 */
|
||||
if (cctx)
|
||||
ZSTD_freeCCtx (cctx);
|
||||
#else /* zstd < 1.4.0 */
|
||||
if (cstream)
|
||||
ZSTD_freeCStream (cstream);
|
||||
#endif
|
||||
|
||||
free (buffer_in);
|
||||
free (buffer_out);
|
||||
|
||||
+37
-53
@@ -28,6 +28,7 @@
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include <stdarg.h>
|
||||
#include <errno.h>
|
||||
#include <regex.h>
|
||||
#include <time.h>
|
||||
#include <sys/time.h>
|
||||
@@ -314,8 +315,6 @@ eval_string_range_chars (const char *range)
|
||||
char1 = utf8_char_int (range);
|
||||
|
||||
/* next char must be '-' */
|
||||
if (!range[0])
|
||||
goto end;
|
||||
ptr_char = utf8_next_char (range);
|
||||
if (!ptr_char || !ptr_char[0] || (ptr_char[0] != '-'))
|
||||
goto end;
|
||||
@@ -400,9 +399,8 @@ char *
|
||||
eval_string_cut (const char *text, int screen)
|
||||
{
|
||||
const char *pos, *pos2;
|
||||
char *tmp, *error, *value;
|
||||
int count_suffix;
|
||||
long number;
|
||||
char *tmp, *value;
|
||||
int count_suffix, number;
|
||||
|
||||
count_suffix = 0;
|
||||
if (text[0] == '+')
|
||||
@@ -423,9 +421,7 @@ eval_string_cut (const char *text, int screen)
|
||||
if (!tmp)
|
||||
return strdup ("");
|
||||
|
||||
error = NULL;
|
||||
number = strtol (tmp, &error, 10);
|
||||
if (!error || error[0] || (number < 0))
|
||||
if (!util_parse_int (tmp, 10, &number) || (number < 0))
|
||||
{
|
||||
free (tmp);
|
||||
return strdup ("");
|
||||
@@ -453,8 +449,8 @@ char *
|
||||
eval_string_repeat (const char *text)
|
||||
{
|
||||
const char *pos;
|
||||
char *tmp, *error;
|
||||
long number;
|
||||
char *tmp;
|
||||
int number;
|
||||
|
||||
pos = strchr (text, ',');
|
||||
if (!pos)
|
||||
@@ -464,9 +460,7 @@ eval_string_repeat (const char *text)
|
||||
if (!tmp)
|
||||
return strdup ("");
|
||||
|
||||
error = NULL;
|
||||
number = strtol (tmp, &error, 10);
|
||||
if (!error || error[0] || (number < 0))
|
||||
if (!util_parse_int (tmp, 10, &number) || (number < 0))
|
||||
{
|
||||
free (tmp);
|
||||
return strdup ("");
|
||||
@@ -514,7 +508,7 @@ eval_string_repeat (const char *text)
|
||||
char *
|
||||
eval_string_split (const char *text)
|
||||
{
|
||||
char *pos, *pos2, *pos3, *str_number, *separators, **items, *value, *error;
|
||||
char *pos, *pos2, *pos3, *str_number, *separators, **items, *value;
|
||||
char str_value[32], *str_flags, **list_flags, *strip_items, **ptr_flag;
|
||||
int num_items, count_items, random_item, flags;
|
||||
long number, max_items;
|
||||
@@ -550,9 +544,7 @@ eval_string_split (const char *text)
|
||||
}
|
||||
else
|
||||
{
|
||||
error = NULL;
|
||||
number = strtol (str_number, &error, 10);
|
||||
if (!error || error[0] || (number == 0))
|
||||
if (!util_parse_long (str_number, 10, &number) || (number == 0))
|
||||
goto end;
|
||||
}
|
||||
|
||||
@@ -590,9 +582,8 @@ eval_string_split (const char *text)
|
||||
}
|
||||
else if (strncmp (*ptr_flag, "max_items=", 10) == 0)
|
||||
{
|
||||
error = NULL;
|
||||
max_items = strtol (*ptr_flag + 10, &error, 10);
|
||||
if (!error || error[0] || (max_items < 0))
|
||||
if (!util_parse_long (*ptr_flag + 10, 10, &max_items)
|
||||
|| (max_items < 0))
|
||||
goto end;
|
||||
}
|
||||
}
|
||||
@@ -664,7 +655,7 @@ end:
|
||||
char *
|
||||
eval_string_split_shell (const char *text)
|
||||
{
|
||||
char *pos, *str_number, **items, *value, *error, str_value[32];
|
||||
char *pos, *str_number, **items, *value, str_value[32];
|
||||
int num_items, count_items, random_item;
|
||||
long number;
|
||||
|
||||
@@ -693,9 +684,7 @@ eval_string_split_shell (const char *text)
|
||||
}
|
||||
else
|
||||
{
|
||||
error = NULL;
|
||||
number = strtol (str_number, &error, 10);
|
||||
if (!error || error[0] || (number == 0))
|
||||
if (!util_parse_long (str_number, 10, &number) || (number == 0))
|
||||
goto end;
|
||||
}
|
||||
|
||||
@@ -746,11 +735,11 @@ end:
|
||||
char *
|
||||
eval_string_regex_group (const char *text, struct t_eval_context *eval_context)
|
||||
{
|
||||
char str_value[64], *error;
|
||||
char str_value[64];
|
||||
long number;
|
||||
|
||||
if (!eval_context->regex || !eval_context->regex->result)
|
||||
return strdup ("");
|
||||
goto end;
|
||||
|
||||
if (strcmp (text, "#") == 0)
|
||||
{
|
||||
@@ -772,10 +761,8 @@ eval_string_regex_group (const char *text, struct t_eval_context *eval_context)
|
||||
}
|
||||
else
|
||||
{
|
||||
error = NULL;
|
||||
number = strtol (text, &error, 10);
|
||||
if (!error || error[0])
|
||||
number = -1;
|
||||
if (!util_parse_long (text, 10, &number))
|
||||
goto end;
|
||||
}
|
||||
if ((number >= 0) && (number <= eval_context->regex->last_match))
|
||||
{
|
||||
@@ -786,6 +773,7 @@ eval_string_regex_group (const char *text, struct t_eval_context *eval_context)
|
||||
eval_context->regex->match[number].rm_so);
|
||||
}
|
||||
|
||||
end:
|
||||
return strdup ("");
|
||||
}
|
||||
|
||||
@@ -1058,7 +1046,7 @@ eval_string_if (const char *text, struct t_eval_context *eval_context)
|
||||
char *
|
||||
eval_string_random (const char *text)
|
||||
{
|
||||
char *pos, *error, *tmp, result[128];
|
||||
char *pos, *tmp, result[128];
|
||||
long long min_number, max_number;
|
||||
|
||||
if (!text || !text[0])
|
||||
@@ -1071,18 +1059,14 @@ eval_string_random (const char *text)
|
||||
tmp = string_strndup (text, pos - text);
|
||||
if (!tmp)
|
||||
goto error;
|
||||
error = NULL;
|
||||
min_number = strtoll (tmp, &error, 10);
|
||||
if (!error || error[0])
|
||||
if (!util_parse_longlong (tmp, 10, &min_number))
|
||||
{
|
||||
free (tmp);
|
||||
goto error;
|
||||
}
|
||||
free (tmp);
|
||||
|
||||
error = NULL;
|
||||
max_number = strtoll (pos + 1, &error, 10);
|
||||
if (!error || error[0])
|
||||
if (!util_parse_longlong (pos + 1, 10, &max_number))
|
||||
goto error;
|
||||
|
||||
if (min_number > max_number)
|
||||
@@ -2224,17 +2208,20 @@ eval_compare (const char *expr1, int comparison, const char *expr2,
|
||||
|
||||
if (!string_compare)
|
||||
{
|
||||
errno = 0;
|
||||
error = NULL;
|
||||
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;
|
||||
}
|
||||
else
|
||||
{
|
||||
value2 = strtod (expr2, &error);
|
||||
if (!error || error[0])
|
||||
string_compare = 1;
|
||||
}
|
||||
}
|
||||
|
||||
if (string_compare)
|
||||
@@ -2683,10 +2670,9 @@ eval_expression (const char *expr, struct t_hashtable *pointers,
|
||||
{
|
||||
struct t_eval_context context, *eval_context;
|
||||
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;
|
||||
long number;
|
||||
char *value, *error;
|
||||
char *value;
|
||||
const char *default_prefix = EVAL_DEFAULT_PREFIX;
|
||||
const char *default_suffix = EVAL_DEFAULT_SUFFIX;
|
||||
const char *ptr_value, *regex_replace;
|
||||
@@ -2826,11 +2812,9 @@ eval_expression (const char *expr, struct t_hashtable *pointers,
|
||||
ptr_value = hashtable_get (options, "debug");
|
||||
if (ptr_value && ptr_value[0])
|
||||
{
|
||||
error = NULL;
|
||||
number = strtol (ptr_value, &error, 10);
|
||||
if (error && !error[0] && (number >= 1))
|
||||
if (util_parse_int (ptr_value, 10, &debug_level) && (debug_level >= 1))
|
||||
{
|
||||
eval_context->debug_level = (int)number;
|
||||
eval_context->debug_level = debug_level;
|
||||
eval_context->debug_output = string_dyn_alloc (256);
|
||||
}
|
||||
}
|
||||
|
||||
+18
-31
@@ -35,6 +35,7 @@
|
||||
#include "core-hashtable.h"
|
||||
#include "core-log.h"
|
||||
#include "core-string.h"
|
||||
#include "core-util.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;
|
||||
const char *ptr_size;
|
||||
char *error;
|
||||
long value;
|
||||
int i, offset;
|
||||
int i, offset, value;
|
||||
void *ptr_value;
|
||||
|
||||
if (!hdata || !name)
|
||||
@@ -340,10 +339,8 @@ hdata_get_var_array_size (struct t_hdata *hdata, void *pointer,
|
||||
else
|
||||
{
|
||||
/* check if the size is a valid integer */
|
||||
error = NULL;
|
||||
value = strtol (ptr_size, &error, 10);
|
||||
if (error && !error[0])
|
||||
return (int)value;
|
||||
if (util_parse_int (ptr_size, 10, &value))
|
||||
return value;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -691,8 +688,8 @@ hdata_count (struct t_hdata *hdata, void *pointer)
|
||||
void
|
||||
hdata_get_index_and_name (const char *name, int *index, const char **ptr_name)
|
||||
{
|
||||
char *pos, *str_index, *error;
|
||||
long number;
|
||||
char *pos, *str_index;
|
||||
int number;
|
||||
|
||||
if (index)
|
||||
*index = -1;
|
||||
@@ -708,9 +705,7 @@ hdata_get_index_and_name (const char *name, int *index, const char **ptr_name)
|
||||
str_index = string_strndup (name, pos - name);
|
||||
if (str_index)
|
||||
{
|
||||
error = NULL;
|
||||
number = strtol (str_index, &error, 10);
|
||||
if (error && !error[0])
|
||||
if (util_parse_int (str_index, 10, &number))
|
||||
{
|
||||
if (index)
|
||||
*index = number;
|
||||
@@ -1246,11 +1241,11 @@ hdata_set (struct t_hdata *hdata, void *pointer, const char *name,
|
||||
const char *value)
|
||||
{
|
||||
struct t_hdata_var *var;
|
||||
char **ptr_string, *error;
|
||||
long number;
|
||||
long long number_longlong;
|
||||
char **ptr_string;
|
||||
unsigned long ptr;
|
||||
int rc;
|
||||
int rc, number_int;
|
||||
long number_long;
|
||||
long long number_longlong;
|
||||
|
||||
if (!hdata->update_pending)
|
||||
return 0;
|
||||
@@ -1270,27 +1265,21 @@ hdata_set (struct t_hdata *hdata, void *pointer, const char *name,
|
||||
*((char *)(pointer + var->offset)) = (value) ? value[0] : '\0';
|
||||
return 1;
|
||||
case WEECHAT_HDATA_INTEGER:
|
||||
error = NULL;
|
||||
number = strtol (value, &error, 10);
|
||||
if (error && !error[0])
|
||||
if (util_parse_int (value, 10, &number_int))
|
||||
{
|
||||
*((int *)(pointer + var->offset)) = (int)number;
|
||||
*((int *)(pointer + var->offset)) = number_int;
|
||||
return 1;
|
||||
}
|
||||
break;
|
||||
case WEECHAT_HDATA_LONG:
|
||||
error = NULL;
|
||||
number = strtol (value, &error, 10);
|
||||
if (error && !error[0])
|
||||
if (util_parse_long (value, 10, &number_long))
|
||||
{
|
||||
*((long *)(pointer + var->offset)) = number;
|
||||
*((long *)(pointer + var->offset)) = number_long;
|
||||
return 1;
|
||||
}
|
||||
break;
|
||||
case WEECHAT_HDATA_LONGLONG:
|
||||
error = NULL;
|
||||
number_longlong = strtoll (value, &error, 10);
|
||||
if (error && !error[0])
|
||||
if (util_parse_longlong (value, 10, &number_longlong))
|
||||
{
|
||||
*((long long *)(pointer + var->offset)) = number_longlong;
|
||||
return 1;
|
||||
@@ -1323,11 +1312,9 @@ hdata_set (struct t_hdata *hdata, void *pointer, const char *name,
|
||||
}
|
||||
break;
|
||||
case WEECHAT_HDATA_TIME:
|
||||
error = NULL;
|
||||
number = strtol (value, &error, 10);
|
||||
if (error && !error[0] && (number >= 0))
|
||||
if (util_parse_long (value, 10, &number_long) && (number_long >= 0))
|
||||
{
|
||||
*((time_t *)(pointer + var->offset)) = (time_t)number;
|
||||
*((time_t *)(pointer + var->offset)) = (time_t)number_long;
|
||||
return 1;
|
||||
}
|
||||
break;
|
||||
|
||||
+5
-11
@@ -560,9 +560,7 @@ void
|
||||
hook_set (struct t_hook *hook, const char *property, const char *value)
|
||||
{
|
||||
ssize_t num_written;
|
||||
char *error;
|
||||
long number;
|
||||
int rc;
|
||||
int rc, number;
|
||||
|
||||
/* invalid 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_PROCESS(hook, child_pid) > 0))
|
||||
{
|
||||
error = NULL;
|
||||
number = strtol (value, &error, 10);
|
||||
if (!error || error[0])
|
||||
if (!util_parse_int (value, 10, &number))
|
||||
{
|
||||
/* not a number? look for signal by name */
|
||||
number = signal_search_name (value);
|
||||
}
|
||||
if (number >= 0)
|
||||
{
|
||||
rc = kill (HOOK_PROCESS(hook, child_pid), (int)number);
|
||||
rc = kill (HOOK_PROCESS(hook, child_pid), number);
|
||||
if (rc < 0)
|
||||
{
|
||||
gui_chat_printf (NULL,
|
||||
_("%sError sending signal %d to pid %d: %s"),
|
||||
gui_chat_prefix[GUI_CHAT_PREFIX_ERROR],
|
||||
(int)number,
|
||||
number,
|
||||
HOOK_PROCESS(hook, child_pid),
|
||||
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_RUN)))
|
||||
{
|
||||
error = NULL;
|
||||
number = strtol (value, &error, 10);
|
||||
if (error && !error[0])
|
||||
if (util_parse_int (value, 10, &number))
|
||||
{
|
||||
switch (hook->type)
|
||||
{
|
||||
|
||||
+5
-10
@@ -58,6 +58,7 @@
|
||||
#include "core-config.h"
|
||||
#include "core-proxy.h"
|
||||
#include "core-string.h"
|
||||
#include "core-util.h"
|
||||
#include "../gui/gui-chat.h"
|
||||
#include "../plugins/plugin.h"
|
||||
|
||||
@@ -1570,11 +1571,9 @@ int
|
||||
network_connect_child_read_cb (const void *pointer, void *data, int fd)
|
||||
{
|
||||
struct t_hook *hook_connect;
|
||||
char buffer[1], buf_size[6], *cb_error, *cb_ip_address, *error;
|
||||
int num_read;
|
||||
char buffer[1], buf_size[6], *cb_error, *cb_ip_address;
|
||||
long size_msg;
|
||||
int rc, direction;
|
||||
int sock, i;
|
||||
int rc, num_read, direction, sock, i;
|
||||
struct msghdr msg;
|
||||
struct cmsghdr *cmsg;
|
||||
char msg_buf[CMSG_SPACE(sizeof (sock))];
|
||||
@@ -1603,9 +1602,7 @@ network_connect_child_read_cb (const void *pointer, void *data, int fd)
|
||||
buf_size, 5);
|
||||
if (num_read == 5)
|
||||
{
|
||||
error = NULL;
|
||||
size_msg = strtol (buf_size, &error, 10);
|
||||
if (error && !error[0] && (size_msg > 0))
|
||||
if (util_parse_long (buf_size, 10, &size_msg) && (size_msg > 0))
|
||||
{
|
||||
cb_ip_address = malloc (size_msg + 1);
|
||||
if (cb_ip_address)
|
||||
@@ -1740,9 +1737,7 @@ network_connect_child_read_cb (const void *pointer, void *data, int fd)
|
||||
buf_size, 5);
|
||||
if (num_read == 5)
|
||||
{
|
||||
error = NULL;
|
||||
size_msg = strtol (buf_size, &error, 10);
|
||||
if (error && !error[0] && (size_msg > 0))
|
||||
if (util_parse_long (buf_size, 10, &size_msg) && (size_msg > 0))
|
||||
{
|
||||
cb_error = malloc (size_msg + 1);
|
||||
if (cb_error)
|
||||
|
||||
+45
-13
@@ -55,6 +55,7 @@
|
||||
#include "core-eval.h"
|
||||
#include "core-hashtable.h"
|
||||
#include "core-utf8.h"
|
||||
#include "core-util.h"
|
||||
#include "../gui/gui-chat.h"
|
||||
#include "../gui/gui-color.h"
|
||||
#include "../plugins/plugin.h"
|
||||
@@ -922,6 +923,43 @@ string_strcmp_ignore_chars (const char *string1, const char *string2,
|
||||
string_charcasecmp (string1, string2);
|
||||
}
|
||||
|
||||
/*
|
||||
* Compare two memory areas of the same size in constant time.
|
||||
*
|
||||
* Use to compare secrets (e.g. password hashes, MACs) without leaking
|
||||
* information through the comparison's running time. The loop always
|
||||
* walks the full "size" bytes and uses only bitwise operations on the
|
||||
* data, so the execution time depends on "size" alone, not on the
|
||||
* position of the first differing byte.
|
||||
*
|
||||
* If either pointer is NULL, the areas are considered different (the
|
||||
* NULL check itself is not constant time but does not look at any
|
||||
* secret content).
|
||||
*
|
||||
* Return:
|
||||
* 0: areas are equal
|
||||
* 1: areas differ
|
||||
*/
|
||||
|
||||
int
|
||||
string_memcmp_constant_time (const void *area1, const void *area2, size_t size)
|
||||
{
|
||||
const unsigned char *p1, *p2;
|
||||
unsigned char diff;
|
||||
size_t i;
|
||||
|
||||
if (!area1 || !area2)
|
||||
return (area1 == area2) ? 0 : 1;
|
||||
|
||||
p1 = (const unsigned char *)area1;
|
||||
p2 = (const unsigned char *)area2;
|
||||
diff = 0;
|
||||
for (i = 0; i < size; i++)
|
||||
diff |= p1[i] ^ p2[i];
|
||||
|
||||
return (diff == 0) ? 0 : 1;
|
||||
}
|
||||
|
||||
/*
|
||||
* Search for a string in another string (locale and case independent).
|
||||
*
|
||||
@@ -3394,7 +3432,7 @@ unsigned long long
|
||||
string_parse_size (const char *size)
|
||||
{
|
||||
const char *pos;
|
||||
char *str_number, *error;
|
||||
char *str_number;
|
||||
long long number;
|
||||
unsigned long long result;
|
||||
|
||||
@@ -3417,11 +3455,7 @@ string_parse_size (const char *size)
|
||||
if (!str_number)
|
||||
goto end;
|
||||
|
||||
error = NULL;
|
||||
number = strtoll (str_number, &error, 10);
|
||||
if (!error || error[0])
|
||||
goto end;
|
||||
if (number < 0)
|
||||
if (!util_parse_longlong (str_number, 10, &number) || (number < 0))
|
||||
goto end;
|
||||
|
||||
while (pos[0] == ' ')
|
||||
@@ -4439,8 +4473,8 @@ string_get_priority_and_name (const char *string,
|
||||
int *priority, const char **name,
|
||||
int default_priority)
|
||||
{
|
||||
char *pos, *str_priority, *error;
|
||||
long number;
|
||||
char *pos, *str_priority;
|
||||
int number;
|
||||
|
||||
if (priority)
|
||||
*priority = default_priority;
|
||||
@@ -4456,17 +4490,15 @@ string_get_priority_and_name (const char *string,
|
||||
str_priority = string_strndup (string, pos - string);
|
||||
if (str_priority)
|
||||
{
|
||||
error = NULL;
|
||||
number = strtol (str_priority, &error, 10);
|
||||
if (error && !error[0])
|
||||
if (util_parse_int (str_priority, 10, &number))
|
||||
{
|
||||
if (priority)
|
||||
*priority = number;
|
||||
if (name)
|
||||
*name = pos + 1;
|
||||
}
|
||||
free (str_priority);
|
||||
}
|
||||
if (name)
|
||||
*name = pos + 1;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -69,6 +69,8 @@ extern int string_strcmp_ignore_chars (const char *string1,
|
||||
const char *string2,
|
||||
const char *chars_ignored,
|
||||
int case_sensitive);
|
||||
extern int string_memcmp_constant_time (const void *area1, const void *area2,
|
||||
size_t size);
|
||||
extern const char *string_strcasestr (const char *string, const char *search);
|
||||
extern int string_match (const char *string, const char *mask,
|
||||
int case_sensitive);
|
||||
|
||||
+2
-4
@@ -181,7 +181,7 @@ void
|
||||
sys_setrlimit (void)
|
||||
{
|
||||
#ifdef HAVE_SYS_RESOURCE_H
|
||||
char **items, *pos, *error;
|
||||
char **items, *pos;
|
||||
int num_items, i;
|
||||
long long number;
|
||||
|
||||
@@ -198,9 +198,7 @@ sys_setrlimit (void)
|
||||
if (pos)
|
||||
{
|
||||
pos[0] = '\0';
|
||||
error = NULL;
|
||||
number = strtoll (pos + 1, &error, 10);
|
||||
if (error && !error[0])
|
||||
if (util_parse_longlong (pos + 1, 10, &number) && (number >= -1))
|
||||
{
|
||||
sys_setrlimit_resource (items[i], number);
|
||||
}
|
||||
|
||||
@@ -410,7 +410,7 @@ upgrade_weechat_read_buffer (struct t_infolist *infolist)
|
||||
struct t_gui_buffer *ptr_buffer;
|
||||
const char *key, *var_name, *name, *plugin_name, *ptr_id;
|
||||
const char *str;
|
||||
char option_name[64], *option_key, *option_var, *error;
|
||||
char option_name[64], *option_key, *option_var;
|
||||
int index, main_buffer;
|
||||
long long id;
|
||||
|
||||
@@ -421,9 +421,7 @@ upgrade_weechat_read_buffer (struct t_infolist *infolist)
|
||||
ptr_id = infolist_string (infolist, "id");
|
||||
if (ptr_id)
|
||||
{
|
||||
error = NULL;
|
||||
id = strtoll (ptr_id, &error, 10);
|
||||
if (!error || error[0])
|
||||
if (!util_parse_longlong (ptr_id, 10, &id))
|
||||
id = -1;
|
||||
}
|
||||
}
|
||||
@@ -712,7 +710,6 @@ upgrade_weechat_read_nicklist (struct t_infolist *infolist)
|
||||
{
|
||||
struct t_gui_nick_group *ptr_group;
|
||||
const char *type, *name, *group_name, *ptr_id;
|
||||
char *error;
|
||||
long long id;
|
||||
|
||||
if (!upgrade_current_buffer)
|
||||
@@ -731,9 +728,7 @@ upgrade_weechat_read_nicklist (struct t_infolist *infolist)
|
||||
ptr_id = infolist_string (infolist, "id");
|
||||
if (ptr_id)
|
||||
{
|
||||
error = NULL;
|
||||
id = strtoll (ptr_id, &error, 10);
|
||||
if (!error || error[0])
|
||||
if (!util_parse_longlong (ptr_id, 10, &id))
|
||||
id = -1;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -125,7 +125,9 @@ struct t_url_constant url_auth[] =
|
||||
URL_DEF_CONST(AUTH, NTLM),
|
||||
URL_DEF_CONST(AUTH, ANY),
|
||||
URL_DEF_CONST(AUTH, ANYSAFE),
|
||||
#if LIBCURL_VERSION_NUM < 0x081500 /* < 8.21.0 */
|
||||
URL_DEF_CONST(AUTH, DIGEST_IE),
|
||||
#endif
|
||||
URL_DEF_CONST(AUTH, ONLY),
|
||||
#if LIBCURL_VERSION_NUM < 0x080800 /* < 8.8.0 */
|
||||
URL_DEF_CONST(AUTH, NTLM_WB),
|
||||
|
||||
@@ -417,7 +417,7 @@ int
|
||||
util_parse_time (const char *datetime, struct timeval *tv)
|
||||
{
|
||||
char *string, *pos, *pos2, *pos_colon, *pos_hyphen, *pos_dot;
|
||||
char str_usec[16], *error, str_date[128];
|
||||
char str_usec[16], str_date[128];
|
||||
struct tm tm_date, tm_date_gm, tm_date_local, *local_time;
|
||||
time_t time_now, time_gm, time_local;
|
||||
long long value;
|
||||
@@ -488,9 +488,7 @@ util_parse_time (const char *datetime, struct timeval *tv)
|
||||
{
|
||||
strcat (str_usec, "0");
|
||||
}
|
||||
error = NULL;
|
||||
value = strtoll (str_usec, &error, 10);
|
||||
if (error && !error[0])
|
||||
if (util_parse_longlong (str_usec, 10, &value))
|
||||
{
|
||||
/*
|
||||
* 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
|
||||
{
|
||||
/* timestamp format: "1704402062" */
|
||||
error = NULL;
|
||||
value = strtoll (string, &error, 10);
|
||||
if (error && !error[0] && (value >= 0))
|
||||
if (util_parse_longlong (string, 10, &value) && (value >= 0))
|
||||
{
|
||||
tv->tv_sec = (time_t)value;
|
||||
rc = 1;
|
||||
@@ -777,9 +773,10 @@ util_parse_delay (const char *string_delay, unsigned long long default_factor,
|
||||
if (!str_number)
|
||||
return 0;
|
||||
|
||||
errno = 0;
|
||||
error = NULL;
|
||||
*delay = strtoull (str_number, &error, 10);
|
||||
if (!error || error[0])
|
||||
if ((errno == ERANGE) || !error || error[0])
|
||||
{
|
||||
free (str_number);
|
||||
*delay = 0;
|
||||
@@ -846,9 +843,10 @@ util_version_number (const char *version)
|
||||
buf[index_buf] = '\0';
|
||||
if (buf[0])
|
||||
{
|
||||
errno = 0;
|
||||
error = NULL;
|
||||
number = strtoul (buf, &error, 10);
|
||||
if (error && !error[0])
|
||||
if ((errno != ERANGE) && error && !error[0])
|
||||
{
|
||||
if (number > 0xFF)
|
||||
number = 0xFF;
|
||||
|
||||
@@ -41,6 +41,7 @@
|
||||
#include "../core-log.h"
|
||||
#include "../core-string.h"
|
||||
#include "../core-url.h"
|
||||
#include "../core-util.h"
|
||||
#include "../../gui/gui-chat.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_process *new_hook_process;
|
||||
char *stdout_buffer, *stderr_buffer, *error;
|
||||
char *stdout_buffer, *stderr_buffer;
|
||||
const char *ptr_value;
|
||||
long number;
|
||||
int number;
|
||||
|
||||
stdout_buffer = NULL;
|
||||
stderr_buffer = NULL;
|
||||
@@ -149,12 +150,10 @@ hook_process_hashtable (struct t_weechat_plugin *plugin,
|
||||
ptr_value = hashtable_get (options, "buffer_flush");
|
||||
if (ptr_value && ptr_value[0])
|
||||
{
|
||||
error = NULL;
|
||||
number = strtol (ptr_value, &error, 10);
|
||||
if (error && !error[0]
|
||||
if (util_parse_int (ptr_value, 10, &number)
|
||||
&& (number >= 1) && (number <= HOOK_PROCESS_BUFFER_SIZE))
|
||||
{
|
||||
new_hook_process->buffer_flush = (int)number;
|
||||
new_hook_process->buffer_flush = number;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -56,6 +56,8 @@
|
||||
#define WEECHAT_COPYRIGHT_DATE "(C) 2003-2026"
|
||||
#define WEECHAT_WEBSITE "https://weechat.org/"
|
||||
#define WEECHAT_WEBSITE_DOWNLOAD "https://weechat.org/download/"
|
||||
#define WEECHAT_AUTHOR_NAME "Sébastien Helleu"
|
||||
#define WEECHAT_AUTHOR_EMAIL "flashcode@flashtux.org"
|
||||
|
||||
/* log file */
|
||||
#define WEECHAT_LOG_NAME "weechat.log"
|
||||
|
||||
@@ -37,6 +37,7 @@
|
||||
#include "../../core/core-list.h"
|
||||
#include "../../core/core-string.h"
|
||||
#include "../../core/core-utf8.h"
|
||||
#include "../../core/core-util.h"
|
||||
#include "../../plugins/plugin.h"
|
||||
#include "../gui-buffer.h"
|
||||
#include "../gui-color.h"
|
||||
@@ -225,7 +226,6 @@ int
|
||||
gui_color_assign (int *color, const char *color_name)
|
||||
{
|
||||
int flag, extra_attr, color_index, number;
|
||||
char *error;
|
||||
|
||||
/* read extended attributes */
|
||||
extra_attr = 0;
|
||||
@@ -244,9 +244,7 @@ gui_color_assign (int *color, const char *color_name)
|
||||
}
|
||||
|
||||
/* is it a color number? */
|
||||
error = NULL;
|
||||
number = (int)strtol (color_name, &error, 10);
|
||||
if (color_name[0] && error && !error[0] && (number >= 0))
|
||||
if (color_name[0] && util_parse_int (color_name, 10, &number) && (number >= 0))
|
||||
{
|
||||
/* color_name is a number, use this color number */
|
||||
if (number > GUI_COLOR_EXTENDED_MAX)
|
||||
@@ -1357,7 +1355,6 @@ gui_color_palette_add_alias_cb (void *data,
|
||||
const void *key, const void *value)
|
||||
{
|
||||
struct t_gui_color_palette *color_palette;
|
||||
char *error;
|
||||
int number;
|
||||
|
||||
/* make C compiler happy */
|
||||
@@ -1368,9 +1365,7 @@ gui_color_palette_add_alias_cb (void *data,
|
||||
|
||||
if (color_palette && color_palette->alias)
|
||||
{
|
||||
error = NULL;
|
||||
number = (int)strtol ((char *)key, &error, 10);
|
||||
if (error && !error[0])
|
||||
if (util_parse_int ((const char *)key, 10, &number))
|
||||
{
|
||||
hashtable_set (gui_color_hash_palette_alias,
|
||||
color_palette->alias,
|
||||
@@ -1437,8 +1432,7 @@ struct t_gui_color_palette *
|
||||
gui_color_palette_new (int number, const char *value)
|
||||
{
|
||||
struct t_gui_color_palette *new_color_palette;
|
||||
char **items, *pos, *pos2, *error1, *error2, *error3;
|
||||
char *str_alias, *str_rgb, str_number[64];
|
||||
char **items, *pos, *pos2, *str_alias, *str_rgb, str_number[64];
|
||||
int num_items, i, r, g, b;
|
||||
|
||||
if (!value)
|
||||
@@ -1490,16 +1484,11 @@ gui_color_palette_new (int number, const char *value)
|
||||
if (pos2)
|
||||
{
|
||||
pos2[0] = '\0';
|
||||
error1 = NULL;
|
||||
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]
|
||||
if (util_parse_int (str_rgb, 10, &r)
|
||||
&& (r >= 0) && (r <= 1000)
|
||||
&& util_parse_int (pos + 1, 10, &g)
|
||||
&& (g >= 0) && (g <= 1000)
|
||||
&& util_parse_int (pos2 + 1, 10, &b)
|
||||
&& (b >= 0) && (b <= 1000))
|
||||
{
|
||||
new_color_palette->r = r;
|
||||
|
||||
@@ -186,7 +186,7 @@ gui_key_default_bindings (int context, int create_option)
|
||||
BIND("meta-w,meta-b", "/window balance");
|
||||
BIND("meta-w,meta-s", "/window swap");
|
||||
BIND("meta-z", "/window zoom");
|
||||
BIND("meta-=", "/filter toggle");
|
||||
BIND("meta-=", "/mute /filter toggle");
|
||||
BIND("meta--", "/filter toggle @");
|
||||
BIND("meta-0", "/buffer *10");
|
||||
BIND("meta-1", "/buffer *1");
|
||||
|
||||
@@ -36,6 +36,7 @@
|
||||
#include "../../core/core-hook.h"
|
||||
#include "../../core/core-string.h"
|
||||
#include "../../core/core-utf8.h"
|
||||
#include "../../core/core-util.h"
|
||||
#include "../../plugins/plugin.h"
|
||||
#include "../gui-bar.h"
|
||||
#include "../gui-bar-window.h"
|
||||
@@ -355,10 +356,9 @@ gui_mouse_event_concat_gesture (char *key)
|
||||
const char *
|
||||
gui_mouse_event_name_sgr (const char *key)
|
||||
{
|
||||
int length, num_items, is_release;
|
||||
char **items, *error;
|
||||
int length, num_items, is_release, button, x, y;
|
||||
char **items;
|
||||
static char mouse_key[128];
|
||||
long button, x, y;
|
||||
|
||||
if (!key || !key[0])
|
||||
return NULL;
|
||||
@@ -372,14 +372,10 @@ gui_mouse_event_name_sgr (const char *key)
|
||||
if (num_items < 3)
|
||||
goto error;
|
||||
|
||||
error = NULL;
|
||||
button = strtol (items[0], &error, 10);
|
||||
if (!error || error[0])
|
||||
if (!util_parse_int (items[0], 10, &button))
|
||||
goto error;
|
||||
|
||||
error = NULL;
|
||||
x = strtol (items[1], &error, 10);
|
||||
if (!error || error[0])
|
||||
if (!util_parse_int (items[1], 10, &x))
|
||||
goto error;
|
||||
x = (x >= 1) ? x - 1 : 0;
|
||||
|
||||
@@ -388,9 +384,7 @@ gui_mouse_event_name_sgr (const char *key)
|
||||
goto error;
|
||||
is_release = (items[2][length - 1] == 'm') ? 1 : 0;
|
||||
items[2][length - 1] = '\0';
|
||||
error = NULL;
|
||||
y = strtol (items[2], &error, 10);
|
||||
if (!error || error[0])
|
||||
if (!util_parse_int (items[2], 10, &y))
|
||||
goto error;
|
||||
y = (y >= 1) ? y - 1 : 0;
|
||||
|
||||
|
||||
@@ -41,6 +41,7 @@
|
||||
#include "../../core/core-hook.h"
|
||||
#include "../../core/core-log.h"
|
||||
#include "../../core/core-string.h"
|
||||
#include "../../core/core-util.h"
|
||||
#include "../../plugins/plugin.h"
|
||||
#include "../gui-window.h"
|
||||
#include "../gui-bar.h"
|
||||
@@ -372,7 +373,8 @@ gui_window_set_weechat_color (WINDOW *window, int num_color)
|
||||
* if not real white, we use default terminal foreground instead of
|
||||
* white if bold attribute is set
|
||||
*/
|
||||
if ((fg == COLOR_WHITE) && (gui_color[num_color]->attributes & A_BOLD)
|
||||
if (((fg == COLOR_WHITE + 8)
|
||||
|| ((fg == COLOR_WHITE) && (gui_color[num_color]->attributes & A_BOLD)))
|
||||
&& !CONFIG_BOOLEAN(config_look_color_real_white))
|
||||
{
|
||||
fg = -1;
|
||||
@@ -442,7 +444,8 @@ gui_window_set_custom_color_fg (WINDOW *window, int fg)
|
||||
* if not real white, we use default terminal foreground instead of
|
||||
* white if bold attribute is set
|
||||
*/
|
||||
if ((fg == COLOR_WHITE) && (attributes & A_BOLD)
|
||||
if (((fg == COLOR_WHITE + 8)
|
||||
|| ((fg == COLOR_WHITE) && (attributes & A_BOLD)))
|
||||
&& !CONFIG_BOOLEAN(config_look_color_real_white))
|
||||
{
|
||||
fg = -1;
|
||||
@@ -535,7 +538,8 @@ gui_window_set_custom_color_fg_bg (WINDOW *window, int fg, int bg,
|
||||
* if not real white, we use default terminal foreground instead of
|
||||
* white if bold attribute is set
|
||||
*/
|
||||
if ((fg == COLOR_WHITE) && (attributes & A_BOLD)
|
||||
if (((fg == COLOR_WHITE + 8)
|
||||
|| ((fg == COLOR_WHITE) && (attributes & A_BOLD)))
|
||||
&& !CONFIG_BOOLEAN(config_look_color_real_white))
|
||||
{
|
||||
fg = -1;
|
||||
@@ -638,7 +642,7 @@ void
|
||||
gui_window_string_apply_color_fg (unsigned char **string, WINDOW *window)
|
||||
{
|
||||
unsigned char *ptr_string;
|
||||
char str_fg[6], *error;
|
||||
char str_fg[6];
|
||||
int fg, extra_attr, flag;
|
||||
|
||||
ptr_string = *string;
|
||||
@@ -659,9 +663,7 @@ gui_window_string_apply_color_fg (unsigned char **string, WINDOW *window)
|
||||
{
|
||||
memcpy (str_fg, ptr_string, 5);
|
||||
str_fg[5] = '\0';
|
||||
error = NULL;
|
||||
fg = (int)strtol (str_fg, &error, 10);
|
||||
if (error && !error[0])
|
||||
if (util_parse_int (str_fg, 10, &fg))
|
||||
{
|
||||
gui_window_set_custom_color_fg (window,
|
||||
fg | GUI_COLOR_EXTENDED_FLAG | extra_attr);
|
||||
@@ -685,9 +687,7 @@ gui_window_string_apply_color_fg (unsigned char **string, WINDOW *window)
|
||||
str_fg[0] = ptr_string[0];
|
||||
str_fg[1] = ptr_string[1];
|
||||
str_fg[2] = '\0';
|
||||
error = NULL;
|
||||
fg = (int)strtol (str_fg, &error, 10);
|
||||
if (error && !error[0])
|
||||
if (util_parse_int (str_fg, 10, &fg))
|
||||
{
|
||||
gui_window_set_custom_color_fg (window, fg | extra_attr);
|
||||
}
|
||||
@@ -710,7 +710,7 @@ void
|
||||
gui_window_string_apply_color_bg (unsigned char **string, WINDOW *window)
|
||||
{
|
||||
unsigned char *ptr_string;
|
||||
char str_bg[6], *error;
|
||||
char str_bg[6];
|
||||
int bg;
|
||||
|
||||
ptr_string = *string;
|
||||
@@ -724,9 +724,7 @@ gui_window_string_apply_color_bg (unsigned char **string, WINDOW *window)
|
||||
{
|
||||
memcpy (str_bg, ptr_string + 1, 5);
|
||||
str_bg[5] = '\0';
|
||||
error = NULL;
|
||||
bg = (int)strtol (str_bg, &error, 10);
|
||||
if (error && !error[0])
|
||||
if (util_parse_int (str_bg, 10, &bg))
|
||||
{
|
||||
gui_window_set_custom_color_bg (window,
|
||||
bg | GUI_COLOR_EXTENDED_FLAG);
|
||||
@@ -744,9 +742,7 @@ gui_window_string_apply_color_bg (unsigned char **string, WINDOW *window)
|
||||
str_bg[0] = ptr_string[0];
|
||||
str_bg[1] = ptr_string[1];
|
||||
str_bg[2] = '\0';
|
||||
error = NULL;
|
||||
bg = (int)strtol (str_bg, &error, 10);
|
||||
if (error && !error[0])
|
||||
if (util_parse_int (str_bg, 10, &bg))
|
||||
{
|
||||
gui_window_set_custom_color_bg (window, bg);
|
||||
}
|
||||
@@ -769,7 +765,7 @@ void
|
||||
gui_window_string_apply_color_fg_bg (unsigned char **string, WINDOW *window)
|
||||
{
|
||||
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;
|
||||
|
||||
ptr_string = *string;
|
||||
@@ -794,12 +790,10 @@ gui_window_string_apply_color_fg_bg (unsigned char **string, WINDOW *window)
|
||||
{
|
||||
memcpy (str_fg, ptr_string, 5);
|
||||
str_fg[5] = '\0';
|
||||
error = NULL;
|
||||
fg = (int)strtol (str_fg, &error, 10);
|
||||
if (!error || error[0])
|
||||
fg = -1;
|
||||
else
|
||||
if (util_parse_int (str_fg, 10, &fg))
|
||||
fg |= GUI_COLOR_EXTENDED_FLAG | extra_attr;
|
||||
else
|
||||
fg = -1;
|
||||
}
|
||||
ptr_string += 5;
|
||||
}
|
||||
@@ -819,12 +813,10 @@ gui_window_string_apply_color_fg_bg (unsigned char **string, WINDOW *window)
|
||||
str_fg[0] = ptr_string[0];
|
||||
str_fg[1] = ptr_string[1];
|
||||
str_fg[2] = '\0';
|
||||
error = NULL;
|
||||
fg = (int)strtol (str_fg, &error, 10);
|
||||
if (!error || error[0])
|
||||
fg = -1;
|
||||
else
|
||||
if (util_parse_int (str_fg, 10, &fg))
|
||||
fg |= extra_attr;
|
||||
else
|
||||
fg = -1;
|
||||
}
|
||||
ptr_string += 2;
|
||||
}
|
||||
@@ -846,12 +838,10 @@ gui_window_string_apply_color_fg_bg (unsigned char **string, WINDOW *window)
|
||||
{
|
||||
memcpy (str_bg, ptr_string + 1, 5);
|
||||
str_bg[5] = '\0';
|
||||
error = NULL;
|
||||
bg = (int)strtol (str_bg, &error, 10);
|
||||
if (!error || error[0])
|
||||
bg = -1;
|
||||
else
|
||||
if (util_parse_int (str_bg, 10, &bg))
|
||||
bg |= GUI_COLOR_EXTENDED_FLAG;
|
||||
else
|
||||
bg = -1;
|
||||
}
|
||||
ptr_string += 6;
|
||||
}
|
||||
@@ -865,9 +855,7 @@ gui_window_string_apply_color_fg_bg (unsigned char **string, WINDOW *window)
|
||||
str_bg[0] = ptr_string[0];
|
||||
str_bg[1] = ptr_string[1];
|
||||
str_bg[2] = '\0';
|
||||
error = NULL;
|
||||
bg = (int)strtol (str_bg, &error, 10);
|
||||
if (!error || error[0])
|
||||
if (!util_parse_int (str_bg, 10, &bg))
|
||||
bg = -1;
|
||||
}
|
||||
ptr_string += 2;
|
||||
@@ -893,7 +881,7 @@ void
|
||||
gui_window_string_apply_color_pair (unsigned char **string, WINDOW *window)
|
||||
{
|
||||
unsigned char *ptr_string;
|
||||
char str_pair[6], *error;
|
||||
char str_pair[6];
|
||||
int pair;
|
||||
|
||||
ptr_string = *string;
|
||||
@@ -906,12 +894,8 @@ gui_window_string_apply_color_pair (unsigned char **string, WINDOW *window)
|
||||
{
|
||||
memcpy (str_pair, ptr_string, 5);
|
||||
str_pair[5] = '\0';
|
||||
error = NULL;
|
||||
pair = (int)strtol (str_pair, &error, 10);
|
||||
if (error && !error[0])
|
||||
{
|
||||
if (util_parse_int (str_pair, 10, &pair))
|
||||
gui_window_set_custom_color_pair (window, pair);
|
||||
}
|
||||
}
|
||||
ptr_string += 5;
|
||||
}
|
||||
@@ -930,7 +914,7 @@ void
|
||||
gui_window_string_apply_color_weechat (unsigned char **string, WINDOW *window)
|
||||
{
|
||||
unsigned char *ptr_string;
|
||||
char str_number[3], *error;
|
||||
char str_number[3];
|
||||
int weechat_color;
|
||||
|
||||
ptr_string = *string;
|
||||
@@ -942,13 +926,8 @@ gui_window_string_apply_color_weechat (unsigned char **string, WINDOW *window)
|
||||
str_number[0] = ptr_string[0];
|
||||
str_number[1] = ptr_string[1];
|
||||
str_number[2] = '\0';
|
||||
error = NULL;
|
||||
weechat_color = (int)strtol (str_number, &error, 10);
|
||||
if (error && !error[0])
|
||||
{
|
||||
gui_window_set_weechat_color (window,
|
||||
weechat_color);
|
||||
}
|
||||
if (util_parse_int (str_number, 10, &weechat_color))
|
||||
gui_window_set_weechat_color (window, weechat_color);
|
||||
}
|
||||
ptr_string += 2;
|
||||
}
|
||||
@@ -2517,7 +2496,6 @@ void
|
||||
gui_window_bare_display_toggle (const char *delay)
|
||||
{
|
||||
long seconds;
|
||||
char *error;
|
||||
|
||||
gui_window_bare_display ^= 1;
|
||||
|
||||
@@ -2529,9 +2507,7 @@ gui_window_bare_display_toggle (const char *delay)
|
||||
gui_mouse_disable ();
|
||||
if (delay)
|
||||
{
|
||||
error = NULL;
|
||||
seconds = strtol (delay, &error, 10);
|
||||
if (error && !error[0] && (seconds >= 0))
|
||||
if (util_parse_long (delay, 10, &seconds) && (seconds >= 0))
|
||||
{
|
||||
if (gui_window_bare_display_timer)
|
||||
{
|
||||
|
||||
@@ -2153,7 +2153,6 @@ gui_bar_item_focus_buffer_nicklist_cb (const void *pointer,
|
||||
const char *str_window, *str_buffer, *str_bar_item_line;
|
||||
struct t_gui_window *window;
|
||||
struct t_gui_buffer *buffer;
|
||||
char *error;
|
||||
|
||||
/* make C compiler happy */
|
||||
(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");
|
||||
if (!str_bar_item_line || !str_bar_item_line[0])
|
||||
return NULL;
|
||||
if (!util_parse_int (str_bar_item_line, 10, &bar_item_line))
|
||||
return NULL;
|
||||
|
||||
/* get window */
|
||||
str_window = hashtable_get (info, "_window");
|
||||
@@ -2193,11 +2194,6 @@ gui_bar_item_focus_buffer_nicklist_cb (const void *pointer,
|
||||
if (!buffer)
|
||||
return NULL;
|
||||
|
||||
error = NULL;
|
||||
bar_item_line = (int) strtol (str_bar_item_line, &error, 10);
|
||||
if (!error || error[0])
|
||||
return NULL;
|
||||
|
||||
i = 0;
|
||||
ptr_group = NULL;
|
||||
ptr_nick = NULL;
|
||||
|
||||
+12
-21
@@ -39,6 +39,7 @@
|
||||
#include "../core/core-infolist.h"
|
||||
#include "../core/core-log.h"
|
||||
#include "../core/core-string.h"
|
||||
#include "../core/core-util.h"
|
||||
#include "../plugins/plugin.h"
|
||||
#include "gui-bar.h"
|
||||
#include "gui-bar-item.h"
|
||||
@@ -1018,9 +1019,7 @@ gui_bar_config_check_size (const void *pointer, void *data,
|
||||
const char *value)
|
||||
{
|
||||
struct t_gui_bar *ptr_bar;
|
||||
long number;
|
||||
char *error;
|
||||
int new_value, current_size;
|
||||
int new_value, current_size, number;
|
||||
|
||||
/* make C compiler happy */
|
||||
(void) pointer;
|
||||
@@ -1032,30 +1031,26 @@ gui_bar_config_check_size (const void *pointer, void *data,
|
||||
new_value = -1;
|
||||
if (strncmp (value, "++", 2) == 0)
|
||||
{
|
||||
error = NULL;
|
||||
number = strtol (value + 2, &error, 10);
|
||||
if (error && !error[0])
|
||||
if (util_parse_int (value + 2, 10, &number))
|
||||
{
|
||||
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;
|
||||
}
|
||||
}
|
||||
else if (strncmp (value, "--", 2) == 0)
|
||||
{
|
||||
error = NULL;
|
||||
number = strtol (value + 2, &error, 10);
|
||||
if (error && !error[0])
|
||||
if (util_parse_int (value + 2, 10, &number))
|
||||
{
|
||||
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;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
error = NULL;
|
||||
number = strtol (value, &error, 10);
|
||||
if (error && !error[0])
|
||||
{
|
||||
if (util_parse_int (value, 10, &number))
|
||||
new_value = number;
|
||||
}
|
||||
}
|
||||
if (new_value < 0)
|
||||
return 0;
|
||||
@@ -2062,9 +2057,8 @@ gui_bar_scroll (struct t_gui_bar *bar, struct t_gui_window *window,
|
||||
const char *scroll)
|
||||
{
|
||||
struct t_gui_bar_window *ptr_bar_win;
|
||||
long number;
|
||||
char *str, *error;
|
||||
int length, add_x, add, percent, scroll_beginning, scroll_end;
|
||||
char *str;
|
||||
int length, add_x, add, percent, scroll_beginning, scroll_end, number;
|
||||
|
||||
if (!bar)
|
||||
return 0;
|
||||
@@ -2132,10 +2126,7 @@ gui_bar_scroll (struct t_gui_bar *bar, struct t_gui_window *window,
|
||||
if (!str)
|
||||
return 0;
|
||||
|
||||
error = NULL;
|
||||
number = strtol (str, &error, 10);
|
||||
|
||||
if (!error || error[0] || (number <= 0))
|
||||
if (!util_parse_int (str, 10, &number) || (number <= 0))
|
||||
{
|
||||
free (str);
|
||||
return 0;
|
||||
|
||||
@@ -49,6 +49,7 @@
|
||||
#include "../core/core-secure-buffer.h"
|
||||
#include "../core/core-string.h"
|
||||
#include "../core/core-utf8.h"
|
||||
#include "../core/core-util.h"
|
||||
#include "../plugins/plugin.h"
|
||||
#include "gui-buffer.h"
|
||||
#include "gui-chat.h"
|
||||
@@ -3278,6 +3279,35 @@ gui_buffer_search_by_number (int number)
|
||||
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.
|
||||
*/
|
||||
|
||||
@@ -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,
|
||||
const char *name);
|
||||
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 int gui_buffer_count_merged_buffers (int number);
|
||||
extern void gui_buffer_clear (struct t_gui_buffer *buffer);
|
||||
|
||||
@@ -337,7 +337,7 @@ fset_mouse_init (void)
|
||||
weechat_hashtable_set (
|
||||
keys,
|
||||
"@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 (
|
||||
keys,
|
||||
"@chat(" FSET_PLUGIN_NAME "." FSET_BUFFER_NAME "):button2*",
|
||||
|
||||
@@ -1358,7 +1358,7 @@ irc_info_init (void)
|
||||
weechat_hook_info (
|
||||
"irc_nick_from_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);
|
||||
weechat_hook_info (
|
||||
"irc_nick_color",
|
||||
|
||||
@@ -481,10 +481,9 @@ irc_list_buffer_set_title (struct t_irc_server *server)
|
||||
|
||||
snprintf (str_title, sizeof (str_title),
|
||||
_("%d channels (total: %d) | Filter: %s | Sort: %s | "
|
||||
"Key(input): "
|
||||
"ctrl+j=join channel, "
|
||||
"($)=refresh, "
|
||||
"(q)=close buffer"),
|
||||
"Keys: ctrl+j=join channel | "
|
||||
"Input: $=refresh, s:x,y=sort, words=filter, *=reset filter, "
|
||||
"q=close buffer"),
|
||||
num_channels,
|
||||
num_channels_total,
|
||||
(server->list->filter) ? server->list->filter : "*",
|
||||
|
||||
@@ -208,7 +208,8 @@ irc_protocol_tags_add_cb (void *data,
|
||||
*/
|
||||
|
||||
const char *
|
||||
irc_protocol_tags (struct t_irc_protocol_ctxt *ctxt, const char *extra_tags)
|
||||
irc_protocol_tags_cmd (struct t_irc_protocol_ctxt *ctxt, const char *command,
|
||||
const char *extra_tags)
|
||||
{
|
||||
static char string[4096];
|
||||
const char *ptr_tag_batch, *ptr_nick, *ptr_address;
|
||||
@@ -222,7 +223,7 @@ irc_protocol_tags (struct t_irc_protocol_ctxt *ctxt, const char *extra_tags)
|
||||
ptr_nick = NULL;
|
||||
ptr_address = NULL;
|
||||
|
||||
is_numeric = irc_protocol_is_numeric_command (ctxt->command);
|
||||
is_numeric = irc_protocol_is_numeric_command (command);
|
||||
has_irc_tags = (ctxt->tags
|
||||
&& weechat_hashtable_get_integer (ctxt->tags,
|
||||
"items_count") > 0);
|
||||
@@ -287,9 +288,9 @@ irc_protocol_tags (struct t_irc_protocol_ctxt *ctxt, const char *extra_tags)
|
||||
}
|
||||
}
|
||||
|
||||
if (ctxt->command && ctxt->command[0])
|
||||
if (command && command[0])
|
||||
{
|
||||
log_level = irc_protocol_log_level_for_command (ctxt->command);
|
||||
log_level = irc_protocol_log_level_for_command (command);
|
||||
if (log_level > 0)
|
||||
{
|
||||
snprintf (str_log_level, sizeof (str_log_level),
|
||||
@@ -299,8 +300,8 @@ irc_protocol_tags (struct t_irc_protocol_ctxt *ctxt, const char *extra_tags)
|
||||
|
||||
snprintf (string, sizeof (string),
|
||||
"%s%s%s%s%s%s%s%s%s%s%s%s%s%s",
|
||||
(ctxt->command && ctxt->command[0]) ? "irc_" : "",
|
||||
(ctxt->command && ctxt->command[0]) ? ctxt->command : "",
|
||||
(command && command[0]) ? "irc_" : "",
|
||||
(command && command[0]) ? command : "",
|
||||
(is_numeric) ? "," : "",
|
||||
(is_numeric) ? "irc_numeric" : "",
|
||||
(str_irc_tags && (*str_irc_tags)[0]) ? "," : "",
|
||||
@@ -322,6 +323,16 @@ irc_protocol_tags (struct t_irc_protocol_ctxt *ctxt, const char *extra_tags)
|
||||
return (string[0] == ',') ? string + 1 : string;
|
||||
}
|
||||
|
||||
/*
|
||||
* Build tags list with IRC command and optional tags and nick.
|
||||
*/
|
||||
|
||||
const char *
|
||||
irc_protocol_tags (struct t_irc_protocol_ctxt *ctxt, const char *extra_tags)
|
||||
{
|
||||
return irc_protocol_tags_cmd (ctxt, ctxt->command, extra_tags);
|
||||
}
|
||||
|
||||
/*
|
||||
* Build a string with nick and optional address.
|
||||
*
|
||||
@@ -6659,7 +6670,7 @@ IRC_PROTOCOL_CALLBACK(366)
|
||||
ctxt->server, NULL, ctxt->command, "names", ptr_channel->buffer),
|
||||
ctxt->date,
|
||||
ctxt->date_usec,
|
||||
irc_protocol_tags (ctxt, NULL),
|
||||
irc_protocol_tags_cmd (ctxt, "353", NULL),
|
||||
_("%sNicks %s%s%s%s: %s[%s%s]"),
|
||||
weechat_prefix ("network"),
|
||||
IRC_COLOR_CHAT_CHANNEL,
|
||||
|
||||
@@ -703,7 +703,7 @@ logger_config_init (void)
|
||||
".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\", "
|
||||
"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 should first set the compression type "
|
||||
"via option logger.file.rotation_compression_type"),
|
||||
|
||||
@@ -624,6 +624,7 @@ plugin_load (const char *filename, int init_plugin, int argc, char **argv)
|
||||
new_plugin->strncasecmp = &string_strncasecmp;
|
||||
new_plugin->strncasecmp_range = &string_strncasecmp_range;
|
||||
new_plugin->strcmp_ignore_chars = &string_strcmp_ignore_chars;
|
||||
new_plugin->string_memcmp_constant_time = &string_memcmp_constant_time;
|
||||
new_plugin->strcasestr = &string_strcasestr;
|
||||
new_plugin->strlen_screen = &gui_chat_strlen_screen;
|
||||
new_plugin->string_match = &string_match;
|
||||
|
||||
@@ -33,6 +33,7 @@
|
||||
#include "../../weechat-plugin.h"
|
||||
#include "../relay.h"
|
||||
#include "relay-irc.h"
|
||||
#include "../relay-auth.h"
|
||||
#include "../relay-buffer.h"
|
||||
#include "../relay-client.h"
|
||||
#include "../relay-config.h"
|
||||
@@ -1701,7 +1702,7 @@ relay_irc_recv (struct t_relay_client *client, const char *data)
|
||||
NULL, NULL, NULL);
|
||||
if (password)
|
||||
{
|
||||
if (strcmp (password, pos_password) == 0)
|
||||
if (relay_auth_password_equals (password, pos_password))
|
||||
{
|
||||
RELAY_IRC_DATA(client, password_ok) = 1;
|
||||
weechat_hook_signal_send ("relay_client_auth_ok",
|
||||
|
||||
@@ -102,6 +102,66 @@ relay_auth_generate_nonce (int size)
|
||||
return nonce_hexa;
|
||||
}
|
||||
|
||||
/*
|
||||
* Compare two passwords for equality in constant time.
|
||||
*
|
||||
* HMAC both sides with a fresh random key, then compare the fixed-size
|
||||
* MACs. This hides both the per-byte comparison and the password length
|
||||
* from a timing-side-channel observer.
|
||||
*
|
||||
* Both messages are prefixed with a zero byte so empty passwords still
|
||||
* produce a valid HMAC (the underlying crypto API rejects zero-length
|
||||
* messages); the prefix is identical on both sides so equal inputs
|
||||
* still yield equal MACs.
|
||||
*
|
||||
* Return:
|
||||
* 1: passwords are equal
|
||||
* 0: passwords are not equal (or an error occurred)
|
||||
*/
|
||||
|
||||
int
|
||||
relay_auth_password_equals (const char *password1, const char *password2)
|
||||
{
|
||||
unsigned char key[32];
|
||||
char hmac1[64], hmac2[64];
|
||||
char *buf1, *buf2;
|
||||
int buf1_size, buf2_size, hmac1_size, hmac2_size, rc;
|
||||
|
||||
if (!password1 || !password2)
|
||||
return 0;
|
||||
|
||||
rc = 0;
|
||||
buf1_size = strlen (password1) + 1;
|
||||
buf2_size = strlen (password2) + 1;
|
||||
buf1 = malloc (buf1_size);
|
||||
buf2 = malloc (buf2_size);
|
||||
if (buf1 && buf2)
|
||||
{
|
||||
buf1[0] = 0;
|
||||
memcpy (buf1 + 1, password1, buf1_size - 1);
|
||||
buf2[0] = 0;
|
||||
memcpy (buf2 + 1, password2, buf2_size - 1);
|
||||
gcry_create_nonce (key, sizeof (key));
|
||||
if (weechat_crypto_hmac (key, sizeof (key),
|
||||
buf1, buf1_size,
|
||||
"sha256",
|
||||
hmac1, &hmac1_size)
|
||||
&& weechat_crypto_hmac (key, sizeof (key),
|
||||
buf2, buf2_size,
|
||||
"sha256",
|
||||
hmac2, &hmac2_size)
|
||||
&& (hmac1_size == hmac2_size)
|
||||
&& (weechat_string_memcmp_constant_time (
|
||||
hmac1, hmac2, hmac1_size) == 0))
|
||||
{
|
||||
rc = 1;
|
||||
}
|
||||
}
|
||||
free (buf1);
|
||||
free (buf2);
|
||||
return rc;
|
||||
}
|
||||
|
||||
/*
|
||||
* Check if password received as plain text is valid.
|
||||
*
|
||||
@@ -127,7 +187,7 @@ relay_auth_check_password_plain (struct t_relay_client *client,
|
||||
return -1;
|
||||
}
|
||||
|
||||
return (strcmp (password, relay_password) == 0) ? 0 : -2;
|
||||
return relay_auth_password_equals (password, relay_password) ? 0 : -2;
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -347,8 +407,9 @@ relay_auth_check_hash_sha (const char *hash_algo,
|
||||
const char *hash_sha,
|
||||
const char *relay_password)
|
||||
{
|
||||
char *salt_password, hash[512 / 8], hash_hexa[((512 / 8) * 2) + 1];
|
||||
int rc, length, hash_size;
|
||||
char *salt_password, *hash_sha_upper, hash[512 / 8];
|
||||
char hash_hexa[((512 / 8) * 2) + 1];
|
||||
int rc, length, hash_size, hash_hexa_len;
|
||||
|
||||
rc = 0;
|
||||
|
||||
@@ -366,10 +427,23 @@ relay_auth_check_hash_sha (const char *hash_algo,
|
||||
hash_algo,
|
||||
hash, &hash_size))
|
||||
{
|
||||
weechat_string_base_encode ("16", hash, hash_size,
|
||||
hash_hexa);
|
||||
if (weechat_strcasecmp (hash_hexa, hash_sha) == 0)
|
||||
hash_hexa_len = weechat_string_base_encode ("16", hash, hash_size,
|
||||
hash_hexa);
|
||||
/*
|
||||
* Compare in constant time to defeat timing attacks: the
|
||||
* client-supplied hash is normalized to uppercase to match
|
||||
* the output of base16 encoding, then compared byte-for-byte
|
||||
* with no early exit.
|
||||
*/
|
||||
hash_sha_upper = weechat_string_toupper (hash_sha);
|
||||
if (hash_sha_upper
|
||||
&& ((int)strlen (hash_sha_upper) == hash_hexa_len)
|
||||
&& (weechat_string_memcmp_constant_time (
|
||||
hash_hexa, hash_sha_upper, hash_hexa_len) == 0))
|
||||
{
|
||||
rc = 1;
|
||||
}
|
||||
free (hash_sha_upper);
|
||||
}
|
||||
free (salt_password);
|
||||
}
|
||||
@@ -393,8 +467,8 @@ relay_auth_check_hash_pbkdf2 (const char *hash_pbkdf2_algo,
|
||||
const char *hash_pbkdf2,
|
||||
const char *relay_password)
|
||||
{
|
||||
char hash[512 / 8], hash_hexa[((512 / 8) * 2) + 1];
|
||||
int rc, hash_size;
|
||||
char *hash_pbkdf2_upper, hash[512 / 8], hash_hexa[((512 / 8) * 2) + 1];
|
||||
int rc, hash_size, hash_hexa_len;
|
||||
|
||||
rc = 0;
|
||||
|
||||
@@ -407,9 +481,18 @@ relay_auth_check_hash_pbkdf2 (const char *hash_pbkdf2_algo,
|
||||
iterations,
|
||||
hash, &hash_size))
|
||||
{
|
||||
weechat_string_base_encode ("16", hash, hash_size, hash_hexa);
|
||||
if (weechat_strcasecmp (hash_hexa, hash_pbkdf2) == 0)
|
||||
hash_hexa_len = weechat_string_base_encode ("16", hash, hash_size,
|
||||
hash_hexa);
|
||||
/* see relay_auth_check_hash_sha for rationale */
|
||||
hash_pbkdf2_upper = weechat_string_toupper (hash_pbkdf2);
|
||||
if (hash_pbkdf2_upper
|
||||
&& ((int)strlen (hash_pbkdf2_upper) == hash_hexa_len)
|
||||
&& (weechat_string_memcmp_constant_time (
|
||||
hash_hexa, hash_pbkdf2_upper, hash_hexa_len) == 0))
|
||||
{
|
||||
rc = 1;
|
||||
}
|
||||
free (hash_pbkdf2_upper);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -39,6 +39,8 @@ extern char *relay_auth_password_hash_algo_name[];
|
||||
|
||||
extern int relay_auth_password_hash_algo_search (const char *name);
|
||||
extern char *relay_auth_generate_nonce (int size);
|
||||
extern int relay_auth_password_equals (const char *password1,
|
||||
const char *password2);
|
||||
extern int relay_auth_check_password_plain (struct t_relay_client *client,
|
||||
const char *password,
|
||||
const char *relay_password);
|
||||
|
||||
@@ -93,6 +93,7 @@ struct t_config_option *relay_config_network_tls_cert_key = NULL;
|
||||
struct t_config_option *relay_config_network_tls_priorities = NULL;
|
||||
struct t_config_option *relay_config_network_totp_secret = NULL;
|
||||
struct t_config_option *relay_config_network_totp_window = NULL;
|
||||
struct t_config_option *relay_config_network_unix_socket_permissions = NULL;
|
||||
struct t_config_option *relay_config_network_websocket_allowed_origins = NULL;
|
||||
struct t_config_option *relay_config_network_websocket_permessage_deflate = NULL;
|
||||
|
||||
@@ -481,6 +482,27 @@ relay_config_change_network_tls_priorities (const void *pointer, void *data,
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* Check if option "relay.network.unix_socket_permissions" is valid.
|
||||
*
|
||||
* Return:
|
||||
* 1: value is valid
|
||||
* 0: value is not valid
|
||||
*/
|
||||
|
||||
int
|
||||
relay_config_check_network_unix_socket_permissions (const void *pointer, void *data,
|
||||
struct t_config_option *option,
|
||||
const char *value)
|
||||
{
|
||||
/* make C compiler happy */
|
||||
(void) pointer;
|
||||
(void) data;
|
||||
(void) option;
|
||||
|
||||
return value && (strlen (value) == 3) && weechat_util_parse_long (value, 8, NULL);
|
||||
}
|
||||
|
||||
/*
|
||||
* Callback for changes on option "relay.network.websocket_allowed_origins".
|
||||
*/
|
||||
@@ -1682,8 +1704,8 @@ relay_config_init (void)
|
||||
relay_config_file, relay_config_section_network,
|
||||
"password_hash_algo", "string",
|
||||
N_("comma separated list of hash algorithms used for password "
|
||||
"authentication in weechat protocol, among these values: "
|
||||
"\"plain\" (password in plain text, not hashed), \"sha256\", "
|
||||
"authentication in \"api\" and \"weechat\" protocols, 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 \"*\" "
|
||||
@@ -1696,8 +1718,8 @@ relay_config_init (void)
|
||||
relay_config_network_password_hash_iterations = weechat_config_new_option (
|
||||
relay_config_file, relay_config_section_network,
|
||||
"password_hash_iterations", "integer",
|
||||
N_("number of iterations asked to the client in weechat protocol "
|
||||
"when a hashed password with algorithm PBKDF2 is used for "
|
||||
N_("number of iterations asked to the client in \"api\" and \"weechat\" "
|
||||
"protocols 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"),
|
||||
@@ -1757,6 +1779,15 @@ relay_config_init (void)
|
||||
"(0 or 1 are recommended values)"),
|
||||
NULL, 0, 256, "0", NULL, 0,
|
||||
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL);
|
||||
relay_config_network_unix_socket_permissions = weechat_config_new_option (
|
||||
relay_config_file, relay_config_section_network,
|
||||
"unix_socket_permissions", "string",
|
||||
N_("permissions for the Unix socket, as octal value (see man chmod); "
|
||||
"it must be a number with 3 digits, each between 0 and 7"),
|
||||
NULL, 0, 0, "700", NULL, 0,
|
||||
&relay_config_check_network_unix_socket_permissions, NULL, NULL,
|
||||
NULL, NULL, NULL,
|
||||
NULL, NULL, NULL);
|
||||
relay_config_network_websocket_allowed_origins = weechat_config_new_option (
|
||||
relay_config_file, relay_config_section_network,
|
||||
"websocket_allowed_origins", "string",
|
||||
|
||||
@@ -62,6 +62,7 @@ extern struct t_config_option *relay_config_network_tls_cert_key;
|
||||
extern struct t_config_option *relay_config_network_tls_priorities;
|
||||
extern struct t_config_option *relay_config_network_totp_secret;
|
||||
extern struct t_config_option *relay_config_network_totp_window;
|
||||
extern struct t_config_option *relay_config_network_unix_socket_permissions;
|
||||
extern struct t_config_option *relay_config_network_websocket_allowed_origins;
|
||||
extern struct t_config_option *relay_config_network_websocket_permessage_deflate;
|
||||
|
||||
|
||||
@@ -247,7 +247,7 @@ relay_info_init (void)
|
||||
N_("number of clients for relay"),
|
||||
/* TRANSLATORS: please do not translate the status names, they must be used in English */
|
||||
N_("protocol,status (both are optional, for each argument \"*\" "
|
||||
"means all; protocols: irc, weechat; statuses: connecting, "
|
||||
"means all; protocols: api, irc, weechat; statuses: connecting, "
|
||||
"waiting_auth, connected, auth_failed, disconnected)"),
|
||||
&relay_info_info_relay_client_count_cb, NULL, NULL);
|
||||
/* infolist hooks */
|
||||
|
||||
@@ -498,6 +498,7 @@ int
|
||||
relay_server_create_socket (struct t_relay_server *server)
|
||||
{
|
||||
int domain, set, max_clients, addr_size, rc;
|
||||
long unix_socket_perms;
|
||||
struct sockaddr_in server_addr;
|
||||
struct sockaddr_in6 server_addr6;
|
||||
struct sockaddr_un server_addr_unix;
|
||||
@@ -691,9 +692,27 @@ relay_server_create_socket (struct t_relay_server *server)
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* change permissions: only the owner can use the unix socket */
|
||||
/* change permissions on the unix socket */
|
||||
if (server->unix_socket)
|
||||
chmod (server->path, 0700);
|
||||
{
|
||||
if (!weechat_util_parse_long (
|
||||
weechat_config_string (relay_config_network_unix_socket_permissions),
|
||||
8, &unix_socket_perms))
|
||||
{
|
||||
/* default: owner only (rwx------) */
|
||||
unix_socket_perms = 0700;
|
||||
}
|
||||
if (chmod (server->path, unix_socket_perms) < 0)
|
||||
{
|
||||
weechat_printf (
|
||||
NULL,
|
||||
_("%s%s: warning: failed to set permissions on path %s (%s): "
|
||||
"error %d %s"),
|
||||
weechat_prefix ("error"), RELAY_PLUGIN_NAME,
|
||||
server->path, server->protocol_string,
|
||||
errno, strerror (errno));
|
||||
}
|
||||
}
|
||||
|
||||
#ifdef SOMAXCONN
|
||||
if (listen (server->sock, SOMAXCONN) != 0)
|
||||
|
||||
@@ -532,7 +532,7 @@ relay_websocket_inflate (const void *data, size_t size, z_stream *strm,
|
||||
int rc;
|
||||
unsigned char append_bytes[4] = { 0x00, 0x00, 0xFF, 0xFF };
|
||||
Bytef *data2, *dest, *dest2;
|
||||
uLongf size2, dest_size;
|
||||
uLongf size2, dest_size, new_size;
|
||||
|
||||
if (!data || (size == 0) || !strm || !size_decompressed)
|
||||
return NULL;
|
||||
@@ -549,8 +549,13 @@ relay_websocket_inflate (const void *data, size_t size, z_stream *strm,
|
||||
memcpy (data2, data, size);
|
||||
memcpy (data2 + size, append_bytes, sizeof (append_bytes));
|
||||
|
||||
/* estimate the decompressed size, by default 10 * size */
|
||||
dest_size = 10 * size2;
|
||||
/*
|
||||
* estimate the decompressed size, by default 10 * size, capped to the
|
||||
* maximum allowed size (also prevents an integer overflow on the
|
||||
* multiplication)
|
||||
*/
|
||||
dest_size = (size2 > WEBSOCKET_INFLATE_MAX_SIZE / 10) ?
|
||||
WEBSOCKET_INFLATE_MAX_SIZE : 10 * size2;
|
||||
dest = malloc (dest_size);
|
||||
if (!dest)
|
||||
goto error;
|
||||
@@ -579,8 +584,19 @@ relay_websocket_inflate (const void *data, size_t size, z_stream *strm,
|
||||
&& (strm->avail_in > 0)))
|
||||
{
|
||||
/* output buffer is not large enough */
|
||||
strm->avail_out += dest_size;
|
||||
dest_size *= 2;
|
||||
if (dest_size >= WEBSOCKET_INFLATE_MAX_SIZE)
|
||||
{
|
||||
/*
|
||||
* decompressed data is too large: reject the frame
|
||||
* (protection against a "deflate bomb")
|
||||
*/
|
||||
goto error;
|
||||
}
|
||||
/* double the buffer, capped to the maximum allowed size */
|
||||
new_size = (dest_size > WEBSOCKET_INFLATE_MAX_SIZE / 2) ?
|
||||
WEBSOCKET_INFLATE_MAX_SIZE : dest_size * 2;
|
||||
strm->avail_out += (uInt)(new_size - dest_size);
|
||||
dest_size = new_size;
|
||||
dest2 = realloc (dest, dest_size);
|
||||
if (!dest2)
|
||||
goto error;
|
||||
|
||||
@@ -41,6 +41,13 @@
|
||||
|
||||
#define WEBSOCKET_SUB_PROTOCOL_API_WEECHAT "api.weechat"
|
||||
|
||||
/*
|
||||
* maximum size of a decompressed websocket frame (with "permessage-deflate"):
|
||||
* used as an upper bound when inflating, to prevent a small compressed frame
|
||||
* from decompressing to an unbounded amount of data ("deflate bomb")
|
||||
*/
|
||||
#define WEBSOCKET_INFLATE_MAX_SIZE (8 * 1024 * 1024)
|
||||
|
||||
struct t_relay_client;
|
||||
struct t_relay_http_request;
|
||||
|
||||
|
||||
@@ -42,8 +42,7 @@
|
||||
|
||||
|
||||
WEECHAT_PLUGIN_NAME(RELAY_PLUGIN_NAME);
|
||||
WEECHAT_PLUGIN_DESCRIPTION(N_("Relay WeeChat data to remote application "
|
||||
"(irc/weechat protocols)"));
|
||||
WEECHAT_PLUGIN_DESCRIPTION(N_("Relay WeeChat data to remote applications"));
|
||||
WEECHAT_PLUGIN_AUTHOR("Sébastien Helleu <flashcode@flashtux.org>");
|
||||
WEECHAT_PLUGIN_VERSION(WEECHAT_VERSION);
|
||||
WEECHAT_PLUGIN_LICENSE(WEECHAT_LICENSE);
|
||||
|
||||
@@ -779,11 +779,12 @@ script_buffer_refresh (int clear)
|
||||
else
|
||||
{
|
||||
snprintf (str_title, sizeof (str_title),
|
||||
_("%d/%d scripts (filter: %s) | Sort: %s | "
|
||||
_("%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"),
|
||||
"Input: $=refresh, s:x,y=sort, words=filter, *=reset filter, "
|
||||
"q=close buffer | "
|
||||
"Mouse: left=select, right=install/remove"),
|
||||
script_repo_count_displayed,
|
||||
script_repo_count,
|
||||
(script_repo_filter) ? script_repo_filter : "*",
|
||||
|
||||
@@ -76,7 +76,7 @@ struct t_weelist_item;
|
||||
* please change the date with current one; for a second change at same
|
||||
* date, increment the 01, otherwise please keep 01.
|
||||
*/
|
||||
#define WEECHAT_PLUGIN_API_VERSION "20251112-01"
|
||||
#define WEECHAT_PLUGIN_API_VERSION "20260530-01"
|
||||
|
||||
/* macros for defining plugin infos */
|
||||
#define WEECHAT_PLUGIN_NAME(__name) \
|
||||
@@ -348,6 +348,8 @@ struct t_weechat_plugin
|
||||
int max, int range);
|
||||
int (*strcmp_ignore_chars) (const char *string1, const char *string2,
|
||||
const char *chars_ignored, int case_sensitive);
|
||||
int (*string_memcmp_constant_time) (const void *area1, const void *area2,
|
||||
size_t size);
|
||||
const char *(*strcasestr) (const char *string, const char *search);
|
||||
int (*strlen_screen) (const char *string);
|
||||
int (*string_match) (const char *string, const char *mask,
|
||||
@@ -1348,6 +1350,9 @@ extern int weechat_plugin_end (struct t_weechat_plugin *plugin);
|
||||
(weechat_plugin->strcmp_ignore_chars)(__string1, __string2, \
|
||||
__chars_ignored, \
|
||||
__case_sensitive)
|
||||
#define weechat_string_memcmp_constant_time(__area1, __area2, __size) \
|
||||
(weechat_plugin->string_memcmp_constant_time)(__area1, __area2, \
|
||||
__size)
|
||||
#define weechat_strcasestr(__string, __search) \
|
||||
(weechat_plugin->strcasestr)(__string, __search)
|
||||
#define weechat_strlen_screen(__string) \
|
||||
|
||||
@@ -296,7 +296,7 @@ TEST(CoreCommand, Bar)
|
||||
|
||||
TEST(CoreCommand, Buffer)
|
||||
{
|
||||
char string[1024];
|
||||
char command[1024], string[1024];
|
||||
|
||||
WEE_CMD_CORE_ERROR_GENERIC("/buffer xxx");
|
||||
|
||||
@@ -336,11 +336,57 @@ TEST(CoreCommand, Buffer)
|
||||
/* /buffer move */
|
||||
WEE_CMD_CORE_MIN_ARGS("/buffer move", "/buffer move");
|
||||
WEE_CMD_CORE_ERROR_MSG("/buffer move xxx", "Invalid buffer number: \"xxx\"");
|
||||
snprintf (command, sizeof (command), "/buffer move +%d", INT_MAX - 1);
|
||||
snprintf (string, sizeof (string), "Invalid buffer number: \"+%d\"", INT_MAX - 1);
|
||||
WEE_CMD_CORE_ERROR_MSG(command, string);
|
||||
snprintf (command, sizeof (command), "/buffer move -%d", INT_MAX - 1);
|
||||
snprintf (string, sizeof (string), "Invalid buffer number: \"-%d\"", INT_MAX - 1);
|
||||
WEE_CMD_CORE_ERROR_MSG(command, string);
|
||||
snprintf (command, sizeof (command), "/buffer move +%d", INT_MAX);
|
||||
snprintf (string, sizeof (string), "Invalid buffer number: \"+%d\"", INT_MAX);
|
||||
WEE_CMD_CORE_ERROR_MSG(command, string);
|
||||
snprintf (command, sizeof (command), "/buffer move -%d", INT_MAX);
|
||||
snprintf (string, sizeof (string), "Invalid buffer number: \"-%d\"", INT_MAX);
|
||||
WEE_CMD_CORE_ERROR_MSG(command, string);
|
||||
snprintf (command, sizeof (command), "/buffer move +%ld", ((long)INT_MAX) + 1);
|
||||
snprintf (string, sizeof (string), "Invalid buffer number: \"+%ld\"", ((long)INT_MAX) + 1);
|
||||
WEE_CMD_CORE_ERROR_MSG(command, string);
|
||||
snprintf (command, sizeof (command), "/buffer move -%ld", ((long)INT_MAX) + 1);
|
||||
snprintf (string, sizeof (string), "Invalid buffer number: \"-%ld\"", ((long)INT_MAX) + 1);
|
||||
WEE_CMD_CORE_ERROR_MSG(command, string);
|
||||
snprintf (command, sizeof (command), "/buffer move +%d", GUI_BUFFER_NUMBER_MAX - 1);
|
||||
WEE_CMD_CORE(command);
|
||||
snprintf (command, sizeof (command), "/buffer move -%d", GUI_BUFFER_NUMBER_MAX - 1);
|
||||
snprintf (string, sizeof (string),
|
||||
"Buffer number %d is out of range (it must be between 1 and %d)",
|
||||
gui_buffers->number - (GUI_BUFFER_NUMBER_MAX - 1),
|
||||
GUI_BUFFER_NUMBER_MAX);
|
||||
WEE_CMD_CORE_ERROR_MSG(command, string);
|
||||
snprintf (command, sizeof (command), "/buffer move +%d", GUI_BUFFER_NUMBER_MAX);
|
||||
snprintf (string, sizeof (string),
|
||||
"Buffer number %d is out of range (it must be between 1 and %d)",
|
||||
gui_buffers->number + GUI_BUFFER_NUMBER_MAX,
|
||||
GUI_BUFFER_NUMBER_MAX);
|
||||
WEE_CMD_CORE_ERROR_MSG(command, string);
|
||||
snprintf (command, sizeof (command), "/buffer move -%d", GUI_BUFFER_NUMBER_MAX);
|
||||
snprintf (string, sizeof (string),
|
||||
"Buffer number %d is out of range (it must be between 1 and %d)",
|
||||
gui_buffers->number - GUI_BUFFER_NUMBER_MAX,
|
||||
GUI_BUFFER_NUMBER_MAX);
|
||||
WEE_CMD_CORE_ERROR_MSG(command, string);
|
||||
snprintf (command, sizeof (command), "/buffer move +%d", GUI_BUFFER_NUMBER_MAX + 1);
|
||||
snprintf (string, sizeof (string),
|
||||
"Invalid buffer number: \"+%d\"", GUI_BUFFER_NUMBER_MAX + 1);
|
||||
WEE_CMD_CORE_ERROR_MSG(command, string);
|
||||
snprintf (command, sizeof (command), "/buffer move -%d", GUI_BUFFER_NUMBER_MAX + 1);
|
||||
snprintf (string, sizeof (string),
|
||||
"Invalid buffer number: \"-%d\"", GUI_BUFFER_NUMBER_MAX + 1);
|
||||
WEE_CMD_CORE_ERROR_MSG(command, string);
|
||||
WEE_CMD_CORE("/buffer move -");
|
||||
WEE_CMD_CORE("/buffer move +");
|
||||
WEE_CMD_CORE("/buffer add -switch test");
|
||||
WEE_CMD_CORE("/buffer move -1");
|
||||
WEE_CMD_CORE("/buffer add test");
|
||||
WEE_CMD_CORE("/buffer move +1");
|
||||
WEE_CMD_CORE("/buffer move -1");
|
||||
WEE_CMD_CORE("/buffer close core.test");
|
||||
|
||||
/* /buffer swap */
|
||||
@@ -484,7 +530,7 @@ TEST(CoreCommand, Buffer)
|
||||
|
||||
/* smart jump */
|
||||
WEE_CMD_CORE_ERROR_MSG("/buffer *xxx", "Invalid buffer number: \"xxx\"");
|
||||
WEE_CMD_CORE("/buffer *");
|
||||
WEE_CMD_CORE_ERROR_GENERIC("/buffer *");
|
||||
WEE_CMD_CORE("/buffer *2");
|
||||
|
||||
/* jump by id, number or name */
|
||||
@@ -493,8 +539,8 @@ TEST(CoreCommand, Buffer)
|
||||
WEE_CMD_CORE("/buffer 1");
|
||||
WEE_CMD_CORE("/buffer core.test");
|
||||
WEE_CMD_CORE("/buffer core.weechat");
|
||||
snprintf (string, sizeof (string), "/buffer %lld", gui_buffers->id);
|
||||
WEE_CMD_CORE(string);
|
||||
snprintf (command, sizeof (command), "/buffer %lld", gui_buffers->id);
|
||||
WEE_CMD_CORE(command);
|
||||
WEE_CMD_CORE("/buffer close core.test");
|
||||
}
|
||||
|
||||
|
||||
@@ -800,6 +800,38 @@ TEST(CoreString, StringComparison)
|
||||
LONGS_EQUAL(-2, string_strcmp_ignore_chars ("è", "ê", "", 1));
|
||||
}
|
||||
|
||||
/*
|
||||
* Test functions:
|
||||
* string_memcmp_constant_time
|
||||
*/
|
||||
|
||||
TEST(CoreString, MemcmpConstantTime)
|
||||
{
|
||||
/* NULL handling */
|
||||
LONGS_EQUAL(0, string_memcmp_constant_time (NULL, NULL, 0));
|
||||
LONGS_EQUAL(0, string_memcmp_constant_time (NULL, NULL, 4));
|
||||
LONGS_EQUAL(1, string_memcmp_constant_time (NULL, "abcd", 4));
|
||||
LONGS_EQUAL(1, string_memcmp_constant_time ("abcd", NULL, 4));
|
||||
|
||||
/* zero-size compare always equal */
|
||||
LONGS_EQUAL(0, string_memcmp_constant_time ("", "", 0));
|
||||
LONGS_EQUAL(0, string_memcmp_constant_time ("abc", "xyz", 0));
|
||||
|
||||
/* equal areas */
|
||||
LONGS_EQUAL(0, string_memcmp_constant_time ("abcd", "abcd", 4));
|
||||
LONGS_EQUAL(0, string_memcmp_constant_time ("\x00\x01\x02\xff",
|
||||
"\x00\x01\x02\xff", 4));
|
||||
|
||||
/* differing areas (first / middle / last byte) */
|
||||
LONGS_EQUAL(1, string_memcmp_constant_time ("Xbcd", "abcd", 4));
|
||||
LONGS_EQUAL(1, string_memcmp_constant_time ("aXcd", "abcd", 4));
|
||||
LONGS_EQUAL(1, string_memcmp_constant_time ("abcX", "abcd", 4));
|
||||
LONGS_EQUAL(1, string_memcmp_constant_time ("abcd", "abce", 4));
|
||||
|
||||
/* only compares "size" bytes, ignores trailing content */
|
||||
LONGS_EQUAL(0, string_memcmp_constant_time ("abcd", "abcz", 3));
|
||||
}
|
||||
|
||||
/*
|
||||
* Test functions:
|
||||
* string_strcasestr
|
||||
@@ -2971,11 +3003,11 @@ TEST(CoreString, GetPriorityAndName)
|
||||
LONGS_EQUAL(500, priority);
|
||||
STRCMP_EQUAL("", ptr_name);
|
||||
|
||||
/* "|" => (0, "") */
|
||||
/* "|" => (default_priority, "") */
|
||||
priority = -1;
|
||||
ptr_name = NULL;
|
||||
string_get_priority_and_name (delimiter, &priority, &ptr_name, 500);
|
||||
LONGS_EQUAL(0, priority);
|
||||
LONGS_EQUAL(500, priority);
|
||||
STRCMP_EQUAL("", ptr_name);
|
||||
|
||||
/* "test" => (default_priority, "test") */
|
||||
@@ -2985,11 +3017,11 @@ TEST(CoreString, GetPriorityAndName)
|
||||
LONGS_EQUAL(500, priority);
|
||||
STRCMP_EQUAL("test", ptr_name);
|
||||
|
||||
/* "|test" => (0, "test") */
|
||||
/* "|test" => (default_priority, "test") */
|
||||
priority = -1;
|
||||
ptr_name = NULL;
|
||||
string_get_priority_and_name (name_prio_empty, &priority, &ptr_name, 500);
|
||||
LONGS_EQUAL(0, priority);
|
||||
LONGS_EQUAL(500, priority);
|
||||
STRCMP_EQUAL("test", ptr_name);
|
||||
|
||||
/* "1234|test" => (1234, "test") */
|
||||
|
||||
@@ -698,6 +698,7 @@ TEST(CoreUtil, GetTimeDiff)
|
||||
TEST(CoreUtil, ParseDelay)
|
||||
{
|
||||
unsigned long long delay;
|
||||
char str_delay[128];
|
||||
|
||||
/* error: no delay */
|
||||
LONGS_EQUAL(0, util_parse_delay ("123", 1ULL, NULL));
|
||||
@@ -721,8 +722,10 @@ TEST(CoreUtil, ParseDelay)
|
||||
/* error: bad number */
|
||||
WEE_PARSE_DELAY(0, 0ULL, "abcd", 1LL);
|
||||
|
||||
/* error: bad delay */
|
||||
/* invalid unsigned long long: outside range (0, ULLONG_MAX) */
|
||||
WEE_PARSE_DELAY(0, 0ULL, "-123", 1LL);
|
||||
snprintf (str_delay, sizeof (str_delay), "%llu1", ULLONG_MAX);
|
||||
LONGS_EQUAL(0, util_parse_delay (str_delay, 10, &delay));
|
||||
|
||||
/* tests with delay == 0 */
|
||||
WEE_PARSE_DELAY(1, 0ULL, "0", 1ULL);
|
||||
@@ -764,10 +767,16 @@ TEST(CoreUtil, ParseDelay)
|
||||
|
||||
TEST(CoreUtil, VersionNumber)
|
||||
{
|
||||
char str_version[256];
|
||||
|
||||
CHECK(util_version_number (NULL) == 0);
|
||||
CHECK(util_version_number ("") == 0);
|
||||
CHECK(util_version_number ("abc") == 0);
|
||||
|
||||
/* invalid unsigned long: outside range (0, ULONG_MAX) */
|
||||
snprintf (str_version, sizeof (str_version), "0.0.%lu1", ULONG_MAX);
|
||||
CHECK(util_version_number (str_version) == 0);
|
||||
|
||||
CHECK(util_version_number ("0.3.2-dev") == 0x00030200);
|
||||
CHECK(util_version_number ("0.3.2-rc1") == 0x00030200);
|
||||
CHECK(util_version_number ("0.3.2") == 0x00030200);
|
||||
|
||||
@@ -109,6 +109,31 @@ TEST(RelayAuth, GenerateNonce)
|
||||
free (nonce);
|
||||
}
|
||||
|
||||
/*
|
||||
* Test functions:
|
||||
* relay_auth_password_equals
|
||||
*/
|
||||
|
||||
TEST(RelayAuth, PasswordEquals)
|
||||
{
|
||||
/* invalid arguments */
|
||||
LONGS_EQUAL(0, relay_auth_password_equals (NULL, NULL));
|
||||
LONGS_EQUAL(0, relay_auth_password_equals ("abcd", NULL));
|
||||
LONGS_EQUAL(0, relay_auth_password_equals (NULL, "abcd"));
|
||||
|
||||
/* different passwords */
|
||||
LONGS_EQUAL(0, relay_auth_password_equals ("test", "password"));
|
||||
LONGS_EQUAL(0, relay_auth_password_equals ("Password", "password"));
|
||||
LONGS_EQUAL(0, relay_auth_password_equals ("", "password"));
|
||||
LONGS_EQUAL(0, relay_auth_password_equals ("password", ""));
|
||||
|
||||
/* equal passwords */
|
||||
LONGS_EQUAL(1, relay_auth_password_equals ("", ""));
|
||||
LONGS_EQUAL(1, relay_auth_password_equals ("password", "password"));
|
||||
LONGS_EQUAL(1, relay_auth_password_equals ("a really long password with spaces",
|
||||
"a really long password with spaces"));
|
||||
}
|
||||
|
||||
/*
|
||||
* Test functions:
|
||||
* relay_auth_check_password_plain
|
||||
|
||||
@@ -466,6 +466,41 @@ TEST(RelayWebsocket, Inflate)
|
||||
free (payload_comp);
|
||||
|
||||
relay_websocket_deflate_free (ws_deflate);
|
||||
|
||||
/*
|
||||
* protection against "deflate bomb": a small compressed frame that
|
||||
* decompresses to more than WEBSOCKET_INFLATE_MAX_SIZE must be rejected
|
||||
* (relay_websocket_inflate returns NULL)
|
||||
*/
|
||||
ws_deflate = relay_websocket_deflate_alloc ();
|
||||
CHECK(ws_deflate);
|
||||
ws_deflate->window_bits_deflate = 15;
|
||||
ws_deflate->window_bits_inflate = 15;
|
||||
ws_deflate->strm_deflate = (z_stream *)calloc (1, sizeof (*ws_deflate->strm_deflate));
|
||||
CHECK(ws_deflate->strm_deflate);
|
||||
LONGS_EQUAL(1, relay_websocket_deflate_init_stream_deflate (ws_deflate));
|
||||
ws_deflate->strm_inflate = (z_stream *)calloc (1, sizeof (*ws_deflate->strm_inflate));
|
||||
CHECK(ws_deflate->strm_inflate);
|
||||
LONGS_EQUAL(1, relay_websocket_deflate_init_stream_inflate (ws_deflate));
|
||||
|
||||
/* highly compressible payload that decompresses past the maximum size */
|
||||
size_t bomb_size = WEBSOCKET_INFLATE_MAX_SIZE + (1024 * 1024);
|
||||
char *bomb = (char *)calloc (1, bomb_size);
|
||||
CHECK(bomb);
|
||||
|
||||
payload_comp = (char *)relay_websocket_deflate (bomb, bomb_size,
|
||||
ws_deflate->strm_deflate, &size_comp);
|
||||
CHECK(payload_comp);
|
||||
CHECK(size_comp < bomb_size);
|
||||
|
||||
payload_decomp = (char *)relay_websocket_inflate (payload_comp, size_comp,
|
||||
ws_deflate->strm_inflate, &size_decomp);
|
||||
POINTERS_EQUAL(NULL, payload_decomp);
|
||||
|
||||
free (payload_comp);
|
||||
free (bomb);
|
||||
|
||||
relay_websocket_deflate_free (ws_deflate);
|
||||
}
|
||||
|
||||
/*
|
||||
|
||||
@@ -1,51 +0,0 @@
|
||||
diff --git a/CMakeLists.txt b/CMakeLists.txt
|
||||
index 5d15a3548..0786637b9 100644
|
||||
--- a/CMakeLists.txt
|
||||
+++ b/CMakeLists.txt
|
||||
@@ -19,7 +19,7 @@
|
||||
# along with WeeChat. If not, see <https://www.gnu.org/licenses/>.
|
||||
#
|
||||
|
||||
-cmake_minimum_required(VERSION 3.18)
|
||||
+cmake_minimum_required(VERSION 3.16)
|
||||
|
||||
project(weechat C)
|
||||
|
||||
diff --git a/debian-devel/rules b/debian-devel/rules
|
||||
index 086056f76..559ccfffb 100755
|
||||
--- a/debian-devel/rules
|
||||
+++ b/debian-devel/rules
|
||||
@@ -8,6 +8,7 @@ override_dh_auto_configure:
|
||||
dh_auto_configure --buildsystem=cmake -- \
|
||||
-DCMAKE_INSTALL_PREFIX:FILEPATH=/usr \
|
||||
-DLIBDIR=/usr/lib/${DEB_HOST_MULTIARCH} \
|
||||
+ -DENABLE_CJSON:BOOL=OFF \
|
||||
-DENABLE_DOC:BOOL=ON \
|
||||
-DENABLE_MAN:BOOL=ON \
|
||||
-DCMAKE_BUILD_TYPE:STRING=RelWithDebInfo \
|
||||
diff --git a/debian-stable/rules b/debian-stable/rules
|
||||
index 086056f76..559ccfffb 100755
|
||||
--- a/debian-stable/rules
|
||||
+++ b/debian-stable/rules
|
||||
@@ -8,6 +8,7 @@ override_dh_auto_configure:
|
||||
dh_auto_configure --buildsystem=cmake -- \
|
||||
-DCMAKE_INSTALL_PREFIX:FILEPATH=/usr \
|
||||
-DLIBDIR=/usr/lib/${DEB_HOST_MULTIARCH} \
|
||||
+ -DENABLE_CJSON:BOOL=OFF \
|
||||
-DENABLE_DOC:BOOL=ON \
|
||||
-DENABLE_MAN:BOOL=ON \
|
||||
-DCMAKE_BUILD_TYPE:STRING=RelWithDebInfo \
|
||||
diff --git a/src/plugins/ruby/CMakeLists.txt b/src/plugins/ruby/CMakeLists.txt
|
||||
index fe72c7c56..1fb293512 100644
|
||||
--- a/src/plugins/ruby/CMakeLists.txt
|
||||
+++ b/src/plugins/ruby/CMakeLists.txt
|
||||
@@ -31,7 +31,7 @@ set_target_properties(ruby PROPERTIES PREFIX "")
|
||||
# caused by Ruby headers (with Ruby ≥ 3.1.0)
|
||||
# see: https://github.com/ruby/ruby/pull/7085
|
||||
add_definitions(-Wno-unused-parameter)
|
||||
-include_directories(${Ruby_INCLUDE_DIRS})
|
||||
-target_link_libraries(ruby ${Ruby_LIBRARIES} weechat_plugins_scripts coverage_config)
|
||||
+include_directories(${RUBY_INCLUDE_DIRS})
|
||||
+target_link_libraries(ruby ${RUBY_LIBRARY} weechat_plugins_scripts coverage_config)
|
||||
|
||||
install(TARGETS ruby LIBRARY DESTINATION "${WEECHAT_LIBDIR}/plugins")
|
||||
+2
-2
@@ -41,8 +41,8 @@
|
||||
# devel-number the devel version as hex number ("0x04010000" for "4.1.0-dev")
|
||||
#
|
||||
|
||||
weechat_stable="4.9.0"
|
||||
weechat_devel="4.9.0"
|
||||
weechat_stable="4.9.1"
|
||||
weechat_devel="4.10.0-dev"
|
||||
|
||||
stable_major=$(echo "${weechat_stable}" | cut -d"." -f1)
|
||||
stable_minor=$(echo "${weechat_stable}" | cut -d"." -f2)
|
||||
|
||||
Reference in New Issue
Block a user