mirror of
https://github.com/weechat/weechat.git
synced 2026-07-07 02:03:13 +02:00
Compare commits
327 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| a9d01b2db0 | |||
| 279f22780b | |||
| e1fdd9fd71 | |||
| 45dbf3ce9f | |||
| b4ce4e6262 | |||
| 3950041801 | |||
| f65591cb56 | |||
| 20f5ecc6dd | |||
| aa77bff164 | |||
| 031bc877cb | |||
| f970538ba3 | |||
| 04e60b9cb0 | |||
| a5a94b18d4 | |||
| 356ddaa949 | |||
| 08280f472d | |||
| ae9e123b6f | |||
| 8141928c06 | |||
| 45bdf0ca7e | |||
| 8c5b44ff03 | |||
| ae44f15d86 | |||
| 7018030a8c | |||
| 9922247257 | |||
| 657ca79090 | |||
| ce33e24d78 | |||
| 65fcc7ddf5 | |||
| 4334ed5bc3 | |||
| 22bc2b0ab5 | |||
| 2de93d78f4 | |||
| d5349c2f0a | |||
| 6a7feba168 | |||
| 80e14b28a5 | |||
| 9d2905f601 | |||
| fe4a809862 | |||
| 460010cc13 | |||
| abb6b41fb8 | |||
| 815edccc8a | |||
| 9aef5f452e | |||
| a09bd50b92 | |||
| afaf7cf85b | |||
| 23a8a97ad9 | |||
| abea2e1449 | |||
| 06f8dd4cd3 | |||
| 203b9e255f | |||
| d8433eaf55 | |||
| 68d5004e12 | |||
| 5a341c69f5 | |||
| 825f05015f | |||
| 055642b9df | |||
| 5a2c412ded | |||
| f3e14829ab | |||
| 376ea3cc9e | |||
| df6b994d3b | |||
| 1f9c3784c7 | |||
| a217e9f72f | |||
| 8858d4b6b4 | |||
| e9d998a9bf | |||
| bfb34faa97 | |||
| a4b8d7aedd | |||
| 75b364cd89 | |||
| 914d3df639 | |||
| a5404172c8 | |||
| 1dd423cb23 | |||
| 8f33a72c99 | |||
| f4564a1cb0 | |||
| c4dfb16df0 | |||
| 6facd390fe | |||
| 2aada3d0ca | |||
| 791c39cc84 | |||
| ce6a214ce1 | |||
| 3c302e078d | |||
| 90761d6350 | |||
| 4eba4f9a47 | |||
| fcbb508cd7 | |||
| b49eac6f2d | |||
| 9b418b4dc2 | |||
| 08b173f9b7 | |||
| 42b91aa91d | |||
| 4ac2f6c2ad | |||
| 3d804810a0 | |||
| 987b03da39 | |||
| a1f1443fd8 | |||
| ca8312a48c | |||
| 971f7b1660 | |||
| 643f2fab5b | |||
| 5f36c52935 | |||
| 92219ba132 | |||
| 905a68739e | |||
| 3200a05c00 | |||
| 861f589fc2 | |||
| c40261aed1 | |||
| 770e733303 | |||
| 9bd2aaa25d | |||
| 4e206ee3ae | |||
| 7ff71d2b0e | |||
| 203fdca3e8 | |||
| e3ba25df19 | |||
| 64566629c5 | |||
| 7e3afaf46d | |||
| cf702d541f | |||
| a8067751eb | |||
| a696a100d8 | |||
| e60786d059 | |||
| d78105ddf5 | |||
| 2a8c86242b | |||
| dd9ef2f4d9 | |||
| 4c6c55befe | |||
| de878b2303 | |||
| 80a47b6731 | |||
| 551c12e049 | |||
| 12016c4c05 | |||
| 3aeaa70e64 | |||
| 66e633e27e | |||
| 436bbeceff | |||
| c307087e2d | |||
| 51a1149852 | |||
| d74993a42c | |||
| 51464e400f | |||
| 1c5e6c3fc2 | |||
| e563dfc903 | |||
| befbcceb7f | |||
| 56f9ad68fb | |||
| 328f86affc | |||
| f4dc30ec58 | |||
| 23291acb7b | |||
| b802681230 | |||
| 3687ce0f0f | |||
| 1211510ded | |||
| 07871f123f | |||
| a0cf82d4a6 | |||
| 13291b6b9a | |||
| 76d652a513 | |||
| ff9b698665 | |||
| d5c985eb11 | |||
| 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 | |||
| 5969f9faf6 | |||
| b70b484f5f | |||
| b250d71608 | |||
| 94457f8313 | |||
| 0cd0e7be6a | |||
| 2ececc1184 | |||
| b8bef1c3e1 | |||
| d9e56c3df8 | |||
| dc28050b8b | |||
| f53e7fb9ef | |||
| d34eb40187 | |||
| 2cbbb677f3 | |||
| f7267bc992 | |||
| 147d5b3f88 | |||
| da4881959e | |||
| 5e963c7546 | |||
| 41d8e06394 | |||
| 52d1245bad | |||
| 961dc515a0 | |||
| 73ec7c0641 | |||
| c60a5fde14 | |||
| 0bbae498c9 | |||
| 4c79e870af | |||
| dc4df8b9aa | |||
| 6bc11571b5 | |||
| d1b71a8562 | |||
| 19a6591410 | |||
| 25e0809c55 | |||
| e8d0399623 | |||
| c41d73e417 | |||
| 1532efea6d | |||
| 9bf2d51493 | |||
| 27ae6ca789 | |||
| 916c59d8f0 | |||
| 37bdf6586b | |||
| 13e9381e19 | |||
| b94e4af67e | |||
| 431d9ad64a | |||
| f5bbe35cfb | |||
| b82ce33c6c | |||
| 87a683ebdb | |||
| f048ea9eac | |||
| fc0fb05ec0 | |||
| 835e0b9549 | |||
| 507f172dae | |||
| fc595afd08 | |||
| 2f5305dc82 | |||
| 9f2b9c4ea9 | |||
| aea8421e49 | |||
| 81834c45ae | |||
| 01d2887b13 | |||
| 8b30d9a7d7 | |||
| 92327871d2 | |||
| b2556f99f4 | |||
| ec6372f4df | |||
| abb74ac178 | |||
| 71329fd595 | |||
| 106fe6ca7c | |||
| 630f2e2e7c | |||
| eb0b01f62a | |||
| fb00b7055c | |||
| 58b1f5c62b | |||
| d663070b02 | |||
| 8ff7d63744 | |||
| 5eb3bca47b | |||
| d0478bdc04 | |||
| d7fc65e282 | |||
| 0d737349be | |||
| dc94251b33 | |||
| 306155aa48 | |||
| 238f8cbc7e | |||
| fa043644cb | |||
| e06b3c1d7e | |||
| 5b052532ec | |||
| 18bce9e8c4 | |||
| 886042a875 | |||
| fca4ee28e0 | |||
| 7c37eced93 | |||
| a413d16038 | |||
| 440907e1cd | |||
| cb08473bdc | |||
| 71ef7e286c | |||
| 2a234b3bfe | |||
| 6442b938eb | |||
| c8d2b4448a | |||
| 3918efd8e9 | |||
| 4decd2c386 | |||
| 323ab8810e | |||
| fc6003c74e | |||
| ae54c3ef65 | |||
| b38c00bb0d | |||
| 20a7affb70 | |||
| 150e6ecd82 | |||
| 87ef578ad2 | |||
| ef5f197a4a | |||
| 250db946b0 | |||
| f0160bf5ab | |||
| 7d51a1331b | |||
| 22b335ce86 | |||
| f26f73f283 | |||
| 323c9e2bfe | |||
| 894df0e9e6 | |||
| ead76532de | |||
| da2f506f2e | |||
| e42e811c95 | |||
| 889450fb31 | |||
| 3c11e09c30 | |||
| 616daecdd0 | |||
| 9b4fd66de7 | |||
| b42f7a400e | |||
| 9e814860ae | |||
| a2a71b4d33 | |||
| 7d6b8f6943 | |||
| 3b4a5bbb09 | |||
| 58b7ec59e9 | |||
| 518b9ab381 | |||
| a9e48d33c6 | |||
| 1ff001994c | |||
| 234a37df6f | |||
| 6bcc6ef65f | |||
| d5e6c94246 | |||
| 63b6dee311 | |||
| 34697cf5ce |
+268
-192
@@ -11,6 +11,14 @@ on:
|
|||||||
- cron: '22 9 * * 2'
|
- cron: '22 9 * * 2'
|
||||||
|
|
||||||
env:
|
env:
|
||||||
|
CHECK_DEPS_UBUNTU: >-
|
||||||
|
curl
|
||||||
|
gettext
|
||||||
|
hunspell
|
||||||
|
hunspell-en-us
|
||||||
|
hunspell-fr
|
||||||
|
pipx
|
||||||
|
shellcheck
|
||||||
WEECHAT_DEPS_UBUNTU: >-
|
WEECHAT_DEPS_UBUNTU: >-
|
||||||
asciidoctor
|
asciidoctor
|
||||||
build-essential
|
build-essential
|
||||||
@@ -18,7 +26,6 @@ env:
|
|||||||
curl
|
curl
|
||||||
devscripts
|
devscripts
|
||||||
equivs
|
equivs
|
||||||
flake8
|
|
||||||
gem2deb
|
gem2deb
|
||||||
guile-3.0-dev
|
guile-3.0-dev
|
||||||
lcov
|
lcov
|
||||||
@@ -29,7 +36,7 @@ env:
|
|||||||
libcurl4-gnutls-dev
|
libcurl4-gnutls-dev
|
||||||
libgcrypt20-dev
|
libgcrypt20-dev
|
||||||
libgnutls28-dev
|
libgnutls28-dev
|
||||||
liblua5.3-dev
|
liblua5.4-dev
|
||||||
libncurses-dev
|
libncurses-dev
|
||||||
libperl-dev
|
libperl-dev
|
||||||
libphp-embed
|
libphp-embed
|
||||||
@@ -40,14 +47,11 @@ env:
|
|||||||
php-dev
|
php-dev
|
||||||
pipx
|
pipx
|
||||||
pkgconf
|
pkgconf
|
||||||
pylint
|
|
||||||
python3-bandit
|
|
||||||
python3-dev
|
python3-dev
|
||||||
ruby-pygments.rb
|
ruby-pygments.rb
|
||||||
shellcheck
|
|
||||||
tcl8.6-dev
|
tcl8.6-dev
|
||||||
zlib1g-dev
|
zlib1g-dev
|
||||||
WEECHAT_DEPS_ROCKYLINUX: >-
|
WEECHAT_DEPS_REDHAT: >-
|
||||||
asciidoctor
|
asciidoctor
|
||||||
aspell-devel
|
aspell-devel
|
||||||
cjson-devel
|
cjson-devel
|
||||||
@@ -98,15 +102,68 @@ env:
|
|||||||
sudo
|
sudo
|
||||||
tcl86
|
tcl86
|
||||||
zstd
|
zstd
|
||||||
|
WEECHAT_DEPS_MACOS: >-
|
||||||
|
asciidoctor
|
||||||
|
aspell
|
||||||
|
cjson
|
||||||
|
guile
|
||||||
|
lua
|
||||||
|
pkg-config
|
||||||
|
ruby
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
|
|
||||||
tests_ubuntu:
|
checks:
|
||||||
|
|
||||||
|
env:
|
||||||
|
POEXAM_VERSION: "0.0.12"
|
||||||
|
|
||||||
strategy:
|
strategy:
|
||||||
matrix:
|
matrix:
|
||||||
os:
|
os:
|
||||||
- ubuntu-24.04
|
- ubuntu-26.04
|
||||||
|
|
||||||
|
runs-on: ${{ matrix.os }}
|
||||||
|
|
||||||
|
steps:
|
||||||
|
|
||||||
|
- uses: actions/checkout@v6
|
||||||
|
|
||||||
|
- name: Install dependencies
|
||||||
|
run: |
|
||||||
|
sudo apt-get update -qq
|
||||||
|
sudo apt-get --yes --no-install-recommends install ${{ env.CHECK_DEPS_UBUNTU }}
|
||||||
|
pipx install ruff
|
||||||
|
|
||||||
|
- name: Cache poexam
|
||||||
|
id: cache-poexam
|
||||||
|
uses: actions/cache@v6
|
||||||
|
with:
|
||||||
|
path: ~/.cargo/bin/poexam
|
||||||
|
key: poexam-${{ env.POEXAM_VERSION }}-${{ runner.os }}
|
||||||
|
|
||||||
|
- name: Install poexam
|
||||||
|
if: steps.cache-poexam.outputs.cache-hit != 'true'
|
||||||
|
run: cargo install --version "$POEXAM_VERSION" poexam
|
||||||
|
|
||||||
|
- name: Check gettext files
|
||||||
|
run: poexam check --file-stats --rule-stats
|
||||||
|
|
||||||
|
- name: Check shell and Python scripts
|
||||||
|
run: ./tools/check_scripts.sh
|
||||||
|
|
||||||
|
- name: Check Python stub file
|
||||||
|
run: ./tools/generate_python_stub.py | diff src/plugins/python/weechat.pyi -
|
||||||
|
|
||||||
|
- name: Check Curl symbols
|
||||||
|
run: curl --silent --show-error --fail --retry 10 https://raw.githubusercontent.com/curl/curl/master/docs/libcurl/symbols-in-versions | ./tools/check_curl_symbols.py
|
||||||
|
|
||||||
|
install:
|
||||||
|
|
||||||
|
strategy:
|
||||||
|
matrix:
|
||||||
|
os:
|
||||||
|
- ubuntu-26.04
|
||||||
config:
|
config:
|
||||||
- name: "gcc"
|
- name: "gcc"
|
||||||
cc: "gcc"
|
cc: "gcc"
|
||||||
@@ -145,32 +202,21 @@ jobs:
|
|||||||
cxx: "clang++"
|
cxx: "clang++"
|
||||||
buildargs: "-DENABLE_CODE_COVERAGE=ON -DENABLE_FUZZ=ON"
|
buildargs: "-DENABLE_CODE_COVERAGE=ON -DENABLE_FUZZ=ON"
|
||||||
|
|
||||||
name: "${{ matrix.os }} (${{ matrix.config.name }})"
|
name: "install (${{ matrix.os }}, ${{ matrix.config.name }})"
|
||||||
runs-on: ${{ matrix.os }}
|
runs-on: ${{ matrix.os }}
|
||||||
|
env:
|
||||||
|
PHP_INI_SCAN_DIR: /tmp/php-noscan # embed PHP loads no add-on extensions (see #2009)
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
|
|
||||||
- uses: actions/checkout@v4
|
- uses: actions/checkout@v6
|
||||||
|
|
||||||
- name: Install dependencies
|
- name: Install dependencies
|
||||||
run: |
|
run: |
|
||||||
sudo apt-get update -qq
|
sudo apt-get update -qq
|
||||||
sudo apt-get --yes --no-install-recommends install ${{ env.WEECHAT_DEPS_UBUNTU }}
|
sudo apt-get --yes --no-install-recommends install ${{ env.WEECHAT_DEPS_UBUNTU }}
|
||||||
# uninstall php imagick as is causes a crash when loading php plugin (see #2009)
|
mkdir -p /tmp/php-noscan
|
||||||
sudo apt-get --yes purge php8.3-imagick
|
pipx install schemathesis
|
||||||
pipx install msgcheck schemathesis
|
|
||||||
|
|
||||||
- name: Check gettext files
|
|
||||||
run: msgcheck po/*.po
|
|
||||||
|
|
||||||
- name: Check shell and Python scripts
|
|
||||||
run: ./tools/check_scripts.sh
|
|
||||||
|
|
||||||
- name: Check Python stub file
|
|
||||||
run: ./tools/generate_python_stub.py | diff src/plugins/python/weechat.pyi -
|
|
||||||
|
|
||||||
- name: Check Curl symbols
|
|
||||||
run: curl --silent --show-error --fail --retry 10 https://raw.githubusercontent.com/curl/curl/master/docs/libcurl/symbols-in-versions | ./tools/check_curl_symbols.py
|
|
||||||
|
|
||||||
- name: Build and run tests
|
- name: Build and run tests
|
||||||
env:
|
env:
|
||||||
@@ -218,19 +264,210 @@ jobs:
|
|||||||
lcov --list coverage.info
|
lcov --list coverage.info
|
||||||
bash <(curl -s https://codecov.io/bash) -f coverage.info || echo 'Codecov error'
|
bash <(curl -s https://codecov.io/bash) -f coverage.info || echo 'Codecov error'
|
||||||
|
|
||||||
|
install_fedora:
|
||||||
|
|
||||||
|
strategy:
|
||||||
|
matrix:
|
||||||
|
os:
|
||||||
|
- ubuntu-26.04
|
||||||
|
config:
|
||||||
|
- name: "gcc"
|
||||||
|
cc: "gcc"
|
||||||
|
cxx: "g++"
|
||||||
|
buildargs: "-DENABLE_MAN=ON -DENABLE_DOC=ON -DENABLE_TESTS=ON"
|
||||||
|
- name: "clang"
|
||||||
|
cc: "clang"
|
||||||
|
cxx: "clang++"
|
||||||
|
buildargs: "-DENABLE_MAN=ON -DENABLE_DOC=ON -DENABLE_TESTS=ON -DENABLE_CODE_COVERAGE=ON -DENABLE_FUZZ=ON"
|
||||||
|
|
||||||
|
name: "install (fedora:43, ${{ matrix.config.name }})"
|
||||||
|
runs-on: ${{ matrix.os }}
|
||||||
|
container:
|
||||||
|
image: fedora:43
|
||||||
|
|
||||||
|
steps:
|
||||||
|
|
||||||
|
- uses: actions/checkout@v6
|
||||||
|
|
||||||
|
- name: Install dependencies
|
||||||
|
run: dnf install -y ${{ env.WEECHAT_DEPS_REDHAT }}
|
||||||
|
|
||||||
|
- name: Build and run tests
|
||||||
|
env:
|
||||||
|
CC: ${{ matrix.config.cc }}
|
||||||
|
CXX: ${{ matrix.config.cxx }}
|
||||||
|
run: ./tools/build_test.sh ${{ matrix.config.buildargs }}
|
||||||
|
|
||||||
|
- name: Run WeeChat
|
||||||
|
env:
|
||||||
|
TERM: xterm-256color
|
||||||
|
run: |
|
||||||
|
weechat --help
|
||||||
|
weechat-curses --help
|
||||||
|
weechat --version
|
||||||
|
weechat --build-info
|
||||||
|
weechat --colors
|
||||||
|
weechat --license
|
||||||
|
weechat --run-command "/debug dirs;/debug libs" --run-command "/quit"
|
||||||
|
|
||||||
|
install_rockylinux:
|
||||||
|
|
||||||
|
strategy:
|
||||||
|
matrix:
|
||||||
|
os:
|
||||||
|
- ubuntu-26.04
|
||||||
|
config:
|
||||||
|
- name: "gcc"
|
||||||
|
cc: "gcc"
|
||||||
|
cxx: "g++"
|
||||||
|
buildargs: "-DENABLE_MAN=ON -DENABLE_DOC=ON -DENABLE_TESTS=ON"
|
||||||
|
- name: "clang"
|
||||||
|
cc: "clang"
|
||||||
|
cxx: "clang++"
|
||||||
|
buildargs: "-DENABLE_MAN=ON -DENABLE_DOC=ON -DENABLE_TESTS=ON -DENABLE_CODE_COVERAGE=ON -DENABLE_FUZZ=ON"
|
||||||
|
|
||||||
|
name: "install (rockylinux:9, ${{ matrix.config.name }})"
|
||||||
|
runs-on: ${{ matrix.os }}
|
||||||
|
container:
|
||||||
|
image: rockylinux:9
|
||||||
|
|
||||||
|
steps:
|
||||||
|
|
||||||
|
- uses: actions/checkout@v6
|
||||||
|
|
||||||
|
- name: Install dependencies
|
||||||
|
run: |
|
||||||
|
dnf install -y epel-release dnf-plugins-core
|
||||||
|
dnf config-manager --set-enabled crb
|
||||||
|
# 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:
|
||||||
|
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_freebsd:
|
||||||
|
|
||||||
|
strategy:
|
||||||
|
matrix:
|
||||||
|
os:
|
||||||
|
- ubuntu-26.04
|
||||||
|
config:
|
||||||
|
# - name: "gcc"
|
||||||
|
# cc: "gcc"
|
||||||
|
# cxx: "g++"
|
||||||
|
# buildargs: "-DENABLE_MAN=ON -DENABLE_DOC=ON -DENABLE_TESTS=ON"
|
||||||
|
- name: "clang"
|
||||||
|
cc: "clang"
|
||||||
|
cxx: "clang++"
|
||||||
|
buildargs: "-DENABLE_MAN=ON -DENABLE_DOC=ON -DENABLE_TESTS=ON -DENABLE_CODE_COVERAGE=ON -DENABLE_FUZZ=ON"
|
||||||
|
|
||||||
|
name: "install (freebsd, ${{ matrix.config.name }})"
|
||||||
|
runs-on: ${{ matrix.os }}
|
||||||
|
|
||||||
|
steps:
|
||||||
|
|
||||||
|
- uses: actions/checkout@v6
|
||||||
|
|
||||||
|
- name: Install dependencies, build and run tests, run WeeChat
|
||||||
|
uses: vmactions/freebsd-vm@v1
|
||||||
|
env:
|
||||||
|
CC: ${{ matrix.config.cc }}
|
||||||
|
CXX: ${{ matrix.config.cxx }}
|
||||||
|
TERM: xterm-256color
|
||||||
|
with:
|
||||||
|
envs: "CC CXX TERM"
|
||||||
|
usesh: true
|
||||||
|
prepare: pkg install -y ${{ env.WEECHAT_DEPS_FREEBSD }}
|
||||||
|
run: |
|
||||||
|
./tools/build_test.sh ${{ matrix.config.buildargs }}
|
||||||
|
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_macos:
|
||||||
|
|
||||||
|
strategy:
|
||||||
|
matrix:
|
||||||
|
os:
|
||||||
|
- macos-14
|
||||||
|
config:
|
||||||
|
- name: "gcc"
|
||||||
|
cc: "gcc"
|
||||||
|
cxx: "g++"
|
||||||
|
buildargs: "-DENABLE_MAN=ON -DENABLE_DOC=ON -DENABLE_DOC_INCOMPLETE=ON -DENABLE_PHP=OFF -DENABLE_TESTS=OFF"
|
||||||
|
- name: "clang"
|
||||||
|
cc: "clang"
|
||||||
|
cxx: "clang++"
|
||||||
|
buildargs: "-DENABLE_MAN=ON -DENABLE_DOC=ON -DENABLE_DOC_INCOMPLETE=ON -DENABLE_PHP=OFF -DENABLE_TESTS=OFF"
|
||||||
|
|
||||||
|
name: "install (${{ matrix.os }}, ${{ matrix.config.name }})"
|
||||||
|
runs-on: ${{ matrix.os }}
|
||||||
|
|
||||||
|
steps:
|
||||||
|
|
||||||
|
- name: Setup Homebrew
|
||||||
|
id: setup-homebrew
|
||||||
|
uses: Homebrew/actions/setup-homebrew@main
|
||||||
|
|
||||||
|
- name: Install dependencies
|
||||||
|
run: |
|
||||||
|
brew update
|
||||||
|
brew install ${{ env.WEECHAT_DEPS_MACOS }}
|
||||||
|
|
||||||
|
- uses: actions/checkout@v6
|
||||||
|
|
||||||
|
- name: Build
|
||||||
|
env:
|
||||||
|
CC: ${{ matrix.config.cc }}
|
||||||
|
CXX: ${{ matrix.config.cxx }}
|
||||||
|
RUN_TESTS: "0"
|
||||||
|
JOBS: "2"
|
||||||
|
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"
|
||||||
|
|
||||||
build_debian:
|
build_debian:
|
||||||
|
|
||||||
strategy:
|
strategy:
|
||||||
matrix:
|
matrix:
|
||||||
os:
|
os:
|
||||||
- ubuntu-24.04
|
- ubuntu-26.04
|
||||||
|
|
||||||
name: "${{ matrix.os }} (build Debian)"
|
|
||||||
runs-on: ${{ matrix.os }}
|
runs-on: ${{ matrix.os }}
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
|
|
||||||
- uses: actions/checkout@v4
|
- uses: actions/checkout@v6
|
||||||
|
|
||||||
- name: Install dependencies
|
- name: Install dependencies
|
||||||
run: |
|
run: |
|
||||||
@@ -256,14 +493,13 @@ jobs:
|
|||||||
weechat --build-info
|
weechat --build-info
|
||||||
weechat --run-command "/debug dirs;/debug libs" --run-command "/quit"
|
weechat --run-command "/debug dirs;/debug libs" --run-command "/quit"
|
||||||
|
|
||||||
codeql-analysis:
|
codeql_analysis:
|
||||||
|
|
||||||
strategy:
|
strategy:
|
||||||
matrix:
|
matrix:
|
||||||
os:
|
os:
|
||||||
- ubuntu-24.04
|
- ubuntu-26.04
|
||||||
|
|
||||||
name: "${{ matrix.os }} (CodeQL)"
|
|
||||||
runs-on: ${{ matrix.os }}
|
runs-on: ${{ matrix.os }}
|
||||||
|
|
||||||
permissions:
|
permissions:
|
||||||
@@ -274,15 +510,12 @@ jobs:
|
|||||||
steps:
|
steps:
|
||||||
|
|
||||||
- name: Checkout repository
|
- name: Checkout repository
|
||||||
uses: actions/checkout@v4
|
uses: actions/checkout@v6
|
||||||
|
|
||||||
- name: Install dependencies
|
- name: Install dependencies
|
||||||
run: |
|
run: |
|
||||||
sudo apt-get update -qq
|
sudo apt-get update -qq
|
||||||
sudo apt-get --yes --no-install-recommends install ${{ env.WEECHAT_DEPS_UBUNTU }}
|
sudo apt-get --yes --no-install-recommends install ${{ env.WEECHAT_DEPS_UBUNTU }}
|
||||||
# uninstall php imagick as is causes a crash when loading php plugin (see #2009)
|
|
||||||
sudo apt-get --yes purge php8.3-imagick
|
|
||||||
pipx install msgcheck
|
|
||||||
|
|
||||||
- name: Initialize CodeQL
|
- name: Initialize CodeQL
|
||||||
uses: github/codeql-action/init@v3
|
uses: github/codeql-action/init@v3
|
||||||
@@ -296,160 +529,3 @@ jobs:
|
|||||||
uses: github/codeql-action/analyze@v3
|
uses: github/codeql-action/analyze@v3
|
||||||
with:
|
with:
|
||||||
category: "/language:cpp"
|
category: "/language:cpp"
|
||||||
|
|
||||||
tests_rockylinux:
|
|
||||||
|
|
||||||
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: "rockylinux-9 (${{ matrix.config.name }})"
|
|
||||||
runs-on: ${{ matrix.os }}
|
|
||||||
container:
|
|
||||||
image: rockylinux:9
|
|
||||||
|
|
||||||
steps:
|
|
||||||
|
|
||||||
- uses: actions/checkout@v4
|
|
||||||
|
|
||||||
- name: Install dependencies
|
|
||||||
run: |
|
|
||||||
dnf install -y epel-release
|
|
||||||
dnf config-manager --set-enabled crb
|
|
||||||
dnf install -y ${{ env.WEECHAT_DEPS_ROCKYLINUX }}
|
|
||||||
|
|
||||||
- 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"
|
|
||||||
|
|
||||||
tests_freebsd:
|
|
||||||
|
|
||||||
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: "freebsd-14 (${{ matrix.config.name }})"
|
|
||||||
runs-on: ${{ matrix.os }}
|
|
||||||
|
|
||||||
steps:
|
|
||||||
|
|
||||||
- uses: actions/checkout@v4
|
|
||||||
|
|
||||||
- name: Install dependencies, build and run tests, run WeeChat
|
|
||||||
uses: vmactions/freebsd-vm@v1
|
|
||||||
env:
|
|
||||||
CC: ${{ matrix.config.cc }}
|
|
||||||
CXX: ${{ matrix.config.cxx }}
|
|
||||||
TERM: xterm-256color
|
|
||||||
with:
|
|
||||||
envs: "CC CXX TERM"
|
|
||||||
usesh: true
|
|
||||||
prepare: pkg install -y ${{ env.WEECHAT_DEPS_FREEBSD }}
|
|
||||||
run: |
|
|
||||||
./tools/build_test.sh ${{ matrix.config.buildargs }}
|
|
||||||
weechat --help
|
|
||||||
weechat-curses --help
|
|
||||||
weechat --version
|
|
||||||
weechat --build-info
|
|
||||||
weechat --colors
|
|
||||||
weechat --license
|
|
||||||
weechat --run-command "/debug dirs;/debug libs" --run-command "/quit"
|
|
||||||
|
|
||||||
tests_macos:
|
|
||||||
|
|
||||||
strategy:
|
|
||||||
matrix:
|
|
||||||
os:
|
|
||||||
- macos-14
|
|
||||||
config:
|
|
||||||
- name: "gcc"
|
|
||||||
cc: "gcc"
|
|
||||||
cxx: "g++"
|
|
||||||
buildargs: "-DENABLE_MAN=ON -DENABLE_DOC=ON -DENABLE_DOC_INCOMPLETE=ON -DENABLE_PHP=OFF -DENABLE_TESTS=OFF"
|
|
||||||
- name: "clang"
|
|
||||||
cc: "clang"
|
|
||||||
cxx: "clang++"
|
|
||||||
buildargs: "-DENABLE_MAN=ON -DENABLE_DOC=ON -DENABLE_DOC_INCOMPLETE=ON -DENABLE_PHP=OFF -DENABLE_TESTS=OFF"
|
|
||||||
|
|
||||||
name: "${{ matrix.os }} (${{ matrix.config.name }})"
|
|
||||||
runs-on: ${{ matrix.os }}
|
|
||||||
|
|
||||||
steps:
|
|
||||||
|
|
||||||
- name: Setup Homebrew
|
|
||||||
id: setup-homebrew
|
|
||||||
uses: Homebrew/actions/setup-homebrew@master
|
|
||||||
|
|
||||||
- name: Install dependencies
|
|
||||||
run: |
|
|
||||||
brew update
|
|
||||||
# temporary fix, see: https://github.com/actions/setup-python/issues/577
|
|
||||||
rm -f \
|
|
||||||
/usr/local/bin/2to3 \
|
|
||||||
/usr/local/bin/idle3 \
|
|
||||||
/usr/local/bin/pydoc3 \
|
|
||||||
/usr/local/bin/python3 \
|
|
||||||
/usr/local/bin/python3-config \
|
|
||||||
/usr/local/bin/2to3-3.11 \
|
|
||||||
/usr/local/bin/idle3.11 \
|
|
||||||
/usr/local/bin/pydoc3.11 \
|
|
||||||
/usr/local/bin/python3.11 \
|
|
||||||
/usr/local/bin/python3.11-config \
|
|
||||||
;
|
|
||||||
brew install asciidoctor aspell cjson guile lua pkg-config ruby
|
|
||||||
|
|
||||||
- uses: actions/checkout@v4
|
|
||||||
|
|
||||||
- name: Build
|
|
||||||
env:
|
|
||||||
CC: ${{ matrix.config.cc }}
|
|
||||||
CXX: ${{ matrix.config.cxx }}
|
|
||||||
RUN_TESTS: "0"
|
|
||||||
JOBS: "2"
|
|
||||||
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"
|
|
||||||
|
|||||||
@@ -16,7 +16,7 @@ jobs:
|
|||||||
|
|
||||||
steps:
|
steps:
|
||||||
|
|
||||||
- uses: actions/checkout@v4
|
- uses: actions/checkout@v6
|
||||||
|
|
||||||
- name: REUSE Compliance Check
|
- name: REUSE Compliance Check
|
||||||
uses: fsfe/reuse-action@v4
|
uses: fsfe/reuse-action@v4
|
||||||
|
|||||||
+282
@@ -0,0 +1,282 @@
|
|||||||
|
Atheme
|
||||||
|
Autojoin
|
||||||
|
Charset
|
||||||
|
Diffie-Hellman
|
||||||
|
Esc
|
||||||
|
FlashCode
|
||||||
|
GnuTLS
|
||||||
|
Hashtable
|
||||||
|
Helleu
|
||||||
|
IPs
|
||||||
|
Sébastien
|
||||||
|
WeeChat
|
||||||
|
Xfer
|
||||||
|
abc
|
||||||
|
ack
|
||||||
|
acks
|
||||||
|
addcompletion
|
||||||
|
addinput
|
||||||
|
addoff
|
||||||
|
addraw
|
||||||
|
addreplace
|
||||||
|
addreplacecompletion
|
||||||
|
addword
|
||||||
|
algo
|
||||||
|
allchan
|
||||||
|
allpv
|
||||||
|
alnum
|
||||||
|
andrew
|
||||||
|
ansi
|
||||||
|
api
|
||||||
|
args
|
||||||
|
argsN
|
||||||
|
aspell
|
||||||
|
autoconnect
|
||||||
|
autojoin
|
||||||
|
autoload
|
||||||
|
autoloaded
|
||||||
|
autoreconnect
|
||||||
|
autorejoin
|
||||||
|
bg
|
||||||
|
bindctxt
|
||||||
|
bitlbee
|
||||||
|
bkl
|
||||||
|
blocksize
|
||||||
|
bool
|
||||||
|
buflist
|
||||||
|
cJSON
|
||||||
|
calc
|
||||||
|
ccc
|
||||||
|
charset
|
||||||
|
charsets
|
||||||
|
chghost
|
||||||
|
chmod
|
||||||
|
cleartext
|
||||||
|
clientinfo
|
||||||
|
cmd
|
||||||
|
codepoint
|
||||||
|
concat
|
||||||
|
cond
|
||||||
|
config
|
||||||
|
crypted
|
||||||
|
ctcp
|
||||||
|
ctrl
|
||||||
|
ctrl-
|
||||||
|
ctrl-c
|
||||||
|
ctrl-h
|
||||||
|
ctrl-n
|
||||||
|
ctrl-x
|
||||||
|
ctrl-y
|
||||||
|
cutscr
|
||||||
|
cxx
|
||||||
|
darkgray
|
||||||
|
deinit
|
||||||
|
deldict
|
||||||
|
deloutq
|
||||||
|
delvar
|
||||||
|
dhkey
|
||||||
|
dirs
|
||||||
|
dlclose
|
||||||
|
eg
|
||||||
|
enum
|
||||||
|
enums
|
||||||
|
env
|
||||||
|
esc
|
||||||
|
eval
|
||||||
|
fd
|
||||||
|
ffff
|
||||||
|
fg
|
||||||
|
fifo
|
||||||
|
flashcode
|
||||||
|
flashtux
|
||||||
|
freebsd
|
||||||
|
fset
|
||||||
|
fsync
|
||||||
|
gcrypt
|
||||||
|
getrlimit
|
||||||
|
getrusage
|
||||||
|
gnutls
|
||||||
|
grayscale
|
||||||
|
gui
|
||||||
|
gzip
|
||||||
|
halfop
|
||||||
|
halfops
|
||||||
|
hashtable
|
||||||
|
hdata
|
||||||
|
hh
|
||||||
|
horiz
|
||||||
|
hostname
|
||||||
|
hostnames
|
||||||
|
hotlist
|
||||||
|
hsignal
|
||||||
|
http
|
||||||
|
https
|
||||||
|
hup
|
||||||
|
ident
|
||||||
|
ie
|
||||||
|
il
|
||||||
|
inclose
|
||||||
|
infolist
|
||||||
|
infolists
|
||||||
|
infos
|
||||||
|
installremove
|
||||||
|
irc
|
||||||
|
ison
|
||||||
|
javascript
|
||||||
|
json
|
||||||
|
kf
|
||||||
|
kickban
|
||||||
|
killall
|
||||||
|
lengthscr
|
||||||
|
libera
|
||||||
|
libgcrypt
|
||||||
|
libs
|
||||||
|
lightblue
|
||||||
|
lightcyan
|
||||||
|
lightgreen
|
||||||
|
lightmagenta
|
||||||
|
lightred
|
||||||
|
linux
|
||||||
|
listdefault
|
||||||
|
listdict
|
||||||
|
listdiff
|
||||||
|
listfull
|
||||||
|
listitems
|
||||||
|
listrelay
|
||||||
|
listvar
|
||||||
|
lua
|
||||||
|
mallinfo
|
||||||
|
malloc
|
||||||
|
mirc
|
||||||
|
modelist
|
||||||
|
msg
|
||||||
|
msgN
|
||||||
|
msgbuffer
|
||||||
|
multiline
|
||||||
|
ncurses
|
||||||
|
newbuffer
|
||||||
|
nf
|
||||||
|
nickbot
|
||||||
|
nicklist
|
||||||
|
nickserv
|
||||||
|
nl
|
||||||
|
noautoload
|
||||||
|
nobg
|
||||||
|
nocl
|
||||||
|
noflush
|
||||||
|
nohelp
|
||||||
|
nojoin
|
||||||
|
noln
|
||||||
|
nonblock
|
||||||
|
nooption
|
||||||
|
norc
|
||||||
|
nostdin
|
||||||
|
nosw
|
||||||
|
noswitch
|
||||||
|
notls
|
||||||
|
num
|
||||||
|
oc
|
||||||
|
oerr
|
||||||
|
oftc
|
||||||
|
ok
|
||||||
|
ol
|
||||||
|
osinfo
|
||||||
|
outqueue
|
||||||
|
ovh
|
||||||
|
paramN
|
||||||
|
params
|
||||||
|
perl
|
||||||
|
permessage-deflate
|
||||||
|
pgdn
|
||||||
|
pgup
|
||||||
|
pid
|
||||||
|
prev
|
||||||
|
privmsg
|
||||||
|
ptr
|
||||||
|
pv
|
||||||
|
py
|
||||||
|
quickstart
|
||||||
|
rc
|
||||||
|
realname
|
||||||
|
recv
|
||||||
|
reinitializing
|
||||||
|
reop
|
||||||
|
resetall
|
||||||
|
resetctxt
|
||||||
|
revindex
|
||||||
|
revscr
|
||||||
|
rgb
|
||||||
|
rlimit
|
||||||
|
rusage
|
||||||
|
rw-rw-r--
|
||||||
|
sasl
|
||||||
|
setauto
|
||||||
|
setdict
|
||||||
|
setname
|
||||||
|
setnew
|
||||||
|
setrlimit
|
||||||
|
setvar
|
||||||
|
signon
|
||||||
|
skipempty
|
||||||
|
sockaddr
|
||||||
|
splith
|
||||||
|
splitv
|
||||||
|
stderr
|
||||||
|
stdin
|
||||||
|
stdout
|
||||||
|
strcasecmp
|
||||||
|
strftime
|
||||||
|
strftimeval
|
||||||
|
strlen
|
||||||
|
sublist
|
||||||
|
subplugin
|
||||||
|
sw
|
||||||
|
sys
|
||||||
|
tThe
|
||||||
|
tcl
|
||||||
|
tg
|
||||||
|
themable
|
||||||
|
tls
|
||||||
|
tlscertkey
|
||||||
|
toggleautoload
|
||||||
|
togglecmd
|
||||||
|
toto
|
||||||
|
totp
|
||||||
|
truncature
|
||||||
|
un
|
||||||
|
unalias
|
||||||
|
unban
|
||||||
|
unbindctxt
|
||||||
|
undef
|
||||||
|
unescaped
|
||||||
|
unhide
|
||||||
|
unhold
|
||||||
|
unicode
|
||||||
|
unix
|
||||||
|
unmark
|
||||||
|
unmerge
|
||||||
|
unzoom
|
||||||
|
uptime
|
||||||
|
url
|
||||||
|
urlserver
|
||||||
|
usec
|
||||||
|
userhost-in-names
|
||||||
|
usr
|
||||||
|
util
|
||||||
|
valgrind
|
||||||
|
versiongit
|
||||||
|
waitpid
|
||||||
|
wcswidth
|
||||||
|
wctype
|
||||||
|
wcwidth
|
||||||
|
websocket
|
||||||
|
websockets
|
||||||
|
weechat
|
||||||
|
whois
|
||||||
|
www
|
||||||
|
xdigit
|
||||||
|
xfer
|
||||||
|
xyz
|
||||||
|
yy
|
||||||
|
zlib
|
||||||
|
zstd
|
||||||
+618
@@ -0,0 +1,618 @@
|
|||||||
|
Atheme
|
||||||
|
Autojoin
|
||||||
|
Curl
|
||||||
|
Curses
|
||||||
|
Debug
|
||||||
|
Dec
|
||||||
|
Diffie-Hellman
|
||||||
|
Filter
|
||||||
|
FlashCode
|
||||||
|
GnuTLS
|
||||||
|
Guile
|
||||||
|
Helleu
|
||||||
|
IPs
|
||||||
|
Lag
|
||||||
|
Ping
|
||||||
|
Protocol
|
||||||
|
Relay
|
||||||
|
Remote
|
||||||
|
Reop
|
||||||
|
Tab
|
||||||
|
Trigger
|
||||||
|
Triggers
|
||||||
|
Typing
|
||||||
|
URLs
|
||||||
|
Wallops
|
||||||
|
WeeChat
|
||||||
|
Xfer
|
||||||
|
account
|
||||||
|
account-
|
||||||
|
account-notify
|
||||||
|
account-tag
|
||||||
|
ack
|
||||||
|
acks
|
||||||
|
add
|
||||||
|
addcompletion
|
||||||
|
addinput
|
||||||
|
addoff
|
||||||
|
addraw
|
||||||
|
addreplace
|
||||||
|
addreplacecompletion
|
||||||
|
addresse
|
||||||
|
addword
|
||||||
|
align
|
||||||
|
all
|
||||||
|
allchan
|
||||||
|
allow
|
||||||
|
allowed
|
||||||
|
allpv
|
||||||
|
alnum
|
||||||
|
alt
|
||||||
|
alt-c
|
||||||
|
alt-k
|
||||||
|
alt-s
|
||||||
|
alt-v
|
||||||
|
alt-z
|
||||||
|
andrew
|
||||||
|
ansi
|
||||||
|
apply
|
||||||
|
area
|
||||||
|
args
|
||||||
|
argsN
|
||||||
|
aspell
|
||||||
|
attributes
|
||||||
|
auth
|
||||||
|
autoconnect
|
||||||
|
autojoin
|
||||||
|
autoload
|
||||||
|
autorejoin
|
||||||
|
away
|
||||||
|
away-notify
|
||||||
|
backspace
|
||||||
|
backup
|
||||||
|
backup-
|
||||||
|
backups
|
||||||
|
bare
|
||||||
|
bash
|
||||||
|
beep
|
||||||
|
before
|
||||||
|
beginning
|
||||||
|
beyond
|
||||||
|
bg
|
||||||
|
bin
|
||||||
|
bind
|
||||||
|
bindctxt
|
||||||
|
bitlbee
|
||||||
|
bkl
|
||||||
|
blue
|
||||||
|
bold
|
||||||
|
bool
|
||||||
|
boolean
|
||||||
|
both
|
||||||
|
bottom
|
||||||
|
bracketed
|
||||||
|
brown
|
||||||
|
buflist
|
||||||
|
cJSON
|
||||||
|
calc
|
||||||
|
callbacks
|
||||||
|
cap-notify
|
||||||
|
capabilities
|
||||||
|
capability
|
||||||
|
ccc
|
||||||
|
cert
|
||||||
|
certs
|
||||||
|
changed
|
||||||
|
channel
|
||||||
|
charset
|
||||||
|
charsets
|
||||||
|
check
|
||||||
|
chghost
|
||||||
|
chmod
|
||||||
|
cipher
|
||||||
|
clear
|
||||||
|
clientinfo
|
||||||
|
clipboard
|
||||||
|
cmd
|
||||||
|
color
|
||||||
|
colors
|
||||||
|
command
|
||||||
|
commands
|
||||||
|
complete
|
||||||
|
completion
|
||||||
|
concat
|
||||||
|
cond
|
||||||
|
confirm
|
||||||
|
connect
|
||||||
|
connected
|
||||||
|
connecting
|
||||||
|
control
|
||||||
|
copy
|
||||||
|
core
|
||||||
|
count
|
||||||
|
crypt
|
||||||
|
ctcp
|
||||||
|
ctrl
|
||||||
|
ctrl-
|
||||||
|
ctrl-c
|
||||||
|
ctrl-h
|
||||||
|
ctrl-n
|
||||||
|
ctrl-x
|
||||||
|
ctrl-y
|
||||||
|
curl
|
||||||
|
current
|
||||||
|
cursor
|
||||||
|
cut
|
||||||
|
cutscr
|
||||||
|
cxx
|
||||||
|
d'ignore
|
||||||
|
d'infolist
|
||||||
|
daemon
|
||||||
|
darkgray
|
||||||
|
days
|
||||||
|
debug
|
||||||
|
decode
|
||||||
|
decrypt
|
||||||
|
default
|
||||||
|
define
|
||||||
|
deinit
|
||||||
|
del
|
||||||
|
deldict
|
||||||
|
delete
|
||||||
|
deloutq
|
||||||
|
delvar
|
||||||
|
desc
|
||||||
|
describe
|
||||||
|
dhkey
|
||||||
|
dict
|
||||||
|
diff
|
||||||
|
dim
|
||||||
|
dir
|
||||||
|
dirs
|
||||||
|
disable
|
||||||
|
discard
|
||||||
|
disconnect
|
||||||
|
disconnected
|
||||||
|
display
|
||||||
|
displayed
|
||||||
|
dlclose
|
||||||
|
doc-gen
|
||||||
|
down
|
||||||
|
download
|
||||||
|
draft
|
||||||
|
dummy
|
||||||
|
dump
|
||||||
|
eat
|
||||||
|
echo-message
|
||||||
|
edge
|
||||||
|
emphasized
|
||||||
|
empty
|
||||||
|
enable
|
||||||
|
enabled
|
||||||
|
end
|
||||||
|
enum
|
||||||
|
error
|
||||||
|
esc
|
||||||
|
eval
|
||||||
|
example
|
||||||
|
exclude
|
||||||
|
exec
|
||||||
|
extended-join
|
||||||
|
external
|
||||||
|
exts
|
||||||
|
fail
|
||||||
|
failed
|
||||||
|
fast
|
||||||
|
fd
|
||||||
|
ffff
|
||||||
|
fifo
|
||||||
|
filter
|
||||||
|
fingerprint
|
||||||
|
first
|
||||||
|
flashcode
|
||||||
|
flashtux
|
||||||
|
foo
|
||||||
|
formatted
|
||||||
|
free
|
||||||
|
freebsd
|
||||||
|
fset
|
||||||
|
fsync
|
||||||
|
gcrypt
|
||||||
|
get
|
||||||
|
getrlimit
|
||||||
|
getrusage
|
||||||
|
ghost
|
||||||
|
giga-octets
|
||||||
|
git
|
||||||
|
glitch
|
||||||
|
gnutls
|
||||||
|
grab
|
||||||
|
group
|
||||||
|
gzip
|
||||||
|
halfop
|
||||||
|
halfops
|
||||||
|
handshake
|
||||||
|
hash
|
||||||
|
hashtable
|
||||||
|
hdata
|
||||||
|
he
|
||||||
|
headless
|
||||||
|
help
|
||||||
|
here
|
||||||
|
hexa
|
||||||
|
hh
|
||||||
|
hidden
|
||||||
|
hide
|
||||||
|
highest
|
||||||
|
highlight
|
||||||
|
highlights
|
||||||
|
history
|
||||||
|
hold
|
||||||
|
hook
|
||||||
|
hooks
|
||||||
|
horiz
|
||||||
|
host
|
||||||
|
hotlist
|
||||||
|
hsignal
|
||||||
|
hup
|
||||||
|
ident
|
||||||
|
identify
|
||||||
|
ids
|
||||||
|
ignored
|
||||||
|
inclose
|
||||||
|
include
|
||||||
|
indent
|
||||||
|
infolist
|
||||||
|
infolistes
|
||||||
|
infolists
|
||||||
|
init
|
||||||
|
install
|
||||||
|
installremove
|
||||||
|
int
|
||||||
|
integer
|
||||||
|
interval
|
||||||
|
invite-notify
|
||||||
|
irc
|
||||||
|
ison
|
||||||
|
iterations
|
||||||
|
javascript
|
||||||
|
join
|
||||||
|
json
|
||||||
|
jump
|
||||||
|
keep
|
||||||
|
key
|
||||||
|
keys
|
||||||
|
kf
|
||||||
|
kickban
|
||||||
|
kill
|
||||||
|
killall
|
||||||
|
l'autojoin
|
||||||
|
l'id
|
||||||
|
lag
|
||||||
|
last
|
||||||
|
layout
|
||||||
|
leave
|
||||||
|
left
|
||||||
|
legacy
|
||||||
|
length
|
||||||
|
lengthscr
|
||||||
|
level
|
||||||
|
lib
|
||||||
|
libera
|
||||||
|
libgcrypt
|
||||||
|
libs
|
||||||
|
lightblue
|
||||||
|
lightcyan
|
||||||
|
lightgreen
|
||||||
|
lightmagenta
|
||||||
|
lightred
|
||||||
|
limit
|
||||||
|
line
|
||||||
|
lines
|
||||||
|
linux
|
||||||
|
list
|
||||||
|
listdefault
|
||||||
|
listdict
|
||||||
|
listdiff
|
||||||
|
listen
|
||||||
|
listfull
|
||||||
|
listitems
|
||||||
|
listrelay
|
||||||
|
listvar
|
||||||
|
load
|
||||||
|
logger
|
||||||
|
loggers
|
||||||
|
lower
|
||||||
|
lowest
|
||||||
|
ls
|
||||||
|
lua
|
||||||
|
mallinfo
|
||||||
|
malloc
|
||||||
|
marked
|
||||||
|
mask
|
||||||
|
memory
|
||||||
|
merge
|
||||||
|
merged
|
||||||
|
meta
|
||||||
|
meta-
|
||||||
|
method
|
||||||
|
mirc
|
||||||
|
missing
|
||||||
|
modified
|
||||||
|
mouse
|
||||||
|
move
|
||||||
|
msg
|
||||||
|
msgN
|
||||||
|
msgbuffer
|
||||||
|
multi-prefix
|
||||||
|
multiline
|
||||||
|
my
|
||||||
|
n-
|
||||||
|
name
|
||||||
|
names
|
||||||
|
ncurses
|
||||||
|
near
|
||||||
|
network
|
||||||
|
newbuffer
|
||||||
|
newline
|
||||||
|
next
|
||||||
|
nf
|
||||||
|
nick
|
||||||
|
nickbot
|
||||||
|
nicklist
|
||||||
|
nicks
|
||||||
|
nickserv
|
||||||
|
no-connect
|
||||||
|
noautoload
|
||||||
|
nobg
|
||||||
|
nocl
|
||||||
|
noflush
|
||||||
|
nohelp
|
||||||
|
nojoin
|
||||||
|
noln
|
||||||
|
nonblock
|
||||||
|
nooption
|
||||||
|
norc
|
||||||
|
nosh
|
||||||
|
nostdin
|
||||||
|
nosw
|
||||||
|
noswitch
|
||||||
|
notify
|
||||||
|
notls
|
||||||
|
null
|
||||||
|
num
|
||||||
|
number
|
||||||
|
numeric
|
||||||
|
object
|
||||||
|
oerr
|
||||||
|
of
|
||||||
|
offline
|
||||||
|
oftc
|
||||||
|
ok
|
||||||
|
ol
|
||||||
|
ops
|
||||||
|
osinfo
|
||||||
|
ovh
|
||||||
|
paramN
|
||||||
|
params
|
||||||
|
parted
|
||||||
|
pass
|
||||||
|
passphrase
|
||||||
|
password
|
||||||
|
password-store
|
||||||
|
paste
|
||||||
|
path
|
||||||
|
paused
|
||||||
|
pct
|
||||||
|
pending
|
||||||
|
perl
|
||||||
|
permessage-deflate
|
||||||
|
pgdn
|
||||||
|
pgup
|
||||||
|
pid
|
||||||
|
ping
|
||||||
|
pong
|
||||||
|
pos
|
||||||
|
prefix
|
||||||
|
prev
|
||||||
|
previous
|
||||||
|
print
|
||||||
|
priority
|
||||||
|
private
|
||||||
|
privmsg
|
||||||
|
property
|
||||||
|
ptr
|
||||||
|
py
|
||||||
|
quit
|
||||||
|
quoted
|
||||||
|
rafraichie
|
||||||
|
rafraichir
|
||||||
|
rafraichissement
|
||||||
|
random
|
||||||
|
raw
|
||||||
|
rc
|
||||||
|
realname
|
||||||
|
reconnect
|
||||||
|
recreate
|
||||||
|
recv
|
||||||
|
red
|
||||||
|
redirected
|
||||||
|
redo
|
||||||
|
refresh
|
||||||
|
regex
|
||||||
|
register
|
||||||
|
relay
|
||||||
|
reload
|
||||||
|
remote
|
||||||
|
remove
|
||||||
|
rename
|
||||||
|
renumber
|
||||||
|
reorder
|
||||||
|
rep
|
||||||
|
repeat
|
||||||
|
reply
|
||||||
|
req
|
||||||
|
reset
|
||||||
|
resetall
|
||||||
|
resetctxt
|
||||||
|
resize
|
||||||
|
restart
|
||||||
|
restore
|
||||||
|
return
|
||||||
|
rev
|
||||||
|
revindex
|
||||||
|
revscr
|
||||||
|
rgb
|
||||||
|
right
|
||||||
|
rlimit
|
||||||
|
root
|
||||||
|
ruby
|
||||||
|
run
|
||||||
|
run-command
|
||||||
|
runtime
|
||||||
|
rusage
|
||||||
|
rw-rw-r--
|
||||||
|
réinit
|
||||||
|
safe
|
||||||
|
sasl
|
||||||
|
save
|
||||||
|
scheme
|
||||||
|
screen
|
||||||
|
scroll
|
||||||
|
search
|
||||||
|
secure
|
||||||
|
selected
|
||||||
|
send
|
||||||
|
server
|
||||||
|
server-time
|
||||||
|
setauto
|
||||||
|
setdict
|
||||||
|
setname
|
||||||
|
setnew
|
||||||
|
setrlimit
|
||||||
|
setvar
|
||||||
|
sh
|
||||||
|
share
|
||||||
|
shift
|
||||||
|
shift-
|
||||||
|
shift-Tab
|
||||||
|
size
|
||||||
|
skipempty
|
||||||
|
sockaddr
|
||||||
|
sorted
|
||||||
|
space
|
||||||
|
speaking
|
||||||
|
spell
|
||||||
|
split
|
||||||
|
splith
|
||||||
|
splitv
|
||||||
|
ss
|
||||||
|
start
|
||||||
|
status
|
||||||
|
stderr
|
||||||
|
stdin
|
||||||
|
stdout
|
||||||
|
str
|
||||||
|
strcasecmp
|
||||||
|
strftime
|
||||||
|
strftimeval
|
||||||
|
strip
|
||||||
|
strlen
|
||||||
|
sucks
|
||||||
|
suffix
|
||||||
|
suggest
|
||||||
|
sum
|
||||||
|
sw
|
||||||
|
switch
|
||||||
|
sys
|
||||||
|
tLe
|
||||||
|
tab
|
||||||
|
target
|
||||||
|
tcl
|
||||||
|
term
|
||||||
|
text
|
||||||
|
tg
|
||||||
|
themable
|
||||||
|
theme
|
||||||
|
themes
|
||||||
|
time
|
||||||
|
timeout
|
||||||
|
timer
|
||||||
|
tiny
|
||||||
|
title
|
||||||
|
tls
|
||||||
|
tlscertkey
|
||||||
|
to
|
||||||
|
toggle
|
||||||
|
toggleautoload
|
||||||
|
togglecmd
|
||||||
|
topic
|
||||||
|
totp
|
||||||
|
trigger
|
||||||
|
triggers
|
||||||
|
trim
|
||||||
|
typing
|
||||||
|
téra-octets
|
||||||
|
unalias
|
||||||
|
unavailable
|
||||||
|
unban
|
||||||
|
unbind
|
||||||
|
unbindctxt
|
||||||
|
undef
|
||||||
|
undo
|
||||||
|
unhide
|
||||||
|
unicode
|
||||||
|
unix
|
||||||
|
unload
|
||||||
|
unmerge
|
||||||
|
unread
|
||||||
|
unset
|
||||||
|
up
|
||||||
|
update
|
||||||
|
upper
|
||||||
|
url
|
||||||
|
urlserver
|
||||||
|
usec
|
||||||
|
userhost-in-names
|
||||||
|
username
|
||||||
|
users
|
||||||
|
usr
|
||||||
|
util
|
||||||
|
valer
|
||||||
|
valgrind
|
||||||
|
verbose
|
||||||
|
verify
|
||||||
|
versiongit
|
||||||
|
visited
|
||||||
|
voice
|
||||||
|
wait
|
||||||
|
waiting
|
||||||
|
waitpid
|
||||||
|
wallops
|
||||||
|
wcswidth
|
||||||
|
wctype
|
||||||
|
wcwidth
|
||||||
|
websocket
|
||||||
|
websockets
|
||||||
|
weechat
|
||||||
|
where
|
||||||
|
white
|
||||||
|
whitespace
|
||||||
|
whois
|
||||||
|
width
|
||||||
|
window
|
||||||
|
windows
|
||||||
|
without
|
||||||
|
word
|
||||||
|
words
|
||||||
|
xdigit
|
||||||
|
xfer
|
||||||
|
xxx
|
||||||
|
xyz
|
||||||
|
yellow
|
||||||
|
yes
|
||||||
|
yy
|
||||||
|
zero
|
||||||
|
zlib
|
||||||
|
zstd
|
||||||
|
Échap
|
||||||
@@ -0,0 +1,24 @@
|
|||||||
|
# SPDX-FileCopyrightText: 2026 Sébastien Helleu <flashcode@flashtux.org>
|
||||||
|
#
|
||||||
|
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
|
|
||||||
|
[check]
|
||||||
|
select = [
|
||||||
|
"checks",
|
||||||
|
]
|
||||||
|
ignore = [
|
||||||
|
"acronyms",
|
||||||
|
"brackets",
|
||||||
|
"double-quotes",
|
||||||
|
"double-words",
|
||||||
|
"functions",
|
||||||
|
"html-tags",
|
||||||
|
"paths",
|
||||||
|
"unchanged",
|
||||||
|
"urls",
|
||||||
|
]
|
||||||
|
path_words = "."
|
||||||
|
langs = [
|
||||||
|
"en_US",
|
||||||
|
"fr",
|
||||||
|
]
|
||||||
+99
-1
@@ -6,11 +6,109 @@ SPDX-License-Identifier: GPL-3.0-or-later
|
|||||||
|
|
||||||
# WeeChat ChangeLog
|
# WeeChat ChangeLog
|
||||||
|
|
||||||
## Version 4.8.3 (under dev)
|
## Version 4.10.0 (under dev)
|
||||||
|
|
||||||
|
### Changed
|
||||||
|
|
||||||
|
- core: add condition on connected relay api clients in default value of option weechat.look.hotlist_add_conditions
|
||||||
|
- core: add `/mute` in default command for key `Alt`+`=` (toggle filters)
|
||||||
|
- api: change type of parameter "pos_option_name" to "const char **" in function config_search_with_string
|
||||||
|
- relay/api: add field "last_read_line_id" in GET /api/buffers
|
||||||
|
|
||||||
|
### Added
|
||||||
|
|
||||||
|
- core: add command `/theme` ([#1338](https://github.com/weechat/weechat/issues/1338))
|
||||||
|
- core: add built-in "light" theme, applied automatically on first start on light-background terminals ([#1338](https://github.com/weechat/weechat/issues/1338))
|
||||||
|
- core: add `themable` flag on configuration options ([#1338](https://github.com/weechat/weechat/issues/1338))
|
||||||
|
- core: add options weechat.look.theme and weechat.look.theme_backup ([#1338](https://github.com/weechat/weechat/issues/1338))
|
||||||
|
- api: add function theme_register ([#1338](https://github.com/weechat/weechat/issues/1338))
|
||||||
|
- fset: add filter `t:themable` ([#1338](https://github.com/weechat/weechat/issues/1338))
|
||||||
|
- relay/api: add resource `GET /api/scripts`
|
||||||
|
- relay: add option relay.network.unix_socket_permissions ([#2317](https://github.com/weechat/weechat/issues/2317))
|
||||||
|
- script: add info "script_languages"
|
||||||
|
|
||||||
|
### Fixed
|
||||||
|
|
||||||
|
- core: fix option weechat.look.color_real_white not applied when color is "white" on 16+ colors terminals ([#1742](https://github.com/weechat/weechat/issues/1742))
|
||||||
|
- core: fix buffer overflow in connection to SOCKS5 proxy ([#2325](https://github.com/weechat/weechat/issues/2325))
|
||||||
|
- core: fix possible buffer overflow in command /color alias ([#2330](https://github.com/weechat/weechat/issues/2330))
|
||||||
|
- core: fix possible buffer overflow in list of commands displayed by /help ([#2330](https://github.com/weechat/weechat/issues/2330))
|
||||||
|
- api: fix infinite loop in function string_replace when the search string is empty
|
||||||
|
- api: do not free dynamic string on error in function string_dyn_concat
|
||||||
|
- 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
|
||||||
|
- guile, lua, perl, python, ruby, tcl: fix conversion of dates in the API functions
|
||||||
|
- irc: limit size of data received from the server to prevent memory exhaustion
|
||||||
|
- irc: fix out-of-bounds read on incoming DCC command with a quoted filename ending the message ([#2322](https://github.com/weechat/weechat/issues/2322))
|
||||||
|
- irc: fix conversion of dates in received messages
|
||||||
|
- relay: limit size of decompressed websocket frame with permessage-deflate to prevent memory exhaustion ([GHSA-v2v4-45wm-5cr3](https://github.com/weechat/weechat/security/advisories/GHSA-v2v4-45wm-5cr3), [CVE-2026-53524](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2026-53524))
|
||||||
|
- relay: limit size of received websocket frame and HTTP body to prevent memory exhaustion
|
||||||
|
- relay: limit size of partial message received while reading an HTTP request to prevent memory exhaustion
|
||||||
|
- relay: fix timing attack on password authentication ([GHSA-vhv8-g2r9-cwcc](https://github.com/weechat/weechat/security/advisories/GHSA-vhv8-g2r9-cwcc), [CVE-2026-53525](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2026-53525))
|
||||||
|
- relay: fix out-of-bounds read in dump of data ([#2324](https://github.com/weechat/weechat/issues/2324))
|
||||||
|
- relay/api: fix memory leak in resources "handshake", "input" and "completion" ([GHSA-wmpc-m6g9-fwj8](https://github.com/weechat/weechat/security/advisories/GHSA-wmpc-m6g9-fwj8))
|
||||||
|
- relay: fix read of uncompressed websocket frame ([#2331](https://github.com/weechat/weechat/issues/2331))
|
||||||
|
- api, relay: fix timing attack on TOTP validation ([GHSA-vhv8-g2r9-cwcc](https://github.com/weechat/weechat/security/advisories/GHSA-vhv8-g2r9-cwcc), [CVE-2026-53525](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2026-53525))
|
||||||
|
- xfer: replace directory separator in remote nick by underscore in download filename to prevent writing the file outside the download directory ([#2321](https://github.com/weechat/weechat/issues/2321))
|
||||||
|
- xfer: fix out-of-bounds read when receiving empty line in DCC chat ([#2323](https://github.com/weechat/weechat/issues/2323))
|
||||||
|
- xfer: fix out-of-bounds write in xfer file transfer resume ([#2326](https://github.com/weechat/weechat/issues/2326))
|
||||||
|
|
||||||
|
## Version 4.9.3 (2026-07-05)
|
||||||
|
|
||||||
|
### Fixed
|
||||||
|
|
||||||
|
- core: fix buffer overflow in connection to SOCKS5 proxy ([#2325](https://github.com/weechat/weechat/issues/2325))
|
||||||
|
- core: fix possible buffer overflow in command /color alias ([#2330](https://github.com/weechat/weechat/issues/2330))
|
||||||
|
- core: fix possible buffer overflow in list of commands displayed by /help ([#2330](https://github.com/weechat/weechat/issues/2330))
|
||||||
|
- api: do not free dynamic string on error in function string_dyn_concat
|
||||||
|
- relay/api: fix memory leak in resources "handshake", "input" and "completion" ([GHSA-wmpc-m6g9-fwj8](https://github.com/weechat/weechat/security/advisories/GHSA-wmpc-m6g9-fwj8))
|
||||||
|
- relay: fix read of uncompressed websocket frame ([#2331](https://github.com/weechat/weechat/issues/2331))
|
||||||
|
- xfer: fix out-of-bounds write in xfer file transfer resume ([#2326](https://github.com/weechat/weechat/issues/2326))
|
||||||
|
|
||||||
|
## Version 4.9.2 (2026-06-07)
|
||||||
|
|
||||||
|
### Fixed
|
||||||
|
|
||||||
|
- api: fix infinite loop in function string_replace when the search string is empty
|
||||||
|
- irc: limit size of data received from the server to prevent memory exhaustion
|
||||||
|
- irc: fix out-of-bounds read on incoming DCC command with a quoted filename ending the message ([#2322](https://github.com/weechat/weechat/issues/2322))
|
||||||
|
- relay: limit size of received websocket frame and HTTP body to prevent memory exhaustion
|
||||||
|
- relay: limit size of partial message received while reading an HTTP request to prevent memory exhaustion
|
||||||
|
- relay: fix out-of-bounds read in dump of data ([#2324](https://github.com/weechat/weechat/issues/2324))
|
||||||
|
- xfer: replace directory separator in remote nick by underscore in download filename to prevent writing the file outside the download directory ([#2321](https://github.com/weechat/weechat/issues/2321))
|
||||||
|
- xfer: fix out-of-bounds read when receiving empty line in DCC chat ([#2323](https://github.com/weechat/weechat/issues/2323))
|
||||||
|
|
||||||
|
## 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), [CVE-2026-53524](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2026-53524))
|
||||||
|
- relay: fix timing attack on password authentication ([GHSA-vhv8-g2r9-cwcc](https://github.com/weechat/weechat/security/advisories/GHSA-vhv8-g2r9-cwcc), [CVE-2026-53525](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2026-53525))
|
||||||
|
- api, relay: fix timing attack on TOTP validation ([GHSA-vhv8-g2r9-cwcc](https://github.com/weechat/weechat/security/advisories/GHSA-vhv8-g2r9-cwcc), [CVE-2026-53525](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2026-53525))
|
||||||
|
|
||||||
|
## Version 4.9.0 (2026-03-29)
|
||||||
|
|
||||||
|
### Changed
|
||||||
|
|
||||||
|
- core: add option `-e` to evaluate all commands before executing them in command `/eval`
|
||||||
|
- xfer: evaluate option xfer.network.own_ip
|
||||||
|
|
||||||
|
### Added
|
||||||
|
|
||||||
|
- typing: add option typing.look.item_text ([#2305](https://github.com/weechat/weechat/issues/2305))
|
||||||
|
|
||||||
### Fixed
|
### Fixed
|
||||||
|
|
||||||
- core: fix crash with `/eval` when the current buffer is closed in a command
|
- core: fix crash with `/eval` when the current buffer is closed in a command
|
||||||
|
- core: fix buffer size in function util_parse_time, causing buffer overflow error in unit tests
|
||||||
|
- irc: fix display of CTCP query sent multiple times to the same user when capability echo-message is enabled ([#2309](https://github.com/weechat/weechat/issues/2309))
|
||||||
|
- irc: fix unit of server option `anti_flood` from seconds to milliseconds in output of `/server listfull`
|
||||||
|
- irc: fix creation of irc.msgbuffer option without a server name
|
||||||
|
- irc: ignore self join if the channel is already joined ([#2291](https://github.com/weechat/weechat/issues/2291))
|
||||||
|
- relay/api: fix memory leaks in resources "ping" and "sync"
|
||||||
|
- relay/api: fix memory leak in receive of message from remote WeeChat
|
||||||
|
|
||||||
## Version 4.8.2 (2026-03-06)
|
## Version 4.8.2 (2026-03-06)
|
||||||
|
|
||||||
|
|||||||
+34
-36
@@ -28,6 +28,7 @@ project(weechat C)
|
|||||||
# CMake options
|
# CMake options
|
||||||
set(CMAKE_VERBOSE_MAKEFILE OFF)
|
set(CMAKE_VERBOSE_MAKEFILE OFF)
|
||||||
set(CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/cmake" "${CMAKE_MODULE_PATH}")
|
set(CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/cmake" "${CMAKE_MODULE_PATH}")
|
||||||
|
set(CMAKE_POSITION_INDEPENDENT_CODE ON)
|
||||||
set(CMAKE_SKIP_RPATH ON)
|
set(CMAKE_SKIP_RPATH ON)
|
||||||
|
|
||||||
# compiler options
|
# compiler options
|
||||||
@@ -52,16 +53,8 @@ else()
|
|||||||
set(VERSION "${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_PATCH}")
|
set(VERSION "${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_PATCH}")
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
# license
|
|
||||||
set(LICENSE "GPL3")
|
|
||||||
|
|
||||||
# add definitions for version and license
|
# add definitions for version and license
|
||||||
if(COMMAND cmake_policy)
|
add_definitions(-DWEECHAT_VERSION="${VERSION}" -DWEECHAT_LICENSE="GPL3")
|
||||||
cmake_policy(SET CMP0005 NEW)
|
|
||||||
add_definitions(-DWEECHAT_VERSION="${VERSION}" -DWEECHAT_LICENSE="${LICENSE}")
|
|
||||||
else()
|
|
||||||
add_definitions(-DWEECHAT_VERSION='"${VERSION}"' -DWEECHAT_LICENSE='"${LICENSE}"')
|
|
||||||
endif()
|
|
||||||
|
|
||||||
# package string
|
# package string
|
||||||
set(PKG_STRING "${PROJECT_NAME} ${VERSION}")
|
set(PKG_STRING "${PROJECT_NAME} ${VERSION}")
|
||||||
@@ -192,15 +185,6 @@ set(WEECHAT_HOME "${WEECHAT_HOME}" CACHE
|
|||||||
FORCE)
|
FORCE)
|
||||||
mark_as_advanced(CLEAR WEECHAT_HOME)
|
mark_as_advanced(CLEAR WEECHAT_HOME)
|
||||||
|
|
||||||
if(COMMAND cmake_policy)
|
|
||||||
if(POLICY CMP0003)
|
|
||||||
cmake_policy(SET CMP0003 NEW)
|
|
||||||
endif()
|
|
||||||
if(POLICY CMP0017)
|
|
||||||
cmake_policy(SET CMP0017 NEW)
|
|
||||||
endif()
|
|
||||||
endif()
|
|
||||||
|
|
||||||
add_definitions(-DHAVE_CONFIG_H)
|
add_definitions(-DHAVE_CONFIG_H)
|
||||||
|
|
||||||
include(FindPkgConfig)
|
include(FindPkgConfig)
|
||||||
@@ -258,22 +242,29 @@ list(APPEND EXTRA_LIBS ${GNUTLS_LDFLAGS})
|
|||||||
|
|
||||||
# Check for zlib
|
# Check for zlib
|
||||||
find_package(ZLIB REQUIRED)
|
find_package(ZLIB REQUIRED)
|
||||||
|
list(APPEND EXTRA_LIBS ${ZLIB_LIBRARY})
|
||||||
|
|
||||||
# Check for zstd
|
# Check for zstd
|
||||||
if(ENABLE_ZSTD)
|
if(ENABLE_ZSTD)
|
||||||
pkg_check_modules(LIBZSTD REQUIRED libzstd)
|
pkg_check_modules(LIBZSTD REQUIRED libzstd>=1.4.0)
|
||||||
|
include_directories(${LIBZSTD_INCLUDE_DIRS})
|
||||||
|
list(APPEND EXTRA_LIBS ${LIBZSTD_LDFLAGS})
|
||||||
add_definitions(-DHAVE_ZSTD)
|
add_definitions(-DHAVE_ZSTD)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
# Check for cJSON
|
# Check for cJSON
|
||||||
if(ENABLE_CJSON)
|
if(ENABLE_CJSON)
|
||||||
pkg_check_modules(LIBCJSON REQUIRED libcjson)
|
pkg_check_modules(LIBCJSON REQUIRED libcjson)
|
||||||
|
include_directories(${LIBCJSON_INCLUDE_DIRS})
|
||||||
add_definitions(-DHAVE_CJSON)
|
add_definitions(-DHAVE_CJSON)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
# Check for iconv
|
# Check for iconv
|
||||||
find_package(Iconv)
|
find_package(Iconv)
|
||||||
if(ICONV_FOUND)
|
if(ICONV_FOUND)
|
||||||
|
if(ICONV_LIBRARY)
|
||||||
|
list(APPEND EXTRA_LIBS ${ICONV_LIBRARY})
|
||||||
|
endif()
|
||||||
add_definitions(-DHAVE_ICONV)
|
add_definitions(-DHAVE_ICONV)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
@@ -283,18 +274,15 @@ pkg_check_modules(LIBCURL REQUIRED libcurl>=7.68.0)
|
|||||||
include_directories(${LIBCURL_INCLUDE_DIRS})
|
include_directories(${LIBCURL_INCLUDE_DIRS})
|
||||||
list(APPEND EXTRA_LIBS ${LIBCURL_LDFLAGS})
|
list(APPEND EXTRA_LIBS ${LIBCURL_LDFLAGS})
|
||||||
|
|
||||||
find_library(DL_LIBRARY
|
list(APPEND EXTRA_LIBS ${CMAKE_DL_LIBS})
|
||||||
NAMES dl
|
|
||||||
PATHS /lib /usr/lib /usr/libexec /usr/local/lib /usr/local/libexec
|
|
||||||
)
|
|
||||||
if(DL_LIBRARY)
|
|
||||||
list(APPEND EXTRA_LIBS ${DL_LIBRARY})
|
|
||||||
endif()
|
|
||||||
|
|
||||||
add_subdirectory(icons)
|
add_subdirectory(icons)
|
||||||
|
|
||||||
if(ENABLE_NLS)
|
if(ENABLE_NLS)
|
||||||
find_package(Gettext REQUIRED)
|
find_package(Gettext REQUIRED)
|
||||||
|
if(LIBINTL_LIBRARY)
|
||||||
|
list(APPEND EXTRA_LIBS ${LIBINTL_LIBRARY})
|
||||||
|
endif()
|
||||||
find_package(Intl REQUIRED)
|
find_package(Intl REQUIRED)
|
||||||
include_directories(${Intl_INCLUDE_DIRS})
|
include_directories(${Intl_INCLUDE_DIRS})
|
||||||
list(APPEND EXTRA_LIBS "${Intl_LIBRARIES}")
|
list(APPEND EXTRA_LIBS "${Intl_LIBRARIES}")
|
||||||
@@ -303,20 +291,30 @@ else()
|
|||||||
add_custom_target(translations COMMAND true)
|
add_custom_target(translations COMMAND true)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
if(${CMAKE_SYSTEM_NAME} STREQUAL "FreeBSD")
|
||||||
|
find_library(EXECINFO_LIB_PATH execinfo /usr/local/lib)
|
||||||
|
check_function_exists(backtrace HAVE_BACKTRACE)
|
||||||
|
list(APPEND EXTRA_LIBS "execinfo")
|
||||||
|
else()
|
||||||
|
check_symbol_exists(backtrace "execinfo.h" HAVE_BACKTRACE)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
if(${CMAKE_SYSTEM_NAME} STREQUAL "Haiku")
|
||||||
|
list(APPEND EXTRA_LIBS "network")
|
||||||
|
else()
|
||||||
|
list(APPEND EXTRA_LIBS "pthread")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
if(${CMAKE_SYSTEM_NAME} STREQUAL "SunOS")
|
||||||
|
list(APPEND EXTRA_LIBS "socket" "nsl")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
list(APPEND EXTRA_LIBS "m")
|
||||||
|
|
||||||
add_subdirectory(src)
|
add_subdirectory(src)
|
||||||
add_subdirectory(doc)
|
add_subdirectory(doc)
|
||||||
|
|
||||||
if(ENABLE_TESTS)
|
|
||||||
find_package(CppUTest)
|
|
||||||
if(CPPUTEST_FOUND)
|
|
||||||
enable_testing()
|
enable_testing()
|
||||||
else()
|
|
||||||
message(SEND_ERROR "CppUTest not found")
|
|
||||||
endif()
|
|
||||||
else()
|
|
||||||
enable_testing()
|
|
||||||
add_test(NAME notests COMMAND true)
|
|
||||||
endif()
|
|
||||||
add_subdirectory(tests)
|
add_subdirectory(tests)
|
||||||
|
|
||||||
configure_file(config.h.cmake config.h @ONLY)
|
configure_file(config.h.cmake config.h @ONLY)
|
||||||
|
|||||||
+1
-2
@@ -19,8 +19,7 @@ First, some basic things:
|
|||||||
|
|
||||||
### Security reports
|
### Security reports
|
||||||
|
|
||||||
Please **DO NOT** file a GitHub issue for security related problems, but send an
|
Please **DO NOT** file a GitHub issue for security related problems; see [SECURITY.md](SECURITY.md) instead.
|
||||||
email to [security@weechat.org](mailto:security@weechat.org) instead.
|
|
||||||
|
|
||||||
### Required info
|
### Required info
|
||||||
|
|
||||||
|
|||||||
@@ -11,10 +11,8 @@ SPDX-License-Identifier: GPL-3.0-or-later
|
|||||||
</p>
|
</p>
|
||||||
|
|
||||||
[](https://hostux.social/@weechat)
|
[](https://hostux.social/@weechat)
|
||||||
[](https://diasp.eu/u/weechat)
|
|
||||||
[](https://x.com/WeeChatClient)
|
[](https://x.com/WeeChatClient)
|
||||||
[](https://blog.weechat.org/)
|
[](https://blog.weechat.org/)
|
||||||
[](https://www.slant.co/topics/1323/~best-irc-clients-for-linux)
|
|
||||||
[](https://weechat.org/donate/)
|
[](https://weechat.org/donate/)
|
||||||
|
|
||||||
[](https://github.com/weechat/weechat/actions)
|
[](https://github.com/weechat/weechat/actions)
|
||||||
@@ -29,11 +27,11 @@ Homepage: [https://weechat.org/](https://weechat.org/)
|
|||||||
## Features
|
## Features
|
||||||
|
|
||||||
- **Modular chat client**: WeeChat has a lightweight core and optional [plugins](https://weechat.org/doc/weechat/user/#plugins). All plugins (including [IRC](https://weechat.org/doc/weechat/user/#irc)) are independent and can be unloaded.
|
- **Modular chat client**: WeeChat has a lightweight core and optional [plugins](https://weechat.org/doc/weechat/user/#plugins). All plugins (including [IRC](https://weechat.org/doc/weechat/user/#irc)) are independent and can be unloaded.
|
||||||
- **Multi-platform**: WeeChat runs on GNU/Linux, *BSD, GNU/Hurd, Haiku, macOS and Windows (Bash/Ubuntu and Cygwin).
|
- **Multi-platform**: WeeChat runs on GNU/Linux, *BSD, GNU/Hurd, Haiku, macOS and Windows (WSL and Cygwin).
|
||||||
- **Multi-protocols**: WeeChat is designed to support multiple protocols by plugins, like IRC.
|
- **Multi-protocol**: WeeChat is designed to support multiple protocols via plugins, like IRC.
|
||||||
- **Standards-compliant**: the IRC plugin is compliant with RFCs [1459](https://datatracker.ietf.org/doc/html/rfc1459), [2810](https://datatracker.ietf.org/doc/html/rfc2810), [2811](https://datatracker.ietf.org/doc/html/rfc2811), [2812](https://datatracker.ietf.org/doc/html/rfc2812), [2813](https://datatracker.ietf.org/doc/html/rfc2813) and [7194](https://datatracker.ietf.org/doc/html/rfc7194).
|
- **Standards-compliant**: the IRC plugin is compliant with RFCs [1459](https://datatracker.ietf.org/doc/html/rfc1459), [2810](https://datatracker.ietf.org/doc/html/rfc2810), [2811](https://datatracker.ietf.org/doc/html/rfc2811), [2812](https://datatracker.ietf.org/doc/html/rfc2812), [2813](https://datatracker.ietf.org/doc/html/rfc2813) and [7194](https://datatracker.ietf.org/doc/html/rfc7194).
|
||||||
- **Small, fast, and very light**: the core is and should stay as light and fast as possible.
|
- **Small, fast, and very light**: the core is and should stay as light and fast as possible.
|
||||||
- **Customizable and extensible**: there are a lot of options to customize WeeChat, and it is extensible with C plugins and [scripts](https://weechat.org/scripts/) ([Perl](https://weechat.org/scripts/language/perl/), [Python](https://weechat.org/scripts/language/python/), [Ruby](https://weechat.org/scripts/language/ruby), [Lua](https://weechat.org/scripts/language/lua/), [Tcl](https://weechat.org/scripts/language/tcl/), [Scheme](https://weechat.org/scripts/language/guile/), [JavaScript](https://weechat.org/scripts/language/javascript/) and [PHP](https://weechat.org/scripts/language/php/)).
|
- **Customizable and extensible**: there are a lot of options to customize WeeChat, and it is extensible with C plugins and [scripts](https://weechat.org/scripts/) ([Perl](https://weechat.org/scripts/language/perl/), [Python](https://weechat.org/scripts/language/python/), [Ruby](https://weechat.org/scripts/language/ruby/), [Lua](https://weechat.org/scripts/language/lua/), [Tcl](https://weechat.org/scripts/language/tcl/), [Scheme](https://weechat.org/scripts/language/guile/), [JavaScript](https://weechat.org/scripts/language/javascript/) and [PHP](https://weechat.org/scripts/language/php/)).
|
||||||
- **Fully documented**: there is comprehensive [documentation](https://weechat.org/doc/weechat/), which is [translated](https://weechat.org/doc/weechat/dev/#translations) into several languages.
|
- **Fully documented**: there is comprehensive [documentation](https://weechat.org/doc/weechat/), which is [translated](https://weechat.org/doc/weechat/dev/#translations) into several languages.
|
||||||
- **Developed from scratch**: WeeChat was built from scratch and is not based on any other client.
|
- **Developed from scratch**: WeeChat was built from scratch and is not based on any other client.
|
||||||
- **Free software**: WeeChat is released under [GPLv3](https://www.gnu.org/licenses/gpl-3.0.html).
|
- **Free software**: WeeChat is released under [GPLv3](https://www.gnu.org/licenses/gpl-3.0.html).
|
||||||
@@ -51,7 +49,7 @@ For detailed instructions, please check the [WeeChat user's guide](https://weech
|
|||||||
|
|
||||||
## Semantic versioning
|
## Semantic versioning
|
||||||
|
|
||||||
WeeChat is following a "practical" semantic versioning, see file [CONTRIBUTING.md](CONTRIBUTING.md#semantic-versioning).
|
WeeChat follows "practical" semantic versioning; see [CONTRIBUTING.md](CONTRIBUTING.md#semantic-versioning).
|
||||||
|
|
||||||
## Copyright
|
## Copyright
|
||||||
|
|
||||||
|
|||||||
@@ -19,3 +19,11 @@ path = [
|
|||||||
precedence = "override"
|
precedence = "override"
|
||||||
SPDX-FileCopyrightText = "2003-2026 Sébastien Helleu <flashcode@flashtux.org>"
|
SPDX-FileCopyrightText = "2003-2026 Sébastien Helleu <flashcode@flashtux.org>"
|
||||||
SPDX-License-Identifier = "GPL-3.0-or-later"
|
SPDX-License-Identifier = "GPL-3.0-or-later"
|
||||||
|
|
||||||
|
[[annotations]]
|
||||||
|
path = [
|
||||||
|
".poexam/*.dic",
|
||||||
|
]
|
||||||
|
precedence = "override"
|
||||||
|
SPDX-FileCopyrightText = "2026 Sébastien Helleu <flashcode@flashtux.org>"
|
||||||
|
SPDX-License-Identifier = "GPL-3.0-or-later"
|
||||||
|
|||||||
+26
@@ -0,0 +1,26 @@
|
|||||||
|
<!--
|
||||||
|
SPDX-FileCopyrightText: 2026 Sébastien Helleu <flashcode@flashtux.org>
|
||||||
|
|
||||||
|
SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
|
-->
|
||||||
|
|
||||||
|
# Security Policy
|
||||||
|
|
||||||
|
## Supported versions
|
||||||
|
|
||||||
|
Only the latest stable version of WeeChat is supported.
|
||||||
|
|
||||||
|
| Version | Supported | Notes |
|
||||||
|
| -------------- | ------------------ | --------------------------------------------------- |
|
||||||
|
| Latest stable | :white_check_mark: | Fully supported. |
|
||||||
|
| Older releases | :x: | Not supported. Contact us in case of specific need. |
|
||||||
|
|
||||||
|
However, we may help to backport fixes on older versions, especially when they are used in released distributions with no way to upgrade to the latest stable release (please contact us).
|
||||||
|
|
||||||
|
## Reporting a vulnerability
|
||||||
|
|
||||||
|
Please report security issues using <https://github.com/weechat/weechat/security/advisories/new>.
|
||||||
|
|
||||||
|
Alternatively, if you are not able to use this form, you can send an email to [security@weechat.org](mailto:security@weechat.org) instead.
|
||||||
|
|
||||||
|
We will investigate all legitimate reports and do our best to quickly fix the problem.
|
||||||
@@ -13,6 +13,19 @@ When upgrading from version X to Y, please read and apply all instructions from
|
|||||||
|
|
||||||
For a list of all changes in each version, please see [CHANGELOG.md](CHANGELOG.md).
|
For a list of all changes in each version, please see [CHANGELOG.md](CHANGELOG.md).
|
||||||
|
|
||||||
|
## Version 4.10.0
|
||||||
|
|
||||||
|
### Command on mouse click in fset buffer
|
||||||
|
|
||||||
|
The command executed when clicking in the fset buffer has been updated to prevent
|
||||||
|
errors on the core buffer when the click is done below the last option.
|
||||||
|
|
||||||
|
To reset the key and use the new default command:
|
||||||
|
|
||||||
|
```text
|
||||||
|
/reset weechat.key_mouse.@chat(fset.fset):button1
|
||||||
|
```
|
||||||
|
|
||||||
## Version 4.8.0
|
## Version 4.8.0
|
||||||
|
|
||||||
### IRC temporary servers
|
### IRC temporary servers
|
||||||
|
|||||||
@@ -1,6 +1,5 @@
|
|||||||
Source: weechat-devel
|
Source: weechat-devel
|
||||||
Section: net
|
Section: net
|
||||||
Priority: optional
|
|
||||||
Maintainer: Sébastien Helleu <flashcode@flashtux.org>
|
Maintainer: Sébastien Helleu <flashcode@flashtux.org>
|
||||||
Build-Depends:
|
Build-Depends:
|
||||||
asciidoctor (>= 1.5.4),
|
asciidoctor (>= 1.5.4),
|
||||||
@@ -13,7 +12,7 @@ Build-Depends:
|
|||||||
libperl-dev,
|
libperl-dev,
|
||||||
python3-dev,
|
python3-dev,
|
||||||
libaspell-dev,
|
libaspell-dev,
|
||||||
liblua5.3-dev,
|
liblua5.4-dev,
|
||||||
tcl8.6-dev,
|
tcl8.6-dev,
|
||||||
guile-3.0-dev,
|
guile-3.0-dev,
|
||||||
php-dev, libphp-embed, libargon2-dev, libsodium-dev,
|
php-dev, libphp-embed, libargon2-dev, libsodium-dev,
|
||||||
@@ -24,7 +23,7 @@ Build-Depends:
|
|||||||
libzstd-dev,
|
libzstd-dev,
|
||||||
zlib1g-dev,
|
zlib1g-dev,
|
||||||
libcjson-dev
|
libcjson-dev
|
||||||
Standards-Version: 4.7.2
|
Standards-Version: 4.7.3
|
||||||
Homepage: https://weechat.org/
|
Homepage: https://weechat.org/
|
||||||
Vcs-Git: https://salsa.debian.org/kolter/weechat.git
|
Vcs-Git: https://salsa.debian.org/kolter/weechat.git
|
||||||
Vcs-Browser: https://salsa.debian.org/kolter/weechat
|
Vcs-Browser: https://salsa.debian.org/kolter/weechat
|
||||||
|
|||||||
@@ -1,3 +1,12 @@
|
|||||||
|
weechat (4.8.1-1) unstable; urgency=medium
|
||||||
|
|
||||||
|
* New upstream release
|
||||||
|
* Bump Standards-Version to 4.7.3
|
||||||
|
* Update debian/copyright file (new year)
|
||||||
|
* Remove redundant priority optional field from debian/control
|
||||||
|
|
||||||
|
-- Emmanuel Bouthenot <kolter@debian.org> Fri, 23 Jan 2026 22:02:31 +0000
|
||||||
|
|
||||||
weechat (4.7.2-1) unstable; urgency=medium
|
weechat (4.7.2-1) unstable; urgency=medium
|
||||||
|
|
||||||
* New upstream release (Closes: #1119787)
|
* New upstream release (Closes: #1119787)
|
||||||
@@ -40,6 +49,12 @@ weechat (4.4.2-1) unstable; urgency=medium
|
|||||||
* New upstream release
|
* New upstream release
|
||||||
- fix crash where exiting (Closes: #1076532)
|
- fix crash where exiting (Closes: #1076532)
|
||||||
- fix a minor security issue (Closes: #1081942)
|
- fix a minor security issue (Closes: #1081942)
|
||||||
|
* Fix possible privacy breach with html documentation which includes
|
||||||
|
stylesheets and fonts (font-awesome) hosted on remote CDN (Cloudflare)
|
||||||
|
by replacing them during build process by the ones provided in
|
||||||
|
fonts-font-awesome package (also added as dependency on weechat-doc).
|
||||||
|
* Refresh weechat-doc with minor changes and add some documentation in
|
||||||
|
Serbian and Czech.
|
||||||
* Bump Standards-Version to 4.7.0
|
* Bump Standards-Version to 4.7.0
|
||||||
|
|
||||||
-- Emmanuel Bouthenot <kolter@debian.org> Sun, 22 Sep 2024 13:08:28 +0000
|
-- Emmanuel Bouthenot <kolter@debian.org> Sun, 22 Sep 2024 13:08:28 +0000
|
||||||
|
|||||||
@@ -1,6 +1,5 @@
|
|||||||
Source: weechat
|
Source: weechat
|
||||||
Section: net
|
Section: net
|
||||||
Priority: optional
|
|
||||||
Maintainer: Emmanuel Bouthenot <kolter@debian.org>
|
Maintainer: Emmanuel Bouthenot <kolter@debian.org>
|
||||||
Build-Depends:
|
Build-Depends:
|
||||||
asciidoctor (>= 1.5.4),
|
asciidoctor (>= 1.5.4),
|
||||||
@@ -13,7 +12,7 @@ Build-Depends:
|
|||||||
libperl-dev,
|
libperl-dev,
|
||||||
python3-dev,
|
python3-dev,
|
||||||
libaspell-dev,
|
libaspell-dev,
|
||||||
liblua5.3-dev,
|
liblua5.4-dev,
|
||||||
tcl8.6-dev,
|
tcl8.6-dev,
|
||||||
guile-3.0-dev,
|
guile-3.0-dev,
|
||||||
php-dev, libphp-embed, libargon2-dev, libsodium-dev,
|
php-dev, libphp-embed, libargon2-dev, libsodium-dev,
|
||||||
@@ -24,7 +23,7 @@ Build-Depends:
|
|||||||
libzstd-dev,
|
libzstd-dev,
|
||||||
zlib1g-dev,
|
zlib1g-dev,
|
||||||
libcjson-dev
|
libcjson-dev
|
||||||
Standards-Version: 4.7.2
|
Standards-Version: 4.7.3
|
||||||
Homepage: https://weechat.org/
|
Homepage: https://weechat.org/
|
||||||
Vcs-Git: https://salsa.debian.org/kolter/weechat.git
|
Vcs-Git: https://salsa.debian.org/kolter/weechat.git
|
||||||
Vcs-Browser: https://salsa.debian.org/kolter/weechat
|
Vcs-Browser: https://salsa.debian.org/kolter/weechat
|
||||||
|
|||||||
+36
-11
@@ -30,12 +30,37 @@ if(ENABLE_MAN OR ENABLE_DOC)
|
|||||||
set(SCRIPTING_LANG de en fr it ja pl sr)
|
set(SCRIPTING_LANG de en fr it ja pl sr)
|
||||||
set(FAQ_LANG de en es fr it ja pl sr)
|
set(FAQ_LANG de en es fr it ja pl sr)
|
||||||
set(QUICKSTART_LANG cs de en es fr it ja pl ru sr)
|
set(QUICKSTART_LANG cs de en es fr it ja pl ru sr)
|
||||||
set(RELAY_API_LANG en fr)
|
set(RELAY_API_LANG en fr sr)
|
||||||
set(RELAY_WEECHAT_LANG en fr ja sr)
|
set(RELAY_WEECHAT_LANG en fr ja sr)
|
||||||
set(DEV_LANG en fr ja sr)
|
set(DEV_LANG en fr ja sr)
|
||||||
|
|
||||||
find_package(Asciidoctor)
|
find_package(Asciidoctor)
|
||||||
if(ASCIIDOCTOR_FOUND)
|
if(ASCIIDOCTOR_FOUND)
|
||||||
|
# Asciidoctor embeds the light style automatically; the dark stylesheet
|
||||||
|
# is generated below and scoped via @media in docinfo.html.in.
|
||||||
|
set(PYGMENTS_LIGHT_STYLE "default")
|
||||||
|
set(PYGMENTS_DARK_STYLE "monokai")
|
||||||
|
find_program(PYGMENTIZE_EXECUTABLE pygmentize)
|
||||||
|
set(PYGMENTS_DARK_CSS "")
|
||||||
|
if(PYGMENTIZE_EXECUTABLE)
|
||||||
|
execute_process(
|
||||||
|
COMMAND "${PYGMENTIZE_EXECUTABLE}" -O "classprefix=tok-" -f html -a "pre.pygments" -S "${PYGMENTS_DARK_STYLE}"
|
||||||
|
OUTPUT_VARIABLE PYGMENTS_DARK_CSS
|
||||||
|
RESULT_VARIABLE _pygmentize_result
|
||||||
|
)
|
||||||
|
if(NOT _pygmentize_result EQUAL 0)
|
||||||
|
message(WARNING "Failed to generate pygments CSS for dark theme (style: ${PYGMENTS_DARK_STYLE}); doc will be built without dark theme syntax highlighting")
|
||||||
|
set(PYGMENTS_DARK_CSS "")
|
||||||
|
endif()
|
||||||
|
else()
|
||||||
|
message(WARNING "pygmentize not found (install python3-pygments); doc will be built without syntax highlighting colors")
|
||||||
|
endif()
|
||||||
|
configure_file(
|
||||||
|
"${CMAKE_CURRENT_SOURCE_DIR}/docinfo.html.in"
|
||||||
|
"${CMAKE_CURRENT_BINARY_DIR}/docinfo.html"
|
||||||
|
@ONLY
|
||||||
|
)
|
||||||
|
|
||||||
# common asciidoctor arguments
|
# common asciidoctor arguments
|
||||||
set(ASCIIDOCTOR_ARGS
|
set(ASCIIDOCTOR_ARGS
|
||||||
-v
|
-v
|
||||||
@@ -46,8 +71,8 @@ if(ENABLE_MAN OR ENABLE_DOC)
|
|||||||
-a revnumber="${VERSION}"
|
-a revnumber="${VERSION}"
|
||||||
-a sectanchors
|
-a sectanchors
|
||||||
-a source-highlighter=pygments
|
-a source-highlighter=pygments
|
||||||
-a pygments-style=native
|
-a pygments-style=${PYGMENTS_LIGHT_STYLE}
|
||||||
-a docinfodir="${CMAKE_CURRENT_SOURCE_DIR}"
|
-a docinfodir="${CMAKE_CURRENT_BINARY_DIR}"
|
||||||
-a autogendir="${CMAKE_CURRENT_BINARY_DIR}/autogen"
|
-a autogendir="${CMAKE_CURRENT_BINARY_DIR}/autogen"
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -205,7 +230,7 @@ if(ENABLE_MAN OR ENABLE_DOC)
|
|||||||
OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/weechat_user.${lang}.html"
|
OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/weechat_user.${lang}.html"
|
||||||
COMMAND "${ASCIIDOCTOR_EXECUTABLE}" ARGS ${ASCIIDOCTOR_ARGS} ${ASCIIDOCTOR_USER_ARGS} -o "weechat_user.${lang}.html" "${CMAKE_CURRENT_SOURCE_DIR}/${lang}/weechat_user.${lang}.adoc"
|
COMMAND "${ASCIIDOCTOR_EXECUTABLE}" ARGS ${ASCIIDOCTOR_ARGS} ${ASCIIDOCTOR_USER_ARGS} -o "weechat_user.${lang}.html" "${CMAKE_CURRENT_SOURCE_DIR}/${lang}/weechat_user.${lang}.adoc"
|
||||||
DEPENDS
|
DEPENDS
|
||||||
"${CMAKE_CURRENT_SOURCE_DIR}/docinfo.html"
|
"${CMAKE_CURRENT_BINARY_DIR}/docinfo.html"
|
||||||
"${CMAKE_CURRENT_SOURCE_DIR}/${lang}/weechat_user.${lang}.adoc"
|
"${CMAKE_CURRENT_SOURCE_DIR}/${lang}/weechat_user.${lang}.adoc"
|
||||||
"${CMAKE_CURRENT_SOURCE_DIR}/${lang}/includes/attributes-${lang}.adoc"
|
"${CMAKE_CURRENT_SOURCE_DIR}/${lang}/includes/attributes-${lang}.adoc"
|
||||||
"${CMAKE_CURRENT_SOURCE_DIR}/${lang}/includes/cmdline_options.${lang}.adoc"
|
"${CMAKE_CURRENT_SOURCE_DIR}/${lang}/includes/cmdline_options.${lang}.adoc"
|
||||||
@@ -226,7 +251,7 @@ if(ENABLE_MAN OR ENABLE_DOC)
|
|||||||
OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/weechat_plugin_api.${lang}.html"
|
OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/weechat_plugin_api.${lang}.html"
|
||||||
COMMAND "${ASCIIDOCTOR_EXECUTABLE}" ARGS ${ASCIIDOCTOR_ARGS} ${ASCIIDOCTOR_PLUGIN_API_ARGS} -o "weechat_plugin_api.${lang}.html" "${CMAKE_CURRENT_SOURCE_DIR}/${lang}/weechat_plugin_api.${lang}.adoc"
|
COMMAND "${ASCIIDOCTOR_EXECUTABLE}" ARGS ${ASCIIDOCTOR_ARGS} ${ASCIIDOCTOR_PLUGIN_API_ARGS} -o "weechat_plugin_api.${lang}.html" "${CMAKE_CURRENT_SOURCE_DIR}/${lang}/weechat_plugin_api.${lang}.adoc"
|
||||||
DEPENDS
|
DEPENDS
|
||||||
"${CMAKE_CURRENT_SOURCE_DIR}/docinfo.html"
|
"${CMAKE_CURRENT_BINARY_DIR}/docinfo.html"
|
||||||
"${CMAKE_CURRENT_SOURCE_DIR}/${lang}/weechat_plugin_api.${lang}.adoc"
|
"${CMAKE_CURRENT_SOURCE_DIR}/${lang}/weechat_plugin_api.${lang}.adoc"
|
||||||
"${CMAKE_CURRENT_SOURCE_DIR}/${lang}/includes/attributes-${lang}.adoc"
|
"${CMAKE_CURRENT_SOURCE_DIR}/${lang}/includes/attributes-${lang}.adoc"
|
||||||
doc-autogen
|
doc-autogen
|
||||||
@@ -250,7 +275,7 @@ if(ENABLE_MAN OR ENABLE_DOC)
|
|||||||
OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/weechat_scripting.${lang}.html"
|
OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/weechat_scripting.${lang}.html"
|
||||||
COMMAND "${ASCIIDOCTOR_EXECUTABLE}" ARGS ${ASCIIDOCTOR_ARGS} ${ASCIIDOCTOR_SCRIPTING_ARGS} -o "weechat_scripting.${lang}.html" "${CMAKE_CURRENT_SOURCE_DIR}/${lang}/weechat_scripting.${lang}.adoc"
|
COMMAND "${ASCIIDOCTOR_EXECUTABLE}" ARGS ${ASCIIDOCTOR_ARGS} ${ASCIIDOCTOR_SCRIPTING_ARGS} -o "weechat_scripting.${lang}.html" "${CMAKE_CURRENT_SOURCE_DIR}/${lang}/weechat_scripting.${lang}.adoc"
|
||||||
DEPENDS
|
DEPENDS
|
||||||
"${CMAKE_CURRENT_SOURCE_DIR}/docinfo.html"
|
"${CMAKE_CURRENT_BINARY_DIR}/docinfo.html"
|
||||||
"${CMAKE_CURRENT_SOURCE_DIR}/${lang}/weechat_scripting.${lang}.adoc"
|
"${CMAKE_CURRENT_SOURCE_DIR}/${lang}/weechat_scripting.${lang}.adoc"
|
||||||
"${CMAKE_CURRENT_SOURCE_DIR}/${lang}/includes/attributes-${lang}.adoc"
|
"${CMAKE_CURRENT_SOURCE_DIR}/${lang}/includes/attributes-${lang}.adoc"
|
||||||
doc-autogen
|
doc-autogen
|
||||||
@@ -268,7 +293,7 @@ if(ENABLE_MAN OR ENABLE_DOC)
|
|||||||
OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/weechat_faq.${lang}.html"
|
OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/weechat_faq.${lang}.html"
|
||||||
COMMAND "${ASCIIDOCTOR_EXECUTABLE}" ARGS ${ASCIIDOCTOR_ARGS} ${ASCIIDOCTOR_FAQ_ARGS} -o "weechat_faq.${lang}.html" "${CMAKE_CURRENT_SOURCE_DIR}/${lang}/weechat_faq.${lang}.adoc"
|
COMMAND "${ASCIIDOCTOR_EXECUTABLE}" ARGS ${ASCIIDOCTOR_ARGS} ${ASCIIDOCTOR_FAQ_ARGS} -o "weechat_faq.${lang}.html" "${CMAKE_CURRENT_SOURCE_DIR}/${lang}/weechat_faq.${lang}.adoc"
|
||||||
DEPENDS
|
DEPENDS
|
||||||
"${CMAKE_CURRENT_SOURCE_DIR}/docinfo.html"
|
"${CMAKE_CURRENT_BINARY_DIR}/docinfo.html"
|
||||||
"${CMAKE_CURRENT_SOURCE_DIR}/${lang}/weechat_faq.${lang}.adoc"
|
"${CMAKE_CURRENT_SOURCE_DIR}/${lang}/weechat_faq.${lang}.adoc"
|
||||||
"${CMAKE_CURRENT_SOURCE_DIR}/${lang}/includes/attributes-${lang}.adoc"
|
"${CMAKE_CURRENT_SOURCE_DIR}/${lang}/includes/attributes-${lang}.adoc"
|
||||||
WORKING_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}"
|
WORKING_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}"
|
||||||
@@ -283,7 +308,7 @@ if(ENABLE_MAN OR ENABLE_DOC)
|
|||||||
OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/weechat_quickstart.${lang}.html"
|
OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/weechat_quickstart.${lang}.html"
|
||||||
COMMAND "${ASCIIDOCTOR_EXECUTABLE}" ARGS ${ASCIIDOCTOR_ARGS} ${ASCIIDOCTOR_QUICKSTART_ARGS} -o "weechat_quickstart.${lang}.html" "${CMAKE_CURRENT_SOURCE_DIR}/${lang}/weechat_quickstart.${lang}.adoc"
|
COMMAND "${ASCIIDOCTOR_EXECUTABLE}" ARGS ${ASCIIDOCTOR_ARGS} ${ASCIIDOCTOR_QUICKSTART_ARGS} -o "weechat_quickstart.${lang}.html" "${CMAKE_CURRENT_SOURCE_DIR}/${lang}/weechat_quickstart.${lang}.adoc"
|
||||||
DEPENDS
|
DEPENDS
|
||||||
"${CMAKE_CURRENT_SOURCE_DIR}/docinfo.html"
|
"${CMAKE_CURRENT_BINARY_DIR}/docinfo.html"
|
||||||
"${CMAKE_CURRENT_SOURCE_DIR}/${lang}/weechat_quickstart.${lang}.adoc"
|
"${CMAKE_CURRENT_SOURCE_DIR}/${lang}/weechat_quickstart.${lang}.adoc"
|
||||||
"${CMAKE_CURRENT_SOURCE_DIR}/${lang}/includes/attributes-${lang}.adoc"
|
"${CMAKE_CURRENT_SOURCE_DIR}/${lang}/includes/attributes-${lang}.adoc"
|
||||||
WORKING_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}"
|
WORKING_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}"
|
||||||
@@ -298,7 +323,7 @@ if(ENABLE_MAN OR ENABLE_DOC)
|
|||||||
OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/weechat_relay_api.${lang}.html"
|
OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/weechat_relay_api.${lang}.html"
|
||||||
COMMAND "${ASCIIDOCTOR_EXECUTABLE}" ARGS ${ASCIIDOCTOR_ARGS} ${ASCIIDOCTOR_RELAY_API_ARGS} -o "weechat_relay_api.${lang}.html" "${CMAKE_CURRENT_SOURCE_DIR}/${lang}/weechat_relay_api.${lang}.adoc"
|
COMMAND "${ASCIIDOCTOR_EXECUTABLE}" ARGS ${ASCIIDOCTOR_ARGS} ${ASCIIDOCTOR_RELAY_API_ARGS} -o "weechat_relay_api.${lang}.html" "${CMAKE_CURRENT_SOURCE_DIR}/${lang}/weechat_relay_api.${lang}.adoc"
|
||||||
DEPENDS
|
DEPENDS
|
||||||
"${CMAKE_CURRENT_SOURCE_DIR}/docinfo.html"
|
"${CMAKE_CURRENT_BINARY_DIR}/docinfo.html"
|
||||||
"${CMAKE_CURRENT_SOURCE_DIR}/${lang}/weechat_relay_api.${lang}.adoc"
|
"${CMAKE_CURRENT_SOURCE_DIR}/${lang}/weechat_relay_api.${lang}.adoc"
|
||||||
"${CMAKE_CURRENT_SOURCE_DIR}/${lang}/includes/attributes-${lang}.adoc"
|
"${CMAKE_CURRENT_SOURCE_DIR}/${lang}/includes/attributes-${lang}.adoc"
|
||||||
"${CMAKE_CURRENT_SOURCE_DIR}/${lang}/includes/relay.${lang}.adoc"
|
"${CMAKE_CURRENT_SOURCE_DIR}/${lang}/includes/relay.${lang}.adoc"
|
||||||
@@ -314,7 +339,7 @@ if(ENABLE_MAN OR ENABLE_DOC)
|
|||||||
OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/weechat_relay_weechat.${lang}.html"
|
OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/weechat_relay_weechat.${lang}.html"
|
||||||
COMMAND "${ASCIIDOCTOR_EXECUTABLE}" ARGS ${ASCIIDOCTOR_ARGS} ${ASCIIDOCTOR_RELAY_WEECHAT_ARGS} -o "weechat_relay_weechat.${lang}.html" "${CMAKE_CURRENT_SOURCE_DIR}/${lang}/weechat_relay_weechat.${lang}.adoc"
|
COMMAND "${ASCIIDOCTOR_EXECUTABLE}" ARGS ${ASCIIDOCTOR_ARGS} ${ASCIIDOCTOR_RELAY_WEECHAT_ARGS} -o "weechat_relay_weechat.${lang}.html" "${CMAKE_CURRENT_SOURCE_DIR}/${lang}/weechat_relay_weechat.${lang}.adoc"
|
||||||
DEPENDS
|
DEPENDS
|
||||||
"${CMAKE_CURRENT_SOURCE_DIR}/docinfo.html"
|
"${CMAKE_CURRENT_BINARY_DIR}/docinfo.html"
|
||||||
"${CMAKE_CURRENT_SOURCE_DIR}/${lang}/weechat_relay_weechat.${lang}.adoc"
|
"${CMAKE_CURRENT_SOURCE_DIR}/${lang}/weechat_relay_weechat.${lang}.adoc"
|
||||||
"${CMAKE_CURRENT_SOURCE_DIR}/${lang}/includes/attributes-${lang}.adoc"
|
"${CMAKE_CURRENT_SOURCE_DIR}/${lang}/includes/attributes-${lang}.adoc"
|
||||||
"${CMAKE_CURRENT_SOURCE_DIR}/${lang}/includes/relay.${lang}.adoc"
|
"${CMAKE_CURRENT_SOURCE_DIR}/${lang}/includes/relay.${lang}.adoc"
|
||||||
@@ -330,7 +355,7 @@ if(ENABLE_MAN OR ENABLE_DOC)
|
|||||||
OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/weechat_dev.${lang}.html"
|
OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/weechat_dev.${lang}.html"
|
||||||
COMMAND "${ASCIIDOCTOR_EXECUTABLE}" ARGS ${ASCIIDOCTOR_ARGS} ${ASCIIDOCTOR_DEV_ARGS} -o "weechat_dev.${lang}.html" "${CMAKE_CURRENT_SOURCE_DIR}/${lang}/weechat_dev.${lang}.adoc"
|
COMMAND "${ASCIIDOCTOR_EXECUTABLE}" ARGS ${ASCIIDOCTOR_ARGS} ${ASCIIDOCTOR_DEV_ARGS} -o "weechat_dev.${lang}.html" "${CMAKE_CURRENT_SOURCE_DIR}/${lang}/weechat_dev.${lang}.adoc"
|
||||||
DEPENDS
|
DEPENDS
|
||||||
"${CMAKE_CURRENT_SOURCE_DIR}/docinfo.html"
|
"${CMAKE_CURRENT_BINARY_DIR}/docinfo.html"
|
||||||
"${CMAKE_CURRENT_SOURCE_DIR}/${lang}/weechat_dev.${lang}.adoc"
|
"${CMAKE_CURRENT_SOURCE_DIR}/${lang}/weechat_dev.${lang}.adoc"
|
||||||
"${CMAKE_CURRENT_SOURCE_DIR}/${lang}/includes/attributes-${lang}.adoc"
|
"${CMAKE_CURRENT_SOURCE_DIR}/${lang}/includes/attributes-${lang}.adoc"
|
||||||
WORKING_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}"
|
WORKING_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}"
|
||||||
|
|||||||
@@ -458,7 +458,7 @@ für weitere Informationen die das Farbmanagement betreffen.
|
|||||||
[[search_text]]
|
[[search_text]]
|
||||||
=== Wie kann ich in einem Buffer nach einem Text suchen (vergleichbar /lastlog in irssi)?
|
=== Wie kann ich in einem Buffer nach einem Text suchen (vergleichbar /lastlog in irssi)?
|
||||||
|
|
||||||
Die Standardtastenbelegung lautet kbd:[Ctrl+r]
|
Die Standardtastenbelegung lautet kbd:[Ctrl+s]
|
||||||
(der dazugehörige Befehl: `+/input search_text_here+`).
|
(der dazugehörige Befehl: `+/input search_text_here+`).
|
||||||
Um zu Highlight-Nachrichten zu springen:
|
Um zu Highlight-Nachrichten zu springen:
|
||||||
kbd:[Alt+p] für vorherige, kbd:[Alt+n] für die nächste Nachricht.
|
kbd:[Alt+p] für vorherige, kbd:[Alt+n] für die nächste Nachricht.
|
||||||
|
|||||||
+147
-1
@@ -212,7 +212,7 @@ WeeChat optional sind:
|
|||||||
| asciidoctor | ≥ 1.5.4
|
| asciidoctor | ≥ 1.5.4
|
||||||
| zum Erstellen der man page und der Dokumentation.
|
| zum Erstellen der man page und der Dokumentation.
|
||||||
|
|
||||||
| ruby-pygments.rb |
|
| python3-pygments, ruby-pygments.rb |
|
||||||
| Build Dokumentation.
|
| Build Dokumentation.
|
||||||
|
|
||||||
| libcpputest-dev | ≥ 3.4
|
| libcpputest-dev | ≥ 3.4
|
||||||
@@ -2197,6 +2197,152 @@ Um der Vordergrundfarbe des Terminals das Attribut "fett" zuzuordnen:
|
|||||||
/set weechat.color.status_time *99999
|
/set weechat.color.status_time *99999
|
||||||
----
|
----
|
||||||
|
|
||||||
|
// TRANSLATION MISSING
|
||||||
|
[[themes]]
|
||||||
|
=== Themen
|
||||||
|
|
||||||
|
A theme is a named bundle of option overrides that can be applied with
|
||||||
|
the <<command_weechat_theme,/theme>> command. WeeChat ships a built-in
|
||||||
|
`"light"` theme tuned for light-background terminals and supports
|
||||||
|
user-defined themes loaded transiently from files.
|
||||||
|
|
||||||
|
[[themes_themable_options]]
|
||||||
|
==== Themable options
|
||||||
|
|
||||||
|
Themes can only set options marked as _themable_. All `*.color.*`
|
||||||
|
options are themable by default; a few string options that hold format
|
||||||
|
expressions with `+${color:...}+` references (such as
|
||||||
|
`+weechat.color.chat_nick_colors+`, `+weechat.look.prefix_error+` or the
|
||||||
|
`+buflist.format.*+` formats) are explicitly opted in.
|
||||||
|
|
||||||
|
You can list the full themable surface area from the
|
||||||
|
<<command_fset_fset,/fset>> buffer with the `+t:themable+` filter.
|
||||||
|
|
||||||
|
[[themes_apply]]
|
||||||
|
==== Applying a theme
|
||||||
|
|
||||||
|
To switch to the built-in light-background theme:
|
||||||
|
|
||||||
|
----
|
||||||
|
/theme apply light
|
||||||
|
----
|
||||||
|
|
||||||
|
The current state of every themable option is saved beforehand to a
|
||||||
|
backup theme file named like `+backup-YYYYMMDD-HHMMSS-uuuuuu+` in
|
||||||
|
directory `+themes+` inside the WeeChat configuration directory, so the
|
||||||
|
previous look can be restored at any time with:
|
||||||
|
|
||||||
|
----
|
||||||
|
/theme apply backup-YYYYMMDD-HHMMSS-uuuuuu
|
||||||
|
----
|
||||||
|
|
||||||
|
Backup creation can be disabled (not recommended):
|
||||||
|
|
||||||
|
----
|
||||||
|
/set weechat.look.theme_backup off
|
||||||
|
----
|
||||||
|
|
||||||
|
If backup is enabled and the backup file cannot be written, the apply
|
||||||
|
is aborted before any option is changed.
|
||||||
|
|
||||||
|
The name of the last applied theme is stored in
|
||||||
|
`+weechat.look.theme+` (informational only; not re-applied at startup).
|
||||||
|
|
||||||
|
[[themes_reset]]
|
||||||
|
==== Resetting to defaults
|
||||||
|
|
||||||
|
To restore the look shipped with WeeChat, reset every themable option
|
||||||
|
to its default value:
|
||||||
|
|
||||||
|
----
|
||||||
|
/theme reset
|
||||||
|
----
|
||||||
|
|
||||||
|
A backup is written first (same gate as `+/theme apply+`); on backup
|
||||||
|
failure the reset is aborted before any option is changed.
|
||||||
|
`+weechat.look.theme+` is cleared too.
|
||||||
|
|
||||||
|
[[themes_save_delete]]
|
||||||
|
==== Saving and deleting user themes
|
||||||
|
|
||||||
|
Save the current themable options as a new user theme file:
|
||||||
|
|
||||||
|
----
|
||||||
|
/theme save mytheme
|
||||||
|
----
|
||||||
|
|
||||||
|
Every themable option is written, so the file is self-contained and
|
||||||
|
applies the exact same look on any WeeChat, regardless of its current
|
||||||
|
configuration.
|
||||||
|
|
||||||
|
Reserved names (built-in theme names like `+light+` and any name
|
||||||
|
starting with `+backup-+`) are refused. Files live at
|
||||||
|
`+${weechat_config_dir}/themes/<name>.theme+`.
|
||||||
|
|
||||||
|
Rename a user theme (typical use: keep a useful automatic backup
|
||||||
|
under a meaningful name):
|
||||||
|
|
||||||
|
----
|
||||||
|
/theme rename backup-20260525-094210-123456 mybackup
|
||||||
|
----
|
||||||
|
|
||||||
|
Built-in themes have no file and cannot be renamed; the target name
|
||||||
|
cannot match a built-in name or start with `+backup-+`, and the
|
||||||
|
target file must not already exist. The `+[info]+` `+name+` field
|
||||||
|
inside the file is rewritten so `/theme info` reports the new name
|
||||||
|
consistently.
|
||||||
|
|
||||||
|
Delete a user theme:
|
||||||
|
|
||||||
|
----
|
||||||
|
/theme del mytheme
|
||||||
|
----
|
||||||
|
|
||||||
|
This removes the file on disk; built-in themes cannot be deleted.
|
||||||
|
|
||||||
|
[[themes_file_format]]
|
||||||
|
==== Theme file format
|
||||||
|
|
||||||
|
A theme file is INI-like with two sections:
|
||||||
|
|
||||||
|
----
|
||||||
|
[info]
|
||||||
|
name = "solarized_light"
|
||||||
|
description = "Light-background theme inspired by Solarized"
|
||||||
|
date = "2026-05-25 09:42:10"
|
||||||
|
weechat = "4.10.0-dev"
|
||||||
|
|
||||||
|
[options]
|
||||||
|
weechat.color.chat = "darkgray"
|
||||||
|
weechat.color.separator = "blue"
|
||||||
|
irc.color.input_nick = "magenta"
|
||||||
|
buflist.format.number = "${color:28}${number}${if:${number_displayed}?.: }"
|
||||||
|
----
|
||||||
|
|
||||||
|
`+[info]+` is informational metadata shown by `/theme info`. `+[options]+`
|
||||||
|
holds the actual overrides; keys are the full option names that would
|
||||||
|
appear in `/set`. String values can be enclosed in double or single
|
||||||
|
quotes; quotes are stripped at parse time. Non-themable options listed
|
||||||
|
in a theme file are refused at apply time and logged to the core
|
||||||
|
buffer (so a `.theme` file imported from an untrusted source cannot
|
||||||
|
overwrite passwords, autoload lists, or startup commands).
|
||||||
|
|
||||||
|
User theme files are never cached: on every `/theme apply <name>` the
|
||||||
|
file is parsed, applied, and freed.
|
||||||
|
|
||||||
|
[[themes_resolution]]
|
||||||
|
==== Resolution order
|
||||||
|
|
||||||
|
When `+/theme apply <name>+` is run:
|
||||||
|
|
||||||
|
* If `+${weechat_config_dir}/themes/<name>.theme+` exists, the file
|
||||||
|
is parsed and used (it shadows any built-in with the same name).
|
||||||
|
* Otherwise the built-in theme registry is consulted; built-ins are
|
||||||
|
registered programmatically by core, plugins and scripts (see the
|
||||||
|
plugin and scripting documentation for `+weechat_theme_register+`).
|
||||||
|
|
||||||
|
If neither source provides the name, the apply is refused.
|
||||||
|
|
||||||
[[charset]]
|
[[charset]]
|
||||||
=== Charset
|
=== Charset
|
||||||
|
|
||||||
|
|||||||
@@ -26,9 +26,6 @@ SPDX-License-Identifier: GPL-3.0-or-later
|
|||||||
--header-details-color: #aaa;
|
--header-details-color: #aaa;
|
||||||
--border: 1px solid #444;
|
--border: 1px solid #444;
|
||||||
--code-bg-color: #252525;
|
--code-bg-color: #252525;
|
||||||
--pre-color: #ddd;
|
|
||||||
--pre-bg-color: #202020;
|
|
||||||
--pre-code-bg-color: #202020;
|
|
||||||
--keyseq-color: #777;
|
--keyseq-color: #777;
|
||||||
--kbd-bg-color: #252525;
|
--kbd-bg-color: #252525;
|
||||||
--kbd-border: 1px solid #333;
|
--kbd-border: 1px solid #333;
|
||||||
@@ -39,7 +36,11 @@ SPDX-License-Identifier: GPL-3.0-or-later
|
|||||||
--icon-caution-color: #bf3400;
|
--icon-caution-color: #bf3400;
|
||||||
--icon-important-color: #f44336;
|
--icon-important-color: #f44336;
|
||||||
--mark-bg-color: #007;
|
--mark-bg-color: #007;
|
||||||
|
--pre-bevel-light: #3e3e3e;
|
||||||
|
--pre-bevel-dark: #2a2a2a;
|
||||||
|
--pre-bevel-bg: #1f1f1f;
|
||||||
}
|
}
|
||||||
|
@PYGMENTS_DARK_CSS@
|
||||||
}
|
}
|
||||||
|
|
||||||
@media (not (prefers-color-scheme: dark)), (prefers-color-scheme: light) {
|
@media (not (prefers-color-scheme: dark)), (prefers-color-scheme: light) {
|
||||||
@@ -59,9 +60,6 @@ SPDX-License-Identifier: GPL-3.0-or-later
|
|||||||
--border: 1px solid #dddddf;
|
--border: 1px solid #dddddf;
|
||||||
--code-bg-color: #f7f7f8;
|
--code-bg-color: #f7f7f8;
|
||||||
--keyseq-color: #333c;
|
--keyseq-color: #333c;
|
||||||
--pre-color: #353535;
|
|
||||||
--pre-bg-color: #f7f7f8;
|
|
||||||
--pre-code-bg-color: #202020;
|
|
||||||
--kbd-bg-color: #f7f7f7;
|
--kbd-bg-color: #f7f7f7;
|
||||||
--kbd-border: 1px solid #ccc;
|
--kbd-border: 1px solid #ccc;
|
||||||
--kbd-box-shadow: 0 1px 0 rgba(0, 0, 0, .2), inset 0 0 0 .1em #fff;
|
--kbd-box-shadow: 0 1px 0 rgba(0, 0, 0, .2), inset 0 0 0 .1em #fff;
|
||||||
@@ -71,6 +69,9 @@ SPDX-License-Identifier: GPL-3.0-or-later
|
|||||||
--icon-caution-color: #ff0000;
|
--icon-caution-color: #ff0000;
|
||||||
--icon-important-color: #bf0000;
|
--icon-important-color: #bf0000;
|
||||||
--mark-bg-color: #9df;
|
--mark-bg-color: #9df;
|
||||||
|
--pre-bevel-light: #e5e5e7;
|
||||||
|
--pre-bevel-dark: #b4b4b8;
|
||||||
|
--pre-bevel-bg: #f6f6f7;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -145,6 +146,10 @@ code, .prettyprint {
|
|||||||
|
|
||||||
pre {
|
pre {
|
||||||
color: var(--pre-color) !important;
|
color: var(--pre-color) !important;
|
||||||
|
border: 1px solid;
|
||||||
|
border-color: var(--pre-bevel-light) var(--pre-bevel-dark) var(--pre-bevel-dark) var(--pre-bevel-light);
|
||||||
|
border-radius: 3px;
|
||||||
|
line-height: 1.25;
|
||||||
}
|
}
|
||||||
|
|
||||||
pre > code {
|
pre > code {
|
||||||
@@ -162,8 +167,8 @@ kbd {
|
|||||||
color: var(--body-color);
|
color: var(--body-color);
|
||||||
}
|
}
|
||||||
|
|
||||||
.literalblock pre, .listingblock > .content > pre:not(.highlight), .listingblock > .content > pre[class="highlight"], .listingblock > .content > pre[class^="highlight "] {
|
.literalblock pre, .listingblock > .content > pre:not(.highlight), .listingblock > .content > pre[class="highlight"], .listingblock > .content > pre[class^="highlight "], pre.pygments {
|
||||||
background-color: var(--pre-bg-color);
|
background-color: var(--pre-bg-color, var(--pre-bevel-bg));
|
||||||
color: var(--body-color);
|
color: var(--body-color);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -200,24 +205,6 @@ mark {
|
|||||||
color: var(--body-color);
|
color: var(--body-color);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* syntax highlighting tuning */
|
|
||||||
|
|
||||||
pre.pygments {
|
|
||||||
color: #ddd !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
pre.pygments .tok-cp {
|
|
||||||
color: #44cfaf;
|
|
||||||
}
|
|
||||||
|
|
||||||
pre.pygments .tok-nc, pre.pygments .tok-nf {
|
|
||||||
color: #649fef;
|
|
||||||
}
|
|
||||||
|
|
||||||
pre.pygments .tok-gu, pre.pygments .tok-nc, pre.pygments .tok-nn {
|
|
||||||
text-decoration: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* asciidoctor styles tuning */
|
/* asciidoctor styles tuning */
|
||||||
|
|
||||||
#header, #content, #footnotes, #footer {
|
#header, #content, #footnotes, #footer {
|
||||||
@@ -128,6 +128,7 @@ WeeChat "core" is located in following directories:
|
|||||||
|===
|
|===
|
||||||
| Path/file | Description
|
| Path/file | Description
|
||||||
| core/ | Core functions: entry point, internal structures.
|
| core/ | Core functions: entry point, internal structures.
|
||||||
|
| core-args.c | Command-line arguments.
|
||||||
| core-arraylist.c | Array lists.
|
| core-arraylist.c | Array lists.
|
||||||
| core-backtrace.c | Display a backtrace after a crash.
|
| core-backtrace.c | Display a backtrace after a crash.
|
||||||
| core-calc.c | Calculate result of expressions.
|
| core-calc.c | Calculate result of expressions.
|
||||||
@@ -655,9 +656,9 @@ Example:
|
|||||||
[source,c]
|
[source,c]
|
||||||
----
|
----
|
||||||
/*
|
/*
|
||||||
* Checks if a string with boolean value is valid.
|
* Check if a string with boolean value is valid.
|
||||||
*
|
*
|
||||||
* Returns:
|
* Return:
|
||||||
* 1: boolean value is valid
|
* 1: boolean value is valid
|
||||||
* 0: boolean value is NOT valid
|
* 0: boolean value is NOT valid
|
||||||
*/
|
*/
|
||||||
@@ -932,9 +933,9 @@ Example: creation of a new window (from _src/gui/gui-window.c_):
|
|||||||
[source,c]
|
[source,c]
|
||||||
----
|
----
|
||||||
/*
|
/*
|
||||||
* Creates a new window.
|
* Create a new window.
|
||||||
*
|
*
|
||||||
* Returns pointer to new window, NULL if error.
|
* Return pointer to new window, NULL if error.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
struct t_gui_window *
|
struct t_gui_window *
|
||||||
|
|||||||
@@ -441,7 +441,7 @@ for more information about colors management.
|
|||||||
[[search_text]]
|
[[search_text]]
|
||||||
=== How can I search text in buffer (like /lastlog in irssi)?
|
=== How can I search text in buffer (like /lastlog in irssi)?
|
||||||
|
|
||||||
The default key is kbd:[Ctrl+r] (command is: `+/input search_text_here+`).
|
The default key is kbd:[Ctrl+s] (command is: `+/input search_text_here+`).
|
||||||
And jump to highlights: kbd:[Alt+p] / kbd:[Alt+n].
|
And jump to highlights: kbd:[Alt+p] / kbd:[Alt+n].
|
||||||
|
|
||||||
See link:weechat_user.en.html#key_bindings[User's guide / Key bindings ^↗^^]
|
See link:weechat_user.en.html#key_bindings[User's guide / Key bindings ^↗^^]
|
||||||
|
|||||||
@@ -3474,6 +3474,8 @@ Concatenate a string to a dynamic string.
|
|||||||
The pointer _*string_ can change if the string is reallocated (if there is
|
The pointer _*string_ can change if the string is reallocated (if there is
|
||||||
not enough space to concatenate the string).
|
not enough space to concatenate the string).
|
||||||
|
|
||||||
|
In case of error, the dynamic string is left unchanged.
|
||||||
|
|
||||||
Prototype:
|
Prototype:
|
||||||
|
|
||||||
[source,c]
|
[source,c]
|
||||||
@@ -4348,7 +4350,7 @@ Prototype:
|
|||||||
|
|
||||||
[source,c]
|
[source,c]
|
||||||
----
|
----
|
||||||
int weechat_mkdir_home (char *directory, int mode);
|
int weechat_mkdir_home (const char *directory, int mode);
|
||||||
----
|
----
|
||||||
|
|
||||||
Arguments:
|
Arguments:
|
||||||
@@ -4395,7 +4397,7 @@ Prototype:
|
|||||||
|
|
||||||
[source,c]
|
[source,c]
|
||||||
----
|
----
|
||||||
int weechat_mkdir (char *directory, int mode);
|
int weechat_mkdir (const char *directory, int mode);
|
||||||
----
|
----
|
||||||
|
|
||||||
Arguments:
|
Arguments:
|
||||||
@@ -4436,7 +4438,7 @@ Prototype:
|
|||||||
|
|
||||||
[source,c]
|
[source,c]
|
||||||
----
|
----
|
||||||
int weechat_mkdir_parents (char *directory, int mode);
|
int weechat_mkdir_parents (const char *directory, int mode);
|
||||||
----
|
----
|
||||||
|
|
||||||
Arguments:
|
Arguments:
|
||||||
@@ -7367,7 +7369,7 @@ section = weechat.config_search_section(config_file, "section")
|
|||||||
|
|
||||||
==== config_new_option
|
==== config_new_option
|
||||||
|
|
||||||
_Updated in 1.5, 4.1.0._
|
_Updated in 1.5, 4.1.0, 4.10.0._
|
||||||
|
|
||||||
Create a new option in a section of a configuration file.
|
Create a new option in a section of a configuration file.
|
||||||
|
|
||||||
@@ -7413,7 +7415,9 @@ Arguments:
|
|||||||
option name (the value of parent option will be displayed in `/set` command
|
option name (the value of parent option will be displayed in `/set` command
|
||||||
output if this option is "null"), the syntax is then:
|
output if this option is "null"), the syntax is then:
|
||||||
"name << file.section.option"
|
"name << file.section.option"
|
||||||
* _type_: type of option:
|
* _type_: type of option; any type can be suffixed with `+|themable+` to mark
|
||||||
|
the option as themable, so that it can be set by the `/theme` command
|
||||||
|
(options of type _color_ are always themable) _(WeeChat ≥ 4.10.0)_:
|
||||||
** _boolean_: boolean value (on/off)
|
** _boolean_: boolean value (on/off)
|
||||||
** _integer_: integer value
|
** _integer_: integer value
|
||||||
** _string_: string value
|
** _string_: string value
|
||||||
@@ -7499,7 +7503,7 @@ struct t_config_option *option_int =
|
|||||||
|
|
||||||
/* string */
|
/* string */
|
||||||
struct t_config_option *option_str =
|
struct t_config_option *option_str =
|
||||||
weechat_config_new_option (config_file, section, "option_str", "string",
|
weechat_config_new_option (config_file, section, "option_str", "string|themable",
|
||||||
"My option, type string",
|
"My option, type string",
|
||||||
NULL,
|
NULL,
|
||||||
0, 0,
|
0, 0,
|
||||||
@@ -7575,7 +7579,7 @@ option_int = weechat.config_new_option(config_file, section, "option_int", "inte
|
|||||||
"", "",
|
"", "",
|
||||||
"", "")
|
"", "")
|
||||||
|
|
||||||
option_str = weechat.config_new_option(config_file, section, "option_str", "string",
|
option_str = weechat.config_new_option(config_file, section, "option_str", "string|themable",
|
||||||
"My option, type string",
|
"My option, type string",
|
||||||
"", 0, 0, "test", "test", 1,
|
"", 0, 0, "test", "test", 1,
|
||||||
"option_str_check_value_cb", "",
|
"option_str_check_value_cb", "",
|
||||||
@@ -7709,7 +7713,7 @@ void weechat_config_search_with_string (const char *option_name,
|
|||||||
struct t_config_file **config_file,
|
struct t_config_file **config_file,
|
||||||
struct t_config_section **section,
|
struct t_config_section **section,
|
||||||
struct t_config_option **option,
|
struct t_config_option **option,
|
||||||
char **pos_option_name);
|
const char **pos_option_name);
|
||||||
----
|
----
|
||||||
|
|
||||||
Arguments:
|
Arguments:
|
||||||
@@ -7731,7 +7735,7 @@ C example:
|
|||||||
struct t_config_file *ptr_config_file;
|
struct t_config_file *ptr_config_file;
|
||||||
struct t_config_section *ptr_section;
|
struct t_config_section *ptr_section;
|
||||||
struct t_config_option *ptr_option;
|
struct t_config_option *ptr_option;
|
||||||
char *option_name;
|
const char *option_name;
|
||||||
|
|
||||||
weechat_config_search_with_string ("file.section.option",
|
weechat_config_search_with_string ("file.section.option",
|
||||||
&ptr_config_file,
|
&ptr_config_file,
|
||||||
@@ -9627,6 +9631,89 @@ elif rc == weechat.WEECHAT_CONFIG_OPTION_UNSET_ERROR:
|
|||||||
# ...
|
# ...
|
||||||
----
|
----
|
||||||
|
|
||||||
|
[[themes]]
|
||||||
|
=== Themes
|
||||||
|
|
||||||
|
Functions to contribute color (and other themable option) overrides to
|
||||||
|
built-in themes. See the
|
||||||
|
link:weechat_user.en.html#themes[user's guide / Themes] section for the
|
||||||
|
end-user side and the `+/theme+` command.
|
||||||
|
|
||||||
|
==== theme_register
|
||||||
|
|
||||||
|
_WeeChat ≥ 4.10.0._
|
||||||
|
|
||||||
|
Register a contribution of option overrides under a named theme. The
|
||||||
|
caller's plugin is the owner of the contribution; subsequent calls
|
||||||
|
with the same theme name from the same plugin merge into the existing
|
||||||
|
contribution (later keys win for duplicates).
|
||||||
|
|
||||||
|
When the calling plugin is unloaded, all its contributions are
|
||||||
|
automatically dropped from every theme.
|
||||||
|
|
||||||
|
Prototype:
|
||||||
|
|
||||||
|
[source,c]
|
||||||
|
----
|
||||||
|
struct t_theme *weechat_theme_register (const char *name,
|
||||||
|
struct t_hashtable *overrides);
|
||||||
|
----
|
||||||
|
|
||||||
|
Arguments:
|
||||||
|
|
||||||
|
* _name_: theme name (for example `+light+` or a custom name)
|
||||||
|
* _overrides_: hashtable mapping full option names
|
||||||
|
(e.g. `+irc.color.input_nick+`) to their string values; the caller
|
||||||
|
retains ownership and may free the hashtable right after the call
|
||||||
|
|
||||||
|
Return value:
|
||||||
|
|
||||||
|
* pointer to the registered theme (existing or newly created), NULL on
|
||||||
|
error
|
||||||
|
|
||||||
|
C example:
|
||||||
|
|
||||||
|
[source,c]
|
||||||
|
----
|
||||||
|
struct t_hashtable *overrides = weechat_hashtable_new (
|
||||||
|
8,
|
||||||
|
WEECHAT_HASHTABLE_STRING,
|
||||||
|
WEECHAT_HASHTABLE_STRING,
|
||||||
|
NULL, NULL);
|
||||||
|
if (overrides)
|
||||||
|
{
|
||||||
|
weechat_hashtable_set (overrides, "irc.color.input_nick", "cyan");
|
||||||
|
weechat_hashtable_set (overrides, "irc.color.topic_old", "darkgray");
|
||||||
|
weechat_theme_register ("light", overrides);
|
||||||
|
weechat_hashtable_free (overrides);
|
||||||
|
}
|
||||||
|
----
|
||||||
|
|
||||||
|
Script (Python):
|
||||||
|
|
||||||
|
[source,python]
|
||||||
|
----
|
||||||
|
# prototype
|
||||||
|
def theme_register(name: str, overrides: Dict[str, str]) -> str: ...
|
||||||
|
|
||||||
|
# example
|
||||||
|
weechat.theme_register("light", {
|
||||||
|
"irc.color.input_nick": "cyan",
|
||||||
|
"irc.color.topic_old": "darkgray",
|
||||||
|
})
|
||||||
|
----
|
||||||
|
|
||||||
|
[NOTE]
|
||||||
|
Only options that have the _themable_ flag will be set by `/theme apply`.
|
||||||
|
All `*.color.*` options are themable by default; string options that
|
||||||
|
hold `+${color:...}+` references are explicitly opted in. Entries
|
||||||
|
targeting non-themable options are silently skipped at apply-time with
|
||||||
|
a warning logged to the _core_ buffer.
|
||||||
|
|
||||||
|
[NOTE]
|
||||||
|
When called from a script, the contribution is automatically dropped
|
||||||
|
when the script unloads (no manual cleanup is needed).
|
||||||
|
|
||||||
[[key_bindings]]
|
[[key_bindings]]
|
||||||
=== Key bindings
|
=== Key bindings
|
||||||
|
|
||||||
|
|||||||
@@ -541,7 +541,8 @@ HTTP/1.1 200 OK
|
|||||||
"plugin": "core",
|
"plugin": "core",
|
||||||
"name": "weechat"
|
"name": "weechat"
|
||||||
},
|
},
|
||||||
"keys": []
|
"keys": [],
|
||||||
|
"last_read_line_id": -1
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": 1709932823423765,
|
"id": 1709932823423765,
|
||||||
@@ -571,7 +572,8 @@ HTTP/1.1 200 OK
|
|||||||
"tls_version": "TLS1.3",
|
"tls_version": "TLS1.3",
|
||||||
"host": "~alice@example.com"
|
"host": "~alice@example.com"
|
||||||
},
|
},
|
||||||
"keys": []
|
"keys": [],
|
||||||
|
"last_read_line_id": -1
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": 1709932823649069,
|
"id": 1709932823649069,
|
||||||
@@ -599,7 +601,8 @@ HTTP/1.1 200 OK
|
|||||||
"nick": "alice",
|
"nick": "alice",
|
||||||
"host": "~alice@example.com"
|
"host": "~alice@example.com"
|
||||||
},
|
},
|
||||||
"keys": []
|
"keys": [],
|
||||||
|
"last_read_line_id": -1
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
----
|
----
|
||||||
@@ -655,7 +658,8 @@ HTTP/1.1 200 OK
|
|||||||
"message": "Plugins loaded: alias, buflist, charset, exec, fifo, fset, guile, irc, javascript, logger, lua, perl, php, python, relay, ruby, script, spell, tcl, trigger, typing, xfer",
|
"message": "Plugins loaded: alias, buflist, charset, exec, fifo, fset, guile, irc, javascript, logger, lua, perl, php, python, relay, ruby, script, spell, tcl, trigger, typing, xfer",
|
||||||
"tags": []
|
"tags": []
|
||||||
}
|
}
|
||||||
]
|
],
|
||||||
|
"last_read_line_id": -1
|
||||||
}
|
}
|
||||||
----
|
----
|
||||||
|
|
||||||
@@ -702,6 +706,7 @@ HTTP/1.1 200 OK
|
|||||||
"host": "~alice@example.com"
|
"host": "~alice@example.com"
|
||||||
},
|
},
|
||||||
"keys": [],
|
"keys": [],
|
||||||
|
"last_read_line_id": -1,
|
||||||
"nicklist_root": {
|
"nicklist_root": {
|
||||||
"id": 0,
|
"id": 0,
|
||||||
"parent_group_id": -1,
|
"parent_group_id": -1,
|
||||||
@@ -900,7 +905,8 @@ HTTP/1.1 200 OK
|
|||||||
"key": "up",
|
"key": "up",
|
||||||
"command": "/fset -up"
|
"command": "/fset -up"
|
||||||
}
|
}
|
||||||
]
|
],
|
||||||
|
"last_read_line_id": -1
|
||||||
}
|
}
|
||||||
----
|
----
|
||||||
|
|
||||||
@@ -1028,6 +1034,13 @@ Path parameters:
|
|||||||
confused with the buffer number, which is different)
|
confused with the buffer number, which is different)
|
||||||
* `buffer_name` (string, **required**): buffer name
|
* `buffer_name` (string, **required**): buffer name
|
||||||
|
|
||||||
|
Query parameters:
|
||||||
|
|
||||||
|
* `colors` (string, optional, default: `ansi`): how to return strings with color codes:
|
||||||
|
** `ansi`: return ANSI color codes
|
||||||
|
** `weechat`: return WeeChat internal color codes
|
||||||
|
** `strip`: strip colors
|
||||||
|
|
||||||
Request example: get nicks of a buffer:
|
Request example: get nicks of a buffer:
|
||||||
|
|
||||||
[source,shell]
|
[source,shell]
|
||||||
@@ -1173,6 +1186,51 @@ HTTP/1.1 200 OK
|
|||||||
]
|
]
|
||||||
----
|
----
|
||||||
|
|
||||||
|
[[resource_scripts]]
|
||||||
|
=== Scripts
|
||||||
|
|
||||||
|
Return loaded scripts (all languages).
|
||||||
|
|
||||||
|
Endpoint:
|
||||||
|
|
||||||
|
----
|
||||||
|
GET /api/scripts
|
||||||
|
----
|
||||||
|
|
||||||
|
Request example:
|
||||||
|
|
||||||
|
[source,shell]
|
||||||
|
----
|
||||||
|
curl -L -u 'plain:secret_password' 'https://localhost:9000/api/scripts'
|
||||||
|
----
|
||||||
|
|
||||||
|
Response:
|
||||||
|
|
||||||
|
[source,http]
|
||||||
|
----
|
||||||
|
HTTP/1.1 200 OK
|
||||||
|
----
|
||||||
|
|
||||||
|
[source,json]
|
||||||
|
----
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"name": "highmon.pl",
|
||||||
|
"version": "2.7",
|
||||||
|
"description": "Highlight Monitor",
|
||||||
|
"author": "KenjiE20",
|
||||||
|
"license": "GPL3"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "go.py",
|
||||||
|
"version": "3.1.1",
|
||||||
|
"description": "Quick jump to buffers",
|
||||||
|
"author": "Sébastien Helleu <flashcode@flashtux.org>",
|
||||||
|
"license": "GPL3"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
----
|
||||||
|
|
||||||
[[resource_input]]
|
[[resource_input]]
|
||||||
=== Input
|
=== Input
|
||||||
|
|
||||||
@@ -1504,6 +1562,7 @@ Body types that can be returned:
|
|||||||
* `nick_group` (object)
|
* `nick_group` (object)
|
||||||
* `nick` (object)
|
* `nick` (object)
|
||||||
* `hotlist` (object)
|
* `hotlist` (object)
|
||||||
|
* `scripts` (array)
|
||||||
* `ping` (object)
|
* `ping` (object)
|
||||||
|
|
||||||
[TIP]
|
[TIP]
|
||||||
|
|||||||
+146
-1
@@ -210,7 +210,7 @@ WeeChat:
|
|||||||
| asciidoctor | ≥ 1.5.4
|
| asciidoctor | ≥ 1.5.4
|
||||||
| Build man page and documentation.
|
| Build man page and documentation.
|
||||||
|
|
||||||
| ruby-pygments.rb |
|
| python3-pygments, ruby-pygments.rb |
|
||||||
| Build documentation.
|
| Build documentation.
|
||||||
|
|
||||||
| libcpputest-dev | ≥ 3.4
|
| libcpputest-dev | ≥ 3.4
|
||||||
@@ -2185,6 +2185,151 @@ Example of bold with terminal foreground color:
|
|||||||
/set weechat.color.status_time *99999
|
/set weechat.color.status_time *99999
|
||||||
----
|
----
|
||||||
|
|
||||||
|
[[themes]]
|
||||||
|
=== Themes
|
||||||
|
|
||||||
|
A theme is a named bundle of option overrides that can be applied with
|
||||||
|
the <<command_weechat_theme,/theme>> command. WeeChat ships a built-in
|
||||||
|
`"light"` theme tuned for light-background terminals and supports
|
||||||
|
user-defined themes loaded transiently from files.
|
||||||
|
|
||||||
|
[[themes_themable_options]]
|
||||||
|
==== Themable options
|
||||||
|
|
||||||
|
Themes can only set options marked as _themable_. All `*.color.*`
|
||||||
|
options are themable by default; a few string options that hold format
|
||||||
|
expressions with `+${color:...}+` references (such as
|
||||||
|
`+weechat.color.chat_nick_colors+`, `+weechat.look.prefix_error+` or the
|
||||||
|
`+buflist.format.*+` formats) are explicitly opted in.
|
||||||
|
|
||||||
|
You can list the full themable surface area from the
|
||||||
|
<<command_fset_fset,/fset>> buffer with the `+t:themable+` filter.
|
||||||
|
|
||||||
|
[[themes_apply]]
|
||||||
|
==== Applying a theme
|
||||||
|
|
||||||
|
To switch to the built-in light-background theme:
|
||||||
|
|
||||||
|
----
|
||||||
|
/theme apply light
|
||||||
|
----
|
||||||
|
|
||||||
|
The current state of every themable option is saved beforehand to a
|
||||||
|
backup theme file named like `+backup-YYYYMMDD-HHMMSS-uuuuuu+` in
|
||||||
|
directory `+themes+` inside the WeeChat configuration directory, so the
|
||||||
|
previous look can be restored at any time with:
|
||||||
|
|
||||||
|
----
|
||||||
|
/theme apply backup-YYYYMMDD-HHMMSS-uuuuuu
|
||||||
|
----
|
||||||
|
|
||||||
|
Backup creation can be disabled (not recommended):
|
||||||
|
|
||||||
|
----
|
||||||
|
/set weechat.look.theme_backup off
|
||||||
|
----
|
||||||
|
|
||||||
|
If backup is enabled and the backup file cannot be written, the apply
|
||||||
|
is aborted before any option is changed.
|
||||||
|
|
||||||
|
The name of the last applied theme is stored in
|
||||||
|
`+weechat.look.theme+` (informational only; not re-applied at startup).
|
||||||
|
|
||||||
|
[[themes_reset]]
|
||||||
|
==== Resetting to defaults
|
||||||
|
|
||||||
|
To restore the look shipped with WeeChat, reset every themable option
|
||||||
|
to its default value:
|
||||||
|
|
||||||
|
----
|
||||||
|
/theme reset
|
||||||
|
----
|
||||||
|
|
||||||
|
A backup is written first (same gate as `+/theme apply+`); on backup
|
||||||
|
failure the reset is aborted before any option is changed.
|
||||||
|
`+weechat.look.theme+` is cleared too.
|
||||||
|
|
||||||
|
[[themes_save_delete]]
|
||||||
|
==== Saving and deleting user themes
|
||||||
|
|
||||||
|
Save the current themable options as a new user theme file:
|
||||||
|
|
||||||
|
----
|
||||||
|
/theme save mytheme
|
||||||
|
----
|
||||||
|
|
||||||
|
Every themable option is written, so the file is self-contained and
|
||||||
|
applies the exact same look on any WeeChat, regardless of its current
|
||||||
|
configuration.
|
||||||
|
|
||||||
|
Reserved names (built-in theme names like `+light+` and any name
|
||||||
|
starting with `+backup-+`) are refused. Files live at
|
||||||
|
`+${weechat_config_dir}/themes/<name>.theme+`.
|
||||||
|
|
||||||
|
Rename a user theme (typical use: keep a useful automatic backup
|
||||||
|
under a meaningful name):
|
||||||
|
|
||||||
|
----
|
||||||
|
/theme rename backup-20260525-094210-123456 mybackup
|
||||||
|
----
|
||||||
|
|
||||||
|
Built-in themes have no file and cannot be renamed; the target name
|
||||||
|
cannot match a built-in name or start with `+backup-+`, and the
|
||||||
|
target file must not already exist. The `+[info]+` `+name+` field
|
||||||
|
inside the file is rewritten so `/theme info` reports the new name
|
||||||
|
consistently.
|
||||||
|
|
||||||
|
Delete a user theme:
|
||||||
|
|
||||||
|
----
|
||||||
|
/theme del mytheme
|
||||||
|
----
|
||||||
|
|
||||||
|
This removes the file on disk; built-in themes cannot be deleted.
|
||||||
|
|
||||||
|
[[themes_file_format]]
|
||||||
|
==== Theme file format
|
||||||
|
|
||||||
|
A theme file is INI-like with two sections:
|
||||||
|
|
||||||
|
----
|
||||||
|
[info]
|
||||||
|
name = "solarized_light"
|
||||||
|
description = "Light-background theme inspired by Solarized"
|
||||||
|
date = "2026-05-25 09:42:10"
|
||||||
|
weechat = "4.10.0-dev"
|
||||||
|
|
||||||
|
[options]
|
||||||
|
weechat.color.chat = "darkgray"
|
||||||
|
weechat.color.separator = "blue"
|
||||||
|
irc.color.input_nick = "magenta"
|
||||||
|
buflist.format.number = "${color:28}${number}${if:${number_displayed}?.: }"
|
||||||
|
----
|
||||||
|
|
||||||
|
`+[info]+` is informational metadata shown by `/theme info`. `+[options]+`
|
||||||
|
holds the actual overrides; keys are the full option names that would
|
||||||
|
appear in `/set`. String values can be enclosed in double or single
|
||||||
|
quotes; quotes are stripped at parse time. Non-themable options listed
|
||||||
|
in a theme file are refused at apply time and logged to the core
|
||||||
|
buffer (so a `.theme` file imported from an untrusted source cannot
|
||||||
|
overwrite passwords, autoload lists, or startup commands).
|
||||||
|
|
||||||
|
User theme files are never cached: on every `/theme apply <name>` the
|
||||||
|
file is parsed, applied, and freed.
|
||||||
|
|
||||||
|
[[themes_resolution]]
|
||||||
|
==== Resolution order
|
||||||
|
|
||||||
|
When `+/theme apply <name>+` is run:
|
||||||
|
|
||||||
|
* If `+${weechat_config_dir}/themes/<name>.theme+` exists, the file
|
||||||
|
is parsed and used (it shadows any built-in with the same name).
|
||||||
|
* Otherwise the built-in theme registry is consulted; built-ins are
|
||||||
|
registered programmatically by core, plugins and scripts (see the
|
||||||
|
plugin and scripting documentation for `+weechat_theme_register+`).
|
||||||
|
|
||||||
|
If neither source provides the name, the apply is refused.
|
||||||
|
|
||||||
[[charset]]
|
[[charset]]
|
||||||
=== Charset
|
=== Charset
|
||||||
|
|
||||||
|
|||||||
@@ -454,7 +454,7 @@ información sobre la gestión de los colores.
|
|||||||
[[search_text]]
|
[[search_text]]
|
||||||
=== ¿Cómo busco texto en un buffer (como /lastlog en irssi)?
|
=== ¿Cómo busco texto en un buffer (como /lastlog en irssi)?
|
||||||
|
|
||||||
La tecla predeterminada es kbd:[Ctrl+r] (el comando es: `+/input texto_a_buscar_aquí+`).
|
La tecla predeterminada es kbd:[Ctrl+s] (el comando es: `+/input texto_a_buscar_aquí+`).
|
||||||
Y para saltar a los textos resaltados: kbd:[Alt+p] / kbd:[Alt+n].
|
Y para saltar a los textos resaltados: kbd:[Alt+p] / kbd:[Alt+n].
|
||||||
|
|
||||||
Vea la link:weechat_user.en.html#key_bindings[Guía del usuario / Atajos de teclado ^↗^^]
|
Vea la link:weechat_user.en.html#key_bindings[Guía del usuario / Atajos de teclado ^↗^^]
|
||||||
|
|||||||
@@ -9,7 +9,7 @@ https://weechat.org/doc/[guide utilisateur de WeeChat].
|
|||||||
|
|
||||||
Avec l'extension irc, vous pouvez vous connecter à un serveur avec une URL, comme ceci :
|
Avec l'extension irc, vous pouvez vous connecter à un serveur avec une URL, comme ceci :
|
||||||
|
|
||||||
irc[6][s]://[[pseudo][:motdepasse]@]serveur[:port][/#canal1[,#canal2...]]
|
irc[6][s]://[[pseudo][:mot_de_passe]@]serveur[:port][/#canal1[,#canal2...]]
|
||||||
|
|
||||||
Pour rejoindre le canal IRC de support WeeChat avec le pseudo "monpseudo" :
|
Pour rejoindre le canal IRC de support WeeChat avec le pseudo "monpseudo" :
|
||||||
|
|
||||||
|
|||||||
@@ -129,6 +129,7 @@ Le cœur de WeeChat est situé dans les répertoires suivants :
|
|||||||
|===
|
|===
|
||||||
| Chemin/fichier | Description
|
| Chemin/fichier | Description
|
||||||
| core/ | Fonctions du cœur : point d'entrée, structures internes.
|
| core/ | Fonctions du cœur : point d'entrée, structures internes.
|
||||||
|
| core-args.c | Paramètres de ligne de commande.
|
||||||
| core-arraylist.c | Listes avec tableau (« arraylists »).
|
| core-arraylist.c | Listes avec tableau (« arraylists »).
|
||||||
| core-backtrace.c | Afficher une trace après un plantage.
|
| core-backtrace.c | Afficher une trace après un plantage.
|
||||||
| core-calc.c | Calcul du résultat d'expressions.
|
| core-calc.c | Calcul du résultat d'expressions.
|
||||||
@@ -659,9 +660,9 @@ Exemple :
|
|||||||
[source,c]
|
[source,c]
|
||||||
----
|
----
|
||||||
/*
|
/*
|
||||||
* Checks if a string with boolean value is valid.
|
* Check if a string with boolean value is valid.
|
||||||
*
|
*
|
||||||
* Returns:
|
* Return:
|
||||||
* 1: boolean value is valid
|
* 1: boolean value is valid
|
||||||
* 0: boolean value is NOT valid
|
* 0: boolean value is NOT valid
|
||||||
*/
|
*/
|
||||||
@@ -942,9 +943,9 @@ Exemple : création d'une nouvelle fenêtre (de _src/gui/gui-window.c_) :
|
|||||||
[source,c]
|
[source,c]
|
||||||
----
|
----
|
||||||
/*
|
/*
|
||||||
* Creates a new window.
|
* Create a new window.
|
||||||
*
|
*
|
||||||
* Returns pointer to new window, NULL if error.
|
* Return pointer to new window, NULL if error.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
struct t_gui_window *
|
struct t_gui_window *
|
||||||
|
|||||||
@@ -457,7 +457,7 @@ pour plus d'information sur la gestion des couleurs.
|
|||||||
[[search_text]]
|
[[search_text]]
|
||||||
=== Comment puis-je chercher du texte dans le tampon (comme /lastlog dans irssi) ?
|
=== Comment puis-je chercher du texte dans le tampon (comme /lastlog dans irssi) ?
|
||||||
|
|
||||||
La touche par défaut est kbd:[Ctrl+r] (la commande est : `+/input search_text_here+`).
|
La touche par défaut est kbd:[Ctrl+s] (la commande est : `+/input search_text_here+`).
|
||||||
Et sauter aux highlights : kbd:[Alt+p] / kbd:[Alt+n].
|
Et sauter aux highlights : kbd:[Alt+p] / kbd:[Alt+n].
|
||||||
|
|
||||||
Voir le link:weechat_user.fr.html#key_bindings[Guide utilisateur / Raccourcis clavier par défaut ^↗^^]
|
Voir le link:weechat_user.fr.html#key_bindings[Guide utilisateur / Raccourcis clavier par défaut ^↗^^]
|
||||||
|
|||||||
@@ -3532,6 +3532,8 @@ Concaténer une chaîne dans une chaîne dynamique.
|
|||||||
Le pointeur _*string_ peut changer si la chaîne est réallouée (s'il n'y a pas
|
Le pointeur _*string_ peut changer si la chaîne est réallouée (s'il n'y a pas
|
||||||
assez de place pour concaténer la chaîne).
|
assez de place pour concaténer la chaîne).
|
||||||
|
|
||||||
|
En cas d'erreur, la chaîne dynamique reste inchangée.
|
||||||
|
|
||||||
Prototype :
|
Prototype :
|
||||||
|
|
||||||
[source,c]
|
[source,c]
|
||||||
@@ -4424,7 +4426,7 @@ Prototype :
|
|||||||
|
|
||||||
[source,c]
|
[source,c]
|
||||||
----
|
----
|
||||||
int weechat_mkdir_home (char *directory, int mode);
|
int weechat_mkdir_home (const char *directory, int mode);
|
||||||
----
|
----
|
||||||
|
|
||||||
Paramètres :
|
Paramètres :
|
||||||
@@ -4471,7 +4473,7 @@ Prototype :
|
|||||||
|
|
||||||
[source,c]
|
[source,c]
|
||||||
----
|
----
|
||||||
int weechat_mkdir (char *directory, int mode);
|
int weechat_mkdir (const char *directory, int mode);
|
||||||
----
|
----
|
||||||
|
|
||||||
Paramètres :
|
Paramètres :
|
||||||
@@ -4512,7 +4514,7 @@ Prototype :
|
|||||||
|
|
||||||
[source,c]
|
[source,c]
|
||||||
----
|
----
|
||||||
int weechat_mkdir_parents (char *directory, int mode);
|
int weechat_mkdir_parents (const char *directory, int mode);
|
||||||
----
|
----
|
||||||
|
|
||||||
Paramètres :
|
Paramètres :
|
||||||
@@ -7488,7 +7490,7 @@ section = weechat.config_search_section(config_file, "section")
|
|||||||
|
|
||||||
==== config_new_option
|
==== config_new_option
|
||||||
|
|
||||||
_Mis à jour dans la 1.5, 4.1.0._
|
_Mis à jour dans la 1.5, 4.1.0, 4.10.0._
|
||||||
|
|
||||||
Créer une nouvelle option dans une section d'un fichier de configuration.
|
Créer une nouvelle option dans une section d'un fichier de configuration.
|
||||||
|
|
||||||
@@ -7534,7 +7536,10 @@ Paramètres :
|
|||||||
d'une option parente (la valeur de l'option parente sera affichée dans la
|
d'une option parente (la valeur de l'option parente sera affichée dans la
|
||||||
sortie de `/set` si cette option est "null"), la syntaxe est alors :
|
sortie de `/set` si cette option est "null"), la syntaxe est alors :
|
||||||
"name << file.section.option"
|
"name << file.section.option"
|
||||||
* _type_ : type de l'option :
|
* _type_ : type de l'option ; n'importe quel type peut être suffixé par
|
||||||
|
`+|themable+` pour rendre l'option modifiable par un thème, afin qu'elle
|
||||||
|
puisse être définie par la commande `/theme` (les options de type _color_
|
||||||
|
sont toujours modifiables par un thème) _(WeeChat ≥ 4.10.0)_ :
|
||||||
** _boolean_ : valeur booléenne (on/off)
|
** _boolean_ : valeur booléenne (on/off)
|
||||||
** _integer_ : valeur entière
|
** _integer_ : valeur entière
|
||||||
** _string_ : une chaîne de caractères
|
** _string_ : une chaîne de caractères
|
||||||
@@ -7625,7 +7630,7 @@ struct t_config_option *option_int =
|
|||||||
|
|
||||||
/* chaîne */
|
/* chaîne */
|
||||||
struct t_config_option *option_str =
|
struct t_config_option *option_str =
|
||||||
weechat_config_new_option (config_file, section, "option_str", "string",
|
weechat_config_new_option (config_file, section, "option_str", "string|themable",
|
||||||
"Mon option, type chaîne",
|
"Mon option, type chaîne",
|
||||||
NULL,
|
NULL,
|
||||||
0, 0,
|
0, 0,
|
||||||
@@ -7701,7 +7706,7 @@ option_int = weechat.config_new_option(config_file, section, "option_int", "inte
|
|||||||
"", "",
|
"", "",
|
||||||
"", "")
|
"", "")
|
||||||
|
|
||||||
option_str = weechat.config_new_option(config_file, section, "option_str", "string",
|
option_str = weechat.config_new_option(config_file, section, "option_str", "string|themable",
|
||||||
"Mon option, type chaîne",
|
"Mon option, type chaîne",
|
||||||
"", 0, 0, "test", "test", 1,
|
"", 0, 0, "test", "test", 1,
|
||||||
"option_str_check_value_cb", "",
|
"option_str_check_value_cb", "",
|
||||||
@@ -7838,7 +7843,7 @@ void weechat_config_search_with_string (const char *option_name,
|
|||||||
struct t_config_file **config_file,
|
struct t_config_file **config_file,
|
||||||
struct t_config_section **section,
|
struct t_config_section **section,
|
||||||
struct t_config_option **option,
|
struct t_config_option **option,
|
||||||
char **pos_option_name);
|
const char **pos_option_name);
|
||||||
----
|
----
|
||||||
|
|
||||||
Paramètres :
|
Paramètres :
|
||||||
@@ -7861,7 +7866,7 @@ Exemple en C :
|
|||||||
struct t_config_file *ptr_config_file;
|
struct t_config_file *ptr_config_file;
|
||||||
struct t_config_section *ptr_section;
|
struct t_config_section *ptr_section;
|
||||||
struct t_config_option *ptr_option;
|
struct t_config_option *ptr_option;
|
||||||
char *option_name;
|
const char *option_name;
|
||||||
|
|
||||||
weechat_config_search_with_string ("fichier.section.option",
|
weechat_config_search_with_string ("fichier.section.option",
|
||||||
&ptr_config_file,
|
&ptr_config_file,
|
||||||
@@ -9771,6 +9776,95 @@ elif rc == weechat.WEECHAT_CONFIG_OPTION_UNSET_ERROR:
|
|||||||
# ...
|
# ...
|
||||||
----
|
----
|
||||||
|
|
||||||
|
[[themes]]
|
||||||
|
=== Thèmes
|
||||||
|
|
||||||
|
Fonctions permettant de contribuer des surcharges d'options de couleur
|
||||||
|
(et autres options modifiables par un thème) à des thèmes intégrés.
|
||||||
|
Voir la section
|
||||||
|
link:weechat_user.fr.html#themes[guide utilisateur / Thèmes] pour le
|
||||||
|
côté utilisateur final et la commande `+/theme+`.
|
||||||
|
|
||||||
|
==== theme_register
|
||||||
|
|
||||||
|
_WeeChat ≥ 4.10.0._
|
||||||
|
|
||||||
|
Enregistrer une contribution de surcharges d'options sous un thème
|
||||||
|
nommé. L'extension appelante est le propriétaire de la contribution ;
|
||||||
|
les appels suivants avec le même nom de thème depuis la même extension
|
||||||
|
sont fusionnés dans la contribution existante (en cas de doublons, les
|
||||||
|
dernières clés gagnent).
|
||||||
|
|
||||||
|
Lorsque l'extension appelante est déchargée, toutes ses contributions
|
||||||
|
sont automatiquement retirées de tous les thèmes.
|
||||||
|
|
||||||
|
Prototype :
|
||||||
|
|
||||||
|
[source,c]
|
||||||
|
----
|
||||||
|
struct t_theme *weechat_theme_register (const char *name,
|
||||||
|
struct t_hashtable *overrides);
|
||||||
|
----
|
||||||
|
|
||||||
|
Paramètres :
|
||||||
|
|
||||||
|
* _name_ : nom du thème (par exemple `+light+` ou un nom personnalisé)
|
||||||
|
* _overrides_ : table de hachage associant des noms d'options complets
|
||||||
|
(par exemple `+irc.color.input_nick+`) à leurs valeurs chaîne ;
|
||||||
|
l'appelant en conserve la propriété et peut la libérer juste après
|
||||||
|
l'appel
|
||||||
|
|
||||||
|
Valeur de retour :
|
||||||
|
|
||||||
|
* pointeur vers le thème enregistré (existant ou nouvellement créé),
|
||||||
|
NULL en cas d'erreur
|
||||||
|
|
||||||
|
Exemple en C :
|
||||||
|
|
||||||
|
[source,c]
|
||||||
|
----
|
||||||
|
struct t_hashtable *overrides = weechat_hashtable_new (
|
||||||
|
8,
|
||||||
|
WEECHAT_HASHTABLE_STRING,
|
||||||
|
WEECHAT_HASHTABLE_STRING,
|
||||||
|
NULL, NULL);
|
||||||
|
if (overrides)
|
||||||
|
{
|
||||||
|
weechat_hashtable_set (overrides, "irc.color.input_nick", "cyan");
|
||||||
|
weechat_hashtable_set (overrides, "irc.color.topic_old", "darkgray");
|
||||||
|
weechat_theme_register ("light", overrides);
|
||||||
|
weechat_hashtable_free (overrides);
|
||||||
|
}
|
||||||
|
----
|
||||||
|
|
||||||
|
Script (Python) :
|
||||||
|
|
||||||
|
[source,python]
|
||||||
|
----
|
||||||
|
# prototype
|
||||||
|
def theme_register(name: str, overrides: Dict[str, str]) -> str: ...
|
||||||
|
|
||||||
|
# exemple
|
||||||
|
weechat.theme_register("light", {
|
||||||
|
"irc.color.input_nick": "cyan",
|
||||||
|
"irc.color.topic_old": "darkgray",
|
||||||
|
})
|
||||||
|
----
|
||||||
|
|
||||||
|
[NOTE]
|
||||||
|
Seules les options possédant le flag _themable_ seront modifiées par
|
||||||
|
`/theme apply`. Toutes les options `*.color.*` sont modifiables par
|
||||||
|
défaut ; les options de type chaîne contenant des références
|
||||||
|
`+${color:...}+` sont explicitement déclarées comme modifiables. Les
|
||||||
|
entrées ciblant des options non modifiables sont silencieusement
|
||||||
|
ignorées au moment de l'application avec un avertissement écrit sur
|
||||||
|
le tampon _core_.
|
||||||
|
|
||||||
|
[NOTE]
|
||||||
|
Lorsqu'elle est appelée depuis un script, la contribution est
|
||||||
|
automatiquement retirée lorsque le script est déchargé (aucun nettoyage
|
||||||
|
manuel n'est nécessaire).
|
||||||
|
|
||||||
[[key_bindings]]
|
[[key_bindings]]
|
||||||
=== Associations de touches
|
=== Associations de touches
|
||||||
|
|
||||||
|
|||||||
@@ -551,7 +551,8 @@ HTTP/1.1 200 OK
|
|||||||
"plugin": "core",
|
"plugin": "core",
|
||||||
"name": "weechat"
|
"name": "weechat"
|
||||||
},
|
},
|
||||||
"keys": []
|
"keys": [],
|
||||||
|
"last_read_line_id": -1
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": 1709932823423765,
|
"id": 1709932823423765,
|
||||||
@@ -580,7 +581,8 @@ HTTP/1.1 200 OK
|
|||||||
"tls_version": "TLS1.3",
|
"tls_version": "TLS1.3",
|
||||||
"host": "~alice@example.com"
|
"host": "~alice@example.com"
|
||||||
},
|
},
|
||||||
"keys": []
|
"keys": [],
|
||||||
|
"last_read_line_id": -1
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": 1709932823649069,
|
"id": 1709932823649069,
|
||||||
@@ -607,7 +609,8 @@ HTTP/1.1 200 OK
|
|||||||
"nick": "alice",
|
"nick": "alice",
|
||||||
"host": "~alice@example.com"
|
"host": "~alice@example.com"
|
||||||
},
|
},
|
||||||
"keys": []
|
"keys": [],
|
||||||
|
"last_read_line_id": -1
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
----
|
----
|
||||||
@@ -663,7 +666,8 @@ HTTP/1.1 200 OK
|
|||||||
"message": "Plugins loaded: alias, buflist, charset, exec, fifo, fset, guile, irc, javascript, logger, lua, perl, php, python, relay, ruby, script, spell, tcl, trigger, typing, xfer",
|
"message": "Plugins loaded: alias, buflist, charset, exec, fifo, fset, guile, irc, javascript, logger, lua, perl, php, python, relay, ruby, script, spell, tcl, trigger, typing, xfer",
|
||||||
"tags": []
|
"tags": []
|
||||||
}
|
}
|
||||||
]
|
],
|
||||||
|
"last_read_line_id": -1
|
||||||
}
|
}
|
||||||
----
|
----
|
||||||
|
|
||||||
@@ -709,6 +713,7 @@ HTTP/1.1 200 OK
|
|||||||
"host": "~alice@example.com"
|
"host": "~alice@example.com"
|
||||||
},
|
},
|
||||||
"keys": [],
|
"keys": [],
|
||||||
|
"last_read_line_id": -1,
|
||||||
"nicklist_root": {
|
"nicklist_root": {
|
||||||
"id": 0,
|
"id": 0,
|
||||||
"parent_group_id": -1,
|
"parent_group_id": -1,
|
||||||
@@ -906,7 +911,8 @@ HTTP/1.1 200 OK
|
|||||||
"key": "up",
|
"key": "up",
|
||||||
"command": "/fset -up"
|
"command": "/fset -up"
|
||||||
}
|
}
|
||||||
]
|
],
|
||||||
|
"last_read_line_id": -1
|
||||||
}
|
}
|
||||||
----
|
----
|
||||||
|
|
||||||
@@ -1040,6 +1046,14 @@ Paramètres de chemin :
|
|||||||
confondre avec le numéro du tampon, qui est différent)
|
confondre avec le numéro du tampon, qui est différent)
|
||||||
* `buffer_name` (chaîne, **obligatoire**) : nom du tampon
|
* `buffer_name` (chaîne, **obligatoire**) : nom du tampon
|
||||||
|
|
||||||
|
Paramètres de requête :
|
||||||
|
|
||||||
|
* `colors` (chaîne, facultatif, par défaut : `ansi`) : comment les chaînes avec
|
||||||
|
des couleurs sont retournées :
|
||||||
|
** `ansi` : retourner les codes couleur ANSI
|
||||||
|
** `weechat` : retourner les codes couleur internes WeeChat
|
||||||
|
** `strip` : supprimer les couleurs
|
||||||
|
|
||||||
Exemple de requête : obtenir les pseudos d'un tampon :
|
Exemple de requête : obtenir les pseudos d'un tampon :
|
||||||
|
|
||||||
[source,shell]
|
[source,shell]
|
||||||
@@ -1185,6 +1199,51 @@ HTTP/1.1 200 OK
|
|||||||
]
|
]
|
||||||
----
|
----
|
||||||
|
|
||||||
|
[[resource_scripts]]
|
||||||
|
=== Scripts
|
||||||
|
|
||||||
|
Retourner la liste des scripts chargés (tous les langages).
|
||||||
|
|
||||||
|
Point de terminaison :
|
||||||
|
|
||||||
|
----
|
||||||
|
GET /api/scripts
|
||||||
|
----
|
||||||
|
|
||||||
|
Exemple de requête :
|
||||||
|
|
||||||
|
[source,shell]
|
||||||
|
----
|
||||||
|
curl -L -u 'plain:secret_password' 'https://localhost:9000/api/scripts'
|
||||||
|
----
|
||||||
|
|
||||||
|
Réponse :
|
||||||
|
|
||||||
|
[source,http]
|
||||||
|
----
|
||||||
|
HTTP/1.1 200 OK
|
||||||
|
----
|
||||||
|
|
||||||
|
[source,json]
|
||||||
|
----
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"name": "highmon.pl",
|
||||||
|
"version": "2.7",
|
||||||
|
"description": "Highlight Monitor",
|
||||||
|
"author": "KenjiE20",
|
||||||
|
"license": "GPL3"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "go.py",
|
||||||
|
"version": "3.1.1",
|
||||||
|
"description": "Quick jump to buffers",
|
||||||
|
"author": "Sébastien Helleu <flashcode@flashtux.org>",
|
||||||
|
"license": "GPL3"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
----
|
||||||
|
|
||||||
[[resource_input]]
|
[[resource_input]]
|
||||||
=== Entrée
|
=== Entrée
|
||||||
|
|
||||||
@@ -1524,6 +1583,7 @@ Les types de corps qui peuvent être retournés :
|
|||||||
* `nick_group` (objet)
|
* `nick_group` (objet)
|
||||||
* `nick` (objet)
|
* `nick` (objet)
|
||||||
* `hotlist` (objet)
|
* `hotlist` (objet)
|
||||||
|
* `scripts` (tableau)
|
||||||
* `ping` (objet)
|
* `ping` (objet)
|
||||||
|
|
||||||
[TIP]
|
[TIP]
|
||||||
|
|||||||
+169
-9
@@ -208,7 +208,7 @@ Le tableau suivant liste les paquets optionnels pour compiler WeeChat :
|
|||||||
| asciidoctor | ≥ 1.5.4
|
| asciidoctor | ≥ 1.5.4
|
||||||
| Construction de la page man et de la documentation.
|
| Construction de la page man et de la documentation.
|
||||||
|
|
||||||
| ruby-pygments.rb |
|
| python3-pygments, ruby-pygments.rb |
|
||||||
| Construction de la documentation.
|
| Construction de la documentation.
|
||||||
|
|
||||||
| libcpputest-dev | ≥ 3.4
|
| libcpputest-dev | ≥ 3.4
|
||||||
@@ -2227,6 +2227,166 @@ Exemple de gras avec la couleur de texte du terminal :
|
|||||||
/set weechat.color.status_time *99999
|
/set weechat.color.status_time *99999
|
||||||
----
|
----
|
||||||
|
|
||||||
|
[[themes]]
|
||||||
|
=== Thèmes
|
||||||
|
|
||||||
|
Un thème est un ensemble nommé de surcharges d'options qui peut être
|
||||||
|
appliqué par la commande <<command_weechat_theme,/theme>>. WeeChat est
|
||||||
|
livré avec un thème intégré `"light"` adapté aux terminaux à fond clair
|
||||||
|
et permet de charger temporairement des thèmes utilisateur depuis des
|
||||||
|
fichiers.
|
||||||
|
|
||||||
|
[[themes_themable_options]]
|
||||||
|
==== Options modifiables par un thème
|
||||||
|
|
||||||
|
Les thèmes ne peuvent modifier que les options marquées comme
|
||||||
|
_themable_ (modifiables par un thème). Toutes les options `*.color.*`
|
||||||
|
le sont par défaut ; certaines options de type chaîne contenant des
|
||||||
|
références `+${color:...}+` (par exemple
|
||||||
|
`+weechat.color.chat_nick_colors+`, `+weechat.look.prefix_error+` ou les
|
||||||
|
formats `+buflist.format.*+`) sont explicitement déclarées comme
|
||||||
|
modifiables.
|
||||||
|
|
||||||
|
La liste complète des options modifiables peut être affichée depuis le
|
||||||
|
tampon <<command_fset_fset,/fset>> avec le filtre `+t:themable+`.
|
||||||
|
|
||||||
|
[[themes_apply]]
|
||||||
|
==== Appliquer un thème
|
||||||
|
|
||||||
|
Pour basculer vers le thème intégré pour fond clair :
|
||||||
|
|
||||||
|
----
|
||||||
|
/theme apply light
|
||||||
|
----
|
||||||
|
|
||||||
|
L'état actuel de toutes les options modifiables est sauvegardé au
|
||||||
|
préalable dans un fichier de sauvegarde nommé
|
||||||
|
`+backup-AAAAMMJJ-HHMMSS-uuuuuu+` dans le répertoire `+themes+` du
|
||||||
|
répertoire de configuration de WeeChat. L'apparence précédente peut
|
||||||
|
ainsi être restaurée à tout moment avec :
|
||||||
|
|
||||||
|
----
|
||||||
|
/theme apply backup-AAAAMMJJ-HHMMSS-uuuuuu
|
||||||
|
----
|
||||||
|
|
||||||
|
La création de la sauvegarde peut être désactivée (déconseillé) :
|
||||||
|
|
||||||
|
----
|
||||||
|
/set weechat.look.theme_backup off
|
||||||
|
----
|
||||||
|
|
||||||
|
Si la sauvegarde est activée et que le fichier ne peut pas être écrit,
|
||||||
|
l'application est annulée avant qu'aucune option ne soit modifiée.
|
||||||
|
|
||||||
|
Le nom du dernier thème appliqué est conservé dans
|
||||||
|
`+weechat.look.theme+` (à titre informatif uniquement ; il n'est pas
|
||||||
|
ré-appliqué au démarrage).
|
||||||
|
|
||||||
|
[[themes_reset]]
|
||||||
|
==== Réinitialiser aux valeurs par défaut
|
||||||
|
|
||||||
|
Pour rétablir l'apparence d'origine livrée avec WeeChat, réinitialiser
|
||||||
|
toutes les options modifiables à leur valeur par défaut :
|
||||||
|
|
||||||
|
----
|
||||||
|
/theme reset
|
||||||
|
----
|
||||||
|
|
||||||
|
Une sauvegarde est écrite au préalable (même garde-fou que
|
||||||
|
`+/theme apply+`) ; si la sauvegarde échoue, la réinitialisation est
|
||||||
|
annulée avant qu'aucune option ne soit modifiée. L'option
|
||||||
|
`+weechat.look.theme+` est également remise à vide.
|
||||||
|
|
||||||
|
[[themes_save_delete]]
|
||||||
|
==== Sauvegarder et supprimer des thèmes utilisateur
|
||||||
|
|
||||||
|
Sauvegarder l'état actuel des options modifiables en tant que nouveau
|
||||||
|
thème utilisateur :
|
||||||
|
|
||||||
|
----
|
||||||
|
/theme save monTheme
|
||||||
|
----
|
||||||
|
|
||||||
|
Toutes les options modifiables sont écrites, donc le fichier est
|
||||||
|
autonome et applique exactement le même aspect sur n'importe quel
|
||||||
|
WeeChat, quelle que soit sa configuration actuelle.
|
||||||
|
|
||||||
|
Les noms réservés (noms de thèmes intégrés comme `+light+` et tout nom
|
||||||
|
commençant par `+backup-+`) sont refusés. Les fichiers sont placés
|
||||||
|
dans `+${weechat_config_dir}/themes/<nom>.theme+`.
|
||||||
|
|
||||||
|
Renommer un thème utilisateur (usage typique : conserver une
|
||||||
|
sauvegarde automatique utile sous un nom plus parlant) :
|
||||||
|
|
||||||
|
----
|
||||||
|
/theme rename backup-20260525-094210-123456 maSauvegarde
|
||||||
|
----
|
||||||
|
|
||||||
|
Les thèmes intégrés n'ont pas de fichier et ne peuvent pas être
|
||||||
|
renommés ; le nom cible ne peut pas correspondre à un nom intégré ni
|
||||||
|
commencer par `+backup-+`, et le fichier cible ne doit pas déjà
|
||||||
|
exister. Le champ `+name+` de la section `+[info]+` à l'intérieur du
|
||||||
|
fichier est réécrit afin que `/theme info` affiche le nouveau nom de
|
||||||
|
manière cohérente.
|
||||||
|
|
||||||
|
Supprimer un thème utilisateur :
|
||||||
|
|
||||||
|
----
|
||||||
|
/theme del monTheme
|
||||||
|
----
|
||||||
|
|
||||||
|
Cela supprime le fichier sur le disque ; les thèmes intégrés ne
|
||||||
|
peuvent pas être supprimés.
|
||||||
|
|
||||||
|
[[themes_file_format]]
|
||||||
|
==== Format du fichier de thème
|
||||||
|
|
||||||
|
Un fichier de thème est de type INI avec deux sections :
|
||||||
|
|
||||||
|
----
|
||||||
|
[info]
|
||||||
|
name = "solarized_light"
|
||||||
|
description = "Thème fond clair inspiré de Solarized"
|
||||||
|
date = "2026-05-25 09:42:10"
|
||||||
|
weechat = "4.10.0-dev"
|
||||||
|
|
||||||
|
[options]
|
||||||
|
weechat.color.chat = "darkgray"
|
||||||
|
weechat.color.separator = "blue"
|
||||||
|
irc.color.input_nick = "magenta"
|
||||||
|
buflist.format.number = "${color:28}${number}${if:${number_displayed}?.: }"
|
||||||
|
----
|
||||||
|
|
||||||
|
`+[info]+` est une section de métadonnées informatives affichées par
|
||||||
|
`/theme info`. `+[options]+` contient les surcharges réelles ; les clés
|
||||||
|
sont les noms complets d'options tels qu'affichés par `/set`. Les
|
||||||
|
valeurs de type chaîne peuvent être encadrées par des guillemets
|
||||||
|
simples ou doubles ; les guillemets sont retirés à l'analyse. Les
|
||||||
|
options non modifiables par un thème listées dans un fichier sont
|
||||||
|
refusées au moment de l'application et signalées sur le tampon _core_
|
||||||
|
(ainsi, un fichier `.theme` importé depuis une source non fiable ne
|
||||||
|
peut pas écraser des mots de passe, des listes d'auto-chargement ou
|
||||||
|
des commandes de démarrage).
|
||||||
|
|
||||||
|
Les fichiers de thème utilisateur ne sont jamais mis en cache : à
|
||||||
|
chaque `/theme apply <nom>`, le fichier est analysé, appliqué, puis
|
||||||
|
libéré.
|
||||||
|
|
||||||
|
[[themes_resolution]]
|
||||||
|
==== Ordre de résolution
|
||||||
|
|
||||||
|
Lors de l'exécution de `+/theme apply <nom>+` :
|
||||||
|
|
||||||
|
* Si `+${weechat_config_dir}/themes/<nom>.theme+` existe, le fichier
|
||||||
|
est analysé et utilisé (il masque tout thème intégré du même nom).
|
||||||
|
* Sinon, le registre des thèmes intégrés est consulté ; les thèmes
|
||||||
|
intégrés sont enregistrés par programmation par le cœur, les
|
||||||
|
extensions et les scripts (voir la documentation des extensions et
|
||||||
|
des scripts pour `+weechat_theme_register+`).
|
||||||
|
|
||||||
|
Si aucune des deux sources ne fournit le nom, l'application est
|
||||||
|
refusée.
|
||||||
|
|
||||||
[[charset]]
|
[[charset]]
|
||||||
=== Charset
|
=== Charset
|
||||||
|
|
||||||
@@ -3351,7 +3511,7 @@ Pour ajouter une donnée sécurisée, utilisez la commande `/secure set`, par
|
|||||||
exemple un mot de passe pour le serveur IRC _libera_ :
|
exemple un mot de passe pour le serveur IRC _libera_ :
|
||||||
|
|
||||||
----
|
----
|
||||||
/secure set libera motdepasse
|
/secure set libera mot_de_passe
|
||||||
----
|
----
|
||||||
|
|
||||||
Pour plus de confort, les données sécurisées peuvent être affichées dans un
|
Pour plus de confort, les données sécurisées peuvent être affichées dans un
|
||||||
@@ -4712,7 +4872,7 @@ Il est fortement recommandé de définir un mot de passe pour le relai, avec ces
|
|||||||
commandes :
|
commandes :
|
||||||
|
|
||||||
----
|
----
|
||||||
/secure set relay motdepasse
|
/secure set relay mot_de_passe
|
||||||
/set relay.network.password "${sec.data.relay}"
|
/set relay.network.password "${sec.data.relay}"
|
||||||
----
|
----
|
||||||
|
|
||||||
@@ -4793,7 +4953,7 @@ le nom interne du serveur dans la commande IRC "PASS", avec le format
|
|||||||
(voir l'exemple ci-dessous) :
|
(voir l'exemple ci-dessous) :
|
||||||
|
|
||||||
----
|
----
|
||||||
PASS serveur:motdepasse
|
PASS serveur:mot_de_passe
|
||||||
----
|
----
|
||||||
|
|
||||||
Exemple : proxy IRC avec TLS pour tout serveur (le client choisira) :
|
Exemple : proxy IRC avec TLS pour tout serveur (le client choisira) :
|
||||||
@@ -4809,7 +4969,7 @@ Exemple : proxy IRC sans TLS seulement pour le serveur "libera" :
|
|||||||
----
|
----
|
||||||
|
|
||||||
Maintenant vous pouvez vous connecter sur le port 8000 avec n'importe quel
|
Maintenant vous pouvez vous connecter sur le port 8000 avec n'importe quel
|
||||||
client IRC en utilisant le mot de passe "motdepasse" (ou "libera:motdepasse"
|
client IRC en utilisant le mot de passe "mot_de_passe" (ou "libera:mot_de_passe"
|
||||||
si aucun serveur n'a été spécifié dans le relai).
|
si aucun serveur n'a été spécifié dans le relai).
|
||||||
|
|
||||||
Par exemple si vous utilisez WeeChat comme client IRC du relai, avec un serveur
|
Par exemple si vous utilisez WeeChat comme client IRC du relai, avec un serveur
|
||||||
@@ -4822,7 +4982,7 @@ avec ces commandes :
|
|||||||
----
|
----
|
||||||
|
|
||||||
[[relay_api_protocol]]
|
[[relay_api_protocol]]
|
||||||
=== API protocol
|
=== Protocole API
|
||||||
|
|
||||||
L'extension Relay peut envoyer les données à un autre WeeChat ou une interface
|
L'extension Relay peut envoyer les données à un autre WeeChat ou une interface
|
||||||
distante avec un protocol HTTP de type API REST.
|
distante avec un protocol HTTP de type API REST.
|
||||||
@@ -4840,12 +5000,12 @@ Par exemple :
|
|||||||
----
|
----
|
||||||
|
|
||||||
Maintenant vous pouvez vous connecter sur le port 9000 avec une interface
|
Maintenant vous pouvez vous connecter sur le port 9000 avec une interface
|
||||||
distante en utilisant le mot de passe "motdepasse".
|
distante en utilisant le mot de passe "mot_de_passe".
|
||||||
|
|
||||||
Pour vous connecter à un relai _api_ avec WeeChat :
|
Pour vous connecter à un relai _api_ avec WeeChat :
|
||||||
|
|
||||||
----
|
----
|
||||||
/remote add weechat http://localhost:9000 -password=motdepasse
|
/remote add weechat http://localhost:9000 -password=mot_de_passe
|
||||||
/remote connect weechat
|
/remote connect weechat
|
||||||
----
|
----
|
||||||
|
|
||||||
@@ -4882,7 +5042,7 @@ Par exemple :
|
|||||||
----
|
----
|
||||||
|
|
||||||
Maintenant vous pouvez vous connecter sur le port 9500 avec une interface
|
Maintenant vous pouvez vous connecter sur le port 9500 avec une interface
|
||||||
distante en utilisant le mot de passe "motdepasse".
|
distante en utilisant le mot de passe "mot_de_passe".
|
||||||
|
|
||||||
[[relay_websocket]]
|
[[relay_websocket]]
|
||||||
=== WebSocket
|
=== WebSocket
|
||||||
|
|||||||
@@ -490,7 +490,7 @@ for more information about colors management.
|
|||||||
[[search_text]]
|
[[search_text]]
|
||||||
=== Come posso cercare testo nel buffer (come /lastlog con irssi)?
|
=== Come posso cercare testo nel buffer (come /lastlog con irssi)?
|
||||||
|
|
||||||
Il tasto predefinito è kbd:[Ctrl+r] (il comando è: `+/input search_text_here+`).
|
Il tasto predefinito è kbd:[Ctrl+s] (il comando è: `+/input search_text_here+`).
|
||||||
E per passare alle notifiche: kbd:[Alt+p] / kbd:[Alt+n].
|
E per passare alle notifiche: kbd:[Alt+p] / kbd:[Alt+n].
|
||||||
|
|
||||||
// TRANSLATION MISSING
|
// TRANSLATION MISSING
|
||||||
|
|||||||
@@ -3635,6 +3635,9 @@ Concatenate a string to a dynamic string.
|
|||||||
The pointer _*string_ can change if the string is reallocated (if there is
|
The pointer _*string_ can change if the string is reallocated (if there is
|
||||||
not enough space to concatenate the string).
|
not enough space to concatenate the string).
|
||||||
|
|
||||||
|
// TRANSLATION MISSING
|
||||||
|
In case of error, the dynamic string is left unchanged.
|
||||||
|
|
||||||
Prototipo:
|
Prototipo:
|
||||||
|
|
||||||
[source,c]
|
[source,c]
|
||||||
@@ -4549,7 +4552,7 @@ Prototipo:
|
|||||||
|
|
||||||
[source,c]
|
[source,c]
|
||||||
----
|
----
|
||||||
int weechat_mkdir_home (char *directory, int mode);
|
int weechat_mkdir_home (const char *directory, int mode);
|
||||||
----
|
----
|
||||||
|
|
||||||
Argomenti:
|
Argomenti:
|
||||||
@@ -4597,7 +4600,7 @@ Prototipo:
|
|||||||
|
|
||||||
[source,c]
|
[source,c]
|
||||||
----
|
----
|
||||||
int weechat_mkdir (char *directory, int mode);
|
int weechat_mkdir (const char *directory, int mode);
|
||||||
----
|
----
|
||||||
|
|
||||||
Argomenti:
|
Argomenti:
|
||||||
@@ -4638,7 +4641,7 @@ Prototipo:
|
|||||||
|
|
||||||
[source,c]
|
[source,c]
|
||||||
----
|
----
|
||||||
int weechat_mkdir_parents (char *directory, int mode);
|
int weechat_mkdir_parents (const char *directory, int mode);
|
||||||
----
|
----
|
||||||
|
|
||||||
Argomenti:
|
Argomenti:
|
||||||
@@ -7661,7 +7664,7 @@ section = weechat.config_search_section(config_file, "section")
|
|||||||
==== config_new_option
|
==== config_new_option
|
||||||
|
|
||||||
// TRANSLATION MISSING
|
// TRANSLATION MISSING
|
||||||
_Updated in 1.5, 4.1.0._
|
_Updated in 1.5, 4.1.0, 4.10.0._
|
||||||
|
|
||||||
Crea una nuova opzione nella sezione di un file di configurazione.
|
Crea una nuova opzione nella sezione di un file di configurazione.
|
||||||
|
|
||||||
@@ -7708,7 +7711,10 @@ Argomenti:
|
|||||||
option name (the value of parent option will be displayed in `/set` command
|
option name (the value of parent option will be displayed in `/set` command
|
||||||
output if this option is "null"), the syntax is then:
|
output if this option is "null"), the syntax is then:
|
||||||
"name << file.section.option"
|
"name << file.section.option"
|
||||||
* _type_: tipo dell'opzione:
|
// TRANSLATION MISSING
|
||||||
|
* _type_: type of option; any type can be suffixed with `+|themable+` to mark
|
||||||
|
the option as themable, so that it can be set by the `/theme` command
|
||||||
|
(options of type _color_ are always themable) _(WeeChat ≥ 4.10.0)_:
|
||||||
** _boolean_: valore booleano (on/off)
|
** _boolean_: valore booleano (on/off)
|
||||||
** _integer_: valore intero
|
** _integer_: valore intero
|
||||||
** _string_: valore stringa
|
** _string_: valore stringa
|
||||||
@@ -7799,7 +7805,7 @@ struct t_config_option *option_int =
|
|||||||
|
|
||||||
/* stringa */
|
/* stringa */
|
||||||
struct t_config_option *option_str =
|
struct t_config_option *option_str =
|
||||||
weechat_config_new_option (config_file, section, "option_str", "string",
|
weechat_config_new_option (config_file, section, "option_str", "string|themable",
|
||||||
"My option, type string",
|
"My option, type string",
|
||||||
NULL,
|
NULL,
|
||||||
0, 0,
|
0, 0,
|
||||||
@@ -7875,7 +7881,7 @@ option_int = weechat.config_new_option(config_file, section, "option_int", "inte
|
|||||||
"", "",
|
"", "",
|
||||||
"", "")
|
"", "")
|
||||||
|
|
||||||
option_str = weechat.config_new_option(config_file, section, "option_str", "string",
|
option_str = weechat.config_new_option(config_file, section, "option_str", "string|themable",
|
||||||
"My option, type string",
|
"My option, type string",
|
||||||
"", 0, 0, "test", "test", 1,
|
"", 0, 0, "test", "test", 1,
|
||||||
"option_str_check_value_cb", "",
|
"option_str_check_value_cb", "",
|
||||||
@@ -8011,7 +8017,7 @@ void weechat_config_search_with_string (const char *option_name,
|
|||||||
struct t_config_file **config_file,
|
struct t_config_file **config_file,
|
||||||
struct t_config_section **section,
|
struct t_config_section **section,
|
||||||
struct t_config_option **option,
|
struct t_config_option **option,
|
||||||
char **pos_option_name);
|
const char **pos_option_name);
|
||||||
----
|
----
|
||||||
|
|
||||||
Argomenti:
|
Argomenti:
|
||||||
@@ -8034,7 +8040,7 @@ Esempio in C:
|
|||||||
struct t_config_file *ptr_config_file;
|
struct t_config_file *ptr_config_file;
|
||||||
struct t_config_section *ptr_section;
|
struct t_config_section *ptr_section;
|
||||||
struct t_config_option *ptr_option;
|
struct t_config_option *ptr_option;
|
||||||
char *option_name;
|
const char *option_name;
|
||||||
|
|
||||||
weechat_config_search_with_string ("file.section.option",
|
weechat_config_search_with_string ("file.section.option",
|
||||||
&ptr_config_file,
|
&ptr_config_file,
|
||||||
@@ -9967,6 +9973,90 @@ elif rc == weechat.WEECHAT_CONFIG_OPTION_UNSET_ERROR:
|
|||||||
# ...
|
# ...
|
||||||
----
|
----
|
||||||
|
|
||||||
|
// TRANSLATION MISSING
|
||||||
|
[[themes]]
|
||||||
|
=== Themes
|
||||||
|
|
||||||
|
Functions to contribute color (and other themable option) overrides to
|
||||||
|
built-in themes. See the
|
||||||
|
link:weechat_user.it.html#themes[user's guide / Themes] section for the
|
||||||
|
end-user side and the `+/theme+` command.
|
||||||
|
|
||||||
|
==== theme_register
|
||||||
|
|
||||||
|
_WeeChat ≥ 4.10.0._
|
||||||
|
|
||||||
|
Register a contribution of option overrides under a named theme. The
|
||||||
|
caller's plugin is the owner of the contribution; subsequent calls
|
||||||
|
with the same theme name from the same plugin merge into the existing
|
||||||
|
contribution (later keys win for duplicates).
|
||||||
|
|
||||||
|
When the calling plugin is unloaded, all its contributions are
|
||||||
|
automatically dropped from every theme.
|
||||||
|
|
||||||
|
Prototype:
|
||||||
|
|
||||||
|
[source,c]
|
||||||
|
----
|
||||||
|
struct t_theme *weechat_theme_register (const char *name,
|
||||||
|
struct t_hashtable *overrides);
|
||||||
|
----
|
||||||
|
|
||||||
|
Arguments:
|
||||||
|
|
||||||
|
* _name_: theme name (for example `+light+` or a custom name)
|
||||||
|
* _overrides_: hashtable mapping full option names
|
||||||
|
(e.g. `+irc.color.input_nick+`) to their string values; the caller
|
||||||
|
retains ownership and may free the hashtable right after the call
|
||||||
|
|
||||||
|
Return value:
|
||||||
|
|
||||||
|
* pointer to the registered theme (existing or newly created), NULL on
|
||||||
|
error
|
||||||
|
|
||||||
|
C example:
|
||||||
|
|
||||||
|
[source,c]
|
||||||
|
----
|
||||||
|
struct t_hashtable *overrides = weechat_hashtable_new (
|
||||||
|
8,
|
||||||
|
WEECHAT_HASHTABLE_STRING,
|
||||||
|
WEECHAT_HASHTABLE_STRING,
|
||||||
|
NULL, NULL);
|
||||||
|
if (overrides)
|
||||||
|
{
|
||||||
|
weechat_hashtable_set (overrides, "irc.color.input_nick", "cyan");
|
||||||
|
weechat_hashtable_set (overrides, "irc.color.topic_old", "darkgray");
|
||||||
|
weechat_theme_register ("light", overrides);
|
||||||
|
weechat_hashtable_free (overrides);
|
||||||
|
}
|
||||||
|
----
|
||||||
|
|
||||||
|
Script (Python):
|
||||||
|
|
||||||
|
[source,python]
|
||||||
|
----
|
||||||
|
# prototype
|
||||||
|
def theme_register(name: str, overrides: Dict[str, str]) -> str: ...
|
||||||
|
|
||||||
|
# example
|
||||||
|
weechat.theme_register("light", {
|
||||||
|
"irc.color.input_nick": "cyan",
|
||||||
|
"irc.color.topic_old": "darkgray",
|
||||||
|
})
|
||||||
|
----
|
||||||
|
|
||||||
|
[NOTE]
|
||||||
|
Only options that have the _themable_ flag will be set by `/theme apply`.
|
||||||
|
All `*.color.*` options are themable by default; string options that
|
||||||
|
hold `+${color:...}+` references are explicitly opted in. Entries
|
||||||
|
targeting non-themable options are silently skipped at apply-time with
|
||||||
|
a warning logged to the _core_ buffer.
|
||||||
|
|
||||||
|
[NOTE]
|
||||||
|
When called from a script, the contribution is automatically dropped
|
||||||
|
when the script unloads (no manual cleanup is needed).
|
||||||
|
|
||||||
[[key_bindings]]
|
[[key_bindings]]
|
||||||
=== Combinazione tasti
|
=== Combinazione tasti
|
||||||
|
|
||||||
|
|||||||
+147
-1
@@ -245,7 +245,7 @@ WeeChat:
|
|||||||
| Build man page and documentation.
|
| Build man page and documentation.
|
||||||
|
|
||||||
// TRANSLATION MISSING
|
// TRANSLATION MISSING
|
||||||
| ruby-pygments.rb |
|
| python3-pygments, ruby-pygments.rb |
|
||||||
| Build documentation.
|
| Build documentation.
|
||||||
|
|
||||||
// TRANSLATION MISSING
|
// TRANSLATION MISSING
|
||||||
@@ -2439,6 +2439,152 @@ Esempio di grassetto con il colore di primo piano del terminale:
|
|||||||
/set weechat.color.status_time *99999
|
/set weechat.color.status_time *99999
|
||||||
----
|
----
|
||||||
|
|
||||||
|
// TRANSLATION MISSING
|
||||||
|
[[themes]]
|
||||||
|
=== Themes
|
||||||
|
|
||||||
|
A theme is a named bundle of option overrides that can be applied with
|
||||||
|
the <<command_weechat_theme,/theme>> command. WeeChat ships a built-in
|
||||||
|
`"light"` theme tuned for light-background terminals and supports
|
||||||
|
user-defined themes loaded transiently from files.
|
||||||
|
|
||||||
|
[[themes_themable_options]]
|
||||||
|
==== Themable options
|
||||||
|
|
||||||
|
Themes can only set options marked as _themable_. All `*.color.*`
|
||||||
|
options are themable by default; a few string options that hold format
|
||||||
|
expressions with `+${color:...}+` references (such as
|
||||||
|
`+weechat.color.chat_nick_colors+`, `+weechat.look.prefix_error+` or the
|
||||||
|
`+buflist.format.*+` formats) are explicitly opted in.
|
||||||
|
|
||||||
|
You can list the full themable surface area from the
|
||||||
|
<<command_fset_fset,/fset>> buffer with the `+t:themable+` filter.
|
||||||
|
|
||||||
|
[[themes_apply]]
|
||||||
|
==== Applying a theme
|
||||||
|
|
||||||
|
To switch to the built-in light-background theme:
|
||||||
|
|
||||||
|
----
|
||||||
|
/theme apply light
|
||||||
|
----
|
||||||
|
|
||||||
|
The current state of every themable option is saved beforehand to a
|
||||||
|
backup theme file named like `+backup-YYYYMMDD-HHMMSS-uuuuuu+` in
|
||||||
|
directory `+themes+` inside the WeeChat configuration directory, so the
|
||||||
|
previous look can be restored at any time with:
|
||||||
|
|
||||||
|
----
|
||||||
|
/theme apply backup-YYYYMMDD-HHMMSS-uuuuuu
|
||||||
|
----
|
||||||
|
|
||||||
|
Backup creation can be disabled (not recommended):
|
||||||
|
|
||||||
|
----
|
||||||
|
/set weechat.look.theme_backup off
|
||||||
|
----
|
||||||
|
|
||||||
|
If backup is enabled and the backup file cannot be written, the apply
|
||||||
|
is aborted before any option is changed.
|
||||||
|
|
||||||
|
The name of the last applied theme is stored in
|
||||||
|
`+weechat.look.theme+` (informational only; not re-applied at startup).
|
||||||
|
|
||||||
|
[[themes_reset]]
|
||||||
|
==== Resetting to defaults
|
||||||
|
|
||||||
|
To restore the look shipped with WeeChat, reset every themable option
|
||||||
|
to its default value:
|
||||||
|
|
||||||
|
----
|
||||||
|
/theme reset
|
||||||
|
----
|
||||||
|
|
||||||
|
A backup is written first (same gate as `+/theme apply+`); on backup
|
||||||
|
failure the reset is aborted before any option is changed.
|
||||||
|
`+weechat.look.theme+` is cleared too.
|
||||||
|
|
||||||
|
[[themes_save_delete]]
|
||||||
|
==== Saving and deleting user themes
|
||||||
|
|
||||||
|
Save the current themable options as a new user theme file:
|
||||||
|
|
||||||
|
----
|
||||||
|
/theme save mytheme
|
||||||
|
----
|
||||||
|
|
||||||
|
Every themable option is written, so the file is self-contained and
|
||||||
|
applies the exact same look on any WeeChat, regardless of its current
|
||||||
|
configuration.
|
||||||
|
|
||||||
|
Reserved names (built-in theme names like `+light+` and any name
|
||||||
|
starting with `+backup-+`) are refused. Files live at
|
||||||
|
`+${weechat_config_dir}/themes/<name>.theme+`.
|
||||||
|
|
||||||
|
Rename a user theme (typical use: keep a useful automatic backup
|
||||||
|
under a meaningful name):
|
||||||
|
|
||||||
|
----
|
||||||
|
/theme rename backup-20260525-094210-123456 mybackup
|
||||||
|
----
|
||||||
|
|
||||||
|
Built-in themes have no file and cannot be renamed; the target name
|
||||||
|
cannot match a built-in name or start with `+backup-+`, and the
|
||||||
|
target file must not already exist. The `+[info]+` `+name+` field
|
||||||
|
inside the file is rewritten so `/theme info` reports the new name
|
||||||
|
consistently.
|
||||||
|
|
||||||
|
Delete a user theme:
|
||||||
|
|
||||||
|
----
|
||||||
|
/theme del mytheme
|
||||||
|
----
|
||||||
|
|
||||||
|
This removes the file on disk; built-in themes cannot be deleted.
|
||||||
|
|
||||||
|
[[themes_file_format]]
|
||||||
|
==== Theme file format
|
||||||
|
|
||||||
|
A theme file is INI-like with two sections:
|
||||||
|
|
||||||
|
----
|
||||||
|
[info]
|
||||||
|
name = "solarized_light"
|
||||||
|
description = "Light-background theme inspired by Solarized"
|
||||||
|
date = "2026-05-25 09:42:10"
|
||||||
|
weechat = "4.10.0-dev"
|
||||||
|
|
||||||
|
[options]
|
||||||
|
weechat.color.chat = "darkgray"
|
||||||
|
weechat.color.separator = "blue"
|
||||||
|
irc.color.input_nick = "magenta"
|
||||||
|
buflist.format.number = "${color:28}${number}${if:${number_displayed}?.: }"
|
||||||
|
----
|
||||||
|
|
||||||
|
`+[info]+` is informational metadata shown by `/theme info`. `+[options]+`
|
||||||
|
holds the actual overrides; keys are the full option names that would
|
||||||
|
appear in `/set`. String values can be enclosed in double or single
|
||||||
|
quotes; quotes are stripped at parse time. Non-themable options listed
|
||||||
|
in a theme file are refused at apply time and logged to the core
|
||||||
|
buffer (so a `.theme` file imported from an untrusted source cannot
|
||||||
|
overwrite passwords, autoload lists, or startup commands).
|
||||||
|
|
||||||
|
User theme files are never cached: on every `/theme apply <name>` the
|
||||||
|
file is parsed, applied, and freed.
|
||||||
|
|
||||||
|
[[themes_resolution]]
|
||||||
|
==== Resolution order
|
||||||
|
|
||||||
|
When `+/theme apply <name>+` is run:
|
||||||
|
|
||||||
|
* If `+${weechat_config_dir}/themes/<name>.theme+` exists, the file
|
||||||
|
is parsed and used (it shadows any built-in with the same name).
|
||||||
|
* Otherwise the built-in theme registry is consulted; built-ins are
|
||||||
|
registered programmatically by core, plugins and scripts (see the
|
||||||
|
plugin and scripting documentation for `+weechat_theme_register+`).
|
||||||
|
|
||||||
|
If neither source provides the name, the apply is refused.
|
||||||
|
|
||||||
[[charset]]
|
[[charset]]
|
||||||
=== Charset
|
=== Charset
|
||||||
|
|
||||||
|
|||||||
@@ -140,6 +140,8 @@ WeeChat "core" は以下のディレクトリに配置されています:
|
|||||||
|===
|
|===
|
||||||
| パス/ファイル名 | 説明
|
| パス/ファイル名 | 説明
|
||||||
| core/ | コア関数: エントリポイント、内部構造体
|
| core/ | コア関数: エントリポイント、内部構造体
|
||||||
|
// TRANSLATION MISSING
|
||||||
|
| core-args.c | Command-line arguments.
|
||||||
| core-arraylist.c | 配列リスト
|
| core-arraylist.c | 配列リスト
|
||||||
| core-backtrace.c | クラッシュした際にバックトレースを表示
|
| core-backtrace.c | クラッシュした際にバックトレースを表示
|
||||||
// TRANSLATION MISSING
|
// TRANSLATION MISSING
|
||||||
@@ -808,9 +810,9 @@ C 言語のコードを書く際には以下の基本的なルールを *必ず*
|
|||||||
[source,c]
|
[source,c]
|
||||||
----
|
----
|
||||||
/*
|
/*
|
||||||
* Checks if a string with boolean value is valid.
|
* Check if a string with boolean value is valid.
|
||||||
*
|
*
|
||||||
* Returns:
|
* Return:
|
||||||
* 1: boolean value is valid
|
* 1: boolean value is valid
|
||||||
* 0: boolean value is NOT valid
|
* 0: boolean value is NOT valid
|
||||||
*/
|
*/
|
||||||
@@ -1083,9 +1085,9 @@ struct t_gui_window *gui_current_window = NULL; /* current window */
|
|||||||
[source,c]
|
[source,c]
|
||||||
----
|
----
|
||||||
/*
|
/*
|
||||||
* Creates a new window.
|
* Create a new window.
|
||||||
*
|
*
|
||||||
* Returns pointer to new window, NULL if error.
|
* Return pointer to new window, NULL if error.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
struct t_gui_window *
|
struct t_gui_window *
|
||||||
|
|||||||
@@ -451,7 +451,7 @@ with command `/color`).
|
|||||||
[[search_text]]
|
[[search_text]]
|
||||||
=== どうすればバッファ内の文字列を検索できますか (irssi の /lastlog の様に)。
|
=== どうすればバッファ内の文字列を検索できますか (irssi の /lastlog の様に)。
|
||||||
|
|
||||||
デフォルトのキーは kbd:[Ctrl+r] です (コマンドは: `+/input search_text_here+`)。
|
デフォルトのキーは kbd:[Ctrl+s] です (コマンドは: `+/input search_text_here+`)。
|
||||||
ハイライト部分へのジャンプは: kbd:[Alt+p] / kbd:[Alt+n]
|
ハイライト部分へのジャンプは: kbd:[Alt+p] / kbd:[Alt+n]
|
||||||
|
|
||||||
この機能に関するより詳しい情報はlink:weechat_user.ja.html#key_bindings[ユーザーズガイド / デフォルトのキー割り当て ^↗^^]を参照してください
|
この機能に関するより詳しい情報はlink:weechat_user.ja.html#key_bindings[ユーザーズガイド / デフォルトのキー割り当て ^↗^^]を参照してください
|
||||||
|
|||||||
@@ -3586,6 +3586,9 @@ _WeeChat バージョン 1.8 以上で利用可, updated in 3.0_
|
|||||||
文字列が再確保された場合 (文字列を連結するのに十分なサイズが確保されていなかった場合)
|
文字列が再確保された場合 (文字列を連結するのに十分なサイズが確保されていなかった場合)
|
||||||
にはポインタ _*string_ が変わる可能性があります。
|
にはポインタ _*string_ が変わる可能性があります。
|
||||||
|
|
||||||
|
// TRANSLATION MISSING
|
||||||
|
In case of error, the dynamic string is left unchanged.
|
||||||
|
|
||||||
プロトタイプ:
|
プロトタイプ:
|
||||||
|
|
||||||
[source,c]
|
[source,c]
|
||||||
@@ -4477,7 +4480,7 @@ WeeChat ホームディレクトリの下にディレクトリを作成。
|
|||||||
|
|
||||||
[source,c]
|
[source,c]
|
||||||
----
|
----
|
||||||
int weechat_mkdir_home (char *directory, int mode);
|
int weechat_mkdir_home (const char *directory, int mode);
|
||||||
----
|
----
|
||||||
|
|
||||||
引数:
|
引数:
|
||||||
@@ -4525,7 +4528,7 @@ weechat.mkdir_home("${weechat_cache_dir}/temp", 0755)
|
|||||||
|
|
||||||
[source,c]
|
[source,c]
|
||||||
----
|
----
|
||||||
int weechat_mkdir (char *directory, int mode);
|
int weechat_mkdir (const char *directory, int mode);
|
||||||
----
|
----
|
||||||
|
|
||||||
引数:
|
引数:
|
||||||
@@ -4566,7 +4569,7 @@ weechat.mkdir("/tmp/mydir", 0755)
|
|||||||
|
|
||||||
[source,c]
|
[source,c]
|
||||||
----
|
----
|
||||||
int weechat_mkdir_parents (char *directory, int mode);
|
int weechat_mkdir_parents (const char *directory, int mode);
|
||||||
----
|
----
|
||||||
|
|
||||||
引数:
|
引数:
|
||||||
@@ -7472,7 +7475,7 @@ section = weechat.config_search_section(config_file, "section")
|
|||||||
==== config_new_option
|
==== config_new_option
|
||||||
|
|
||||||
// TRANSLATION MISSING
|
// TRANSLATION MISSING
|
||||||
_Updated in 1.5, 4.1.0._
|
_Updated in 1.5, 4.1.0, 4.10.0._
|
||||||
|
|
||||||
設定ファイルのあるセクションに新しいオプションを作成。
|
設定ファイルのあるセクションに新しいオプションを作成。
|
||||||
|
|
||||||
@@ -7518,7 +7521,10 @@ struct t_config_option *weechat_config_new_option (
|
|||||||
(このオプションが "null" の場合、親オプションの値が `/set`
|
(このオプションが "null" の場合、親オプションの値が `/set`
|
||||||
コマンドの出力に表示されます)。以下の構文を使ってください:
|
コマンドの出力に表示されます)。以下の構文を使ってください:
|
||||||
"name << file.section.option"
|
"name << file.section.option"
|
||||||
* _type_: オプションの型:
|
// TRANSLATION MISSING
|
||||||
|
* _type_: type of option; any type can be suffixed with `+|themable+` to mark
|
||||||
|
the option as themable, so that it can be set by the `/theme` command
|
||||||
|
(options of type _color_ are always themable) _(WeeChat ≥ 4.10.0)_:
|
||||||
** _boolean_: ブール値 (on/off)
|
** _boolean_: ブール値 (on/off)
|
||||||
** _integer_: 整数値
|
** _integer_: 整数値
|
||||||
** _string_: 文字列
|
** _string_: 文字列
|
||||||
@@ -7606,7 +7612,7 @@ struct t_config_option *option_int =
|
|||||||
|
|
||||||
/* string */
|
/* string */
|
||||||
struct t_config_option *option_str =
|
struct t_config_option *option_str =
|
||||||
weechat_config_new_option (config_file, section, "option_str", "string",
|
weechat_config_new_option (config_file, section, "option_str", "string|themable",
|
||||||
"My option, type string",
|
"My option, type string",
|
||||||
NULL,
|
NULL,
|
||||||
0, 0,
|
0, 0,
|
||||||
@@ -7682,7 +7688,7 @@ option_int = weechat.config_new_option(config_file, section, "option_int", "inte
|
|||||||
"", "",
|
"", "",
|
||||||
"", "")
|
"", "")
|
||||||
|
|
||||||
option_str = weechat.config_new_option(config_file, section, "option_str", "string",
|
option_str = weechat.config_new_option(config_file, section, "option_str", "string|themable",
|
||||||
"My option, type string",
|
"My option, type string",
|
||||||
"", 0, 0, "test", "test", 1,
|
"", 0, 0, "test", "test", 1,
|
||||||
"option_str_check_value_cb", "",
|
"option_str_check_value_cb", "",
|
||||||
@@ -7816,7 +7822,7 @@ void weechat_config_search_with_string (const char *option_name,
|
|||||||
struct t_config_file **config_file,
|
struct t_config_file **config_file,
|
||||||
struct t_config_section **section,
|
struct t_config_section **section,
|
||||||
struct t_config_option **option,
|
struct t_config_option **option,
|
||||||
char **pos_option_name);
|
const char **pos_option_name);
|
||||||
----
|
----
|
||||||
|
|
||||||
引数:
|
引数:
|
||||||
@@ -7838,7 +7844,7 @@ C 言語での使用例:
|
|||||||
struct t_config_file *ptr_config_file;
|
struct t_config_file *ptr_config_file;
|
||||||
struct t_config_section *ptr_section;
|
struct t_config_section *ptr_section;
|
||||||
struct t_config_option *ptr_option;
|
struct t_config_option *ptr_option;
|
||||||
char *option_name;
|
const char *option_name;
|
||||||
|
|
||||||
weechat_config_search_with_string ("file.section.option",
|
weechat_config_search_with_string ("file.section.option",
|
||||||
&ptr_config_file,
|
&ptr_config_file,
|
||||||
@@ -9746,6 +9752,90 @@ elif rc == weechat.WEECHAT_CONFIG_OPTION_UNSET_ERROR:
|
|||||||
# ...
|
# ...
|
||||||
----
|
----
|
||||||
|
|
||||||
|
// TRANSLATION MISSING
|
||||||
|
[[themes]]
|
||||||
|
=== Themes
|
||||||
|
|
||||||
|
Functions to contribute color (and other themable option) overrides to
|
||||||
|
built-in themes. See the
|
||||||
|
link:weechat_user.ja.html#themes[user's guide / Themes] section for the
|
||||||
|
end-user side and the `+/theme+` command.
|
||||||
|
|
||||||
|
==== theme_register
|
||||||
|
|
||||||
|
_WeeChat ≥ 4.10.0._
|
||||||
|
|
||||||
|
Register a contribution of option overrides under a named theme. The
|
||||||
|
caller's plugin is the owner of the contribution; subsequent calls
|
||||||
|
with the same theme name from the same plugin merge into the existing
|
||||||
|
contribution (later keys win for duplicates).
|
||||||
|
|
||||||
|
When the calling plugin is unloaded, all its contributions are
|
||||||
|
automatically dropped from every theme.
|
||||||
|
|
||||||
|
Prototype:
|
||||||
|
|
||||||
|
[source,c]
|
||||||
|
----
|
||||||
|
struct t_theme *weechat_theme_register (const char *name,
|
||||||
|
struct t_hashtable *overrides);
|
||||||
|
----
|
||||||
|
|
||||||
|
Arguments:
|
||||||
|
|
||||||
|
* _name_: theme name (for example `+light+` or a custom name)
|
||||||
|
* _overrides_: hashtable mapping full option names
|
||||||
|
(e.g. `+irc.color.input_nick+`) to their string values; the caller
|
||||||
|
retains ownership and may free the hashtable right after the call
|
||||||
|
|
||||||
|
Return value:
|
||||||
|
|
||||||
|
* pointer to the registered theme (existing or newly created), NULL on
|
||||||
|
error
|
||||||
|
|
||||||
|
C example:
|
||||||
|
|
||||||
|
[source,c]
|
||||||
|
----
|
||||||
|
struct t_hashtable *overrides = weechat_hashtable_new (
|
||||||
|
8,
|
||||||
|
WEECHAT_HASHTABLE_STRING,
|
||||||
|
WEECHAT_HASHTABLE_STRING,
|
||||||
|
NULL, NULL);
|
||||||
|
if (overrides)
|
||||||
|
{
|
||||||
|
weechat_hashtable_set (overrides, "irc.color.input_nick", "cyan");
|
||||||
|
weechat_hashtable_set (overrides, "irc.color.topic_old", "darkgray");
|
||||||
|
weechat_theme_register ("light", overrides);
|
||||||
|
weechat_hashtable_free (overrides);
|
||||||
|
}
|
||||||
|
----
|
||||||
|
|
||||||
|
Script (Python):
|
||||||
|
|
||||||
|
[source,python]
|
||||||
|
----
|
||||||
|
# prototype
|
||||||
|
def theme_register(name: str, overrides: Dict[str, str]) -> str: ...
|
||||||
|
|
||||||
|
# example
|
||||||
|
weechat.theme_register("light", {
|
||||||
|
"irc.color.input_nick": "cyan",
|
||||||
|
"irc.color.topic_old": "darkgray",
|
||||||
|
})
|
||||||
|
----
|
||||||
|
|
||||||
|
[NOTE]
|
||||||
|
Only options that have the _themable_ flag will be set by `/theme apply`.
|
||||||
|
All `*.color.*` options are themable by default; string options that
|
||||||
|
hold `+${color:...}+` references are explicitly opted in. Entries
|
||||||
|
targeting non-themable options are silently skipped at apply-time with
|
||||||
|
a warning logged to the _core_ buffer.
|
||||||
|
|
||||||
|
[NOTE]
|
||||||
|
When called from a script, the contribution is automatically dropped
|
||||||
|
when the script unloads (no manual cleanup is needed).
|
||||||
|
|
||||||
[[key_bindings]]
|
[[key_bindings]]
|
||||||
=== キー割り当て
|
=== キー割り当て
|
||||||
|
|
||||||
|
|||||||
+147
-1
@@ -229,7 +229,7 @@ WeeChat:
|
|||||||
| man ページと文書のビルド
|
| man ページと文書のビルド
|
||||||
|
|
||||||
// TRANSLATION MISSING
|
// TRANSLATION MISSING
|
||||||
| ruby-pygments.rb |
|
| python3-pygments, ruby-pygments.rb |
|
||||||
| Build documentation.
|
| Build documentation.
|
||||||
|
|
||||||
| libcpputest-dev | 3.4 以上
|
| libcpputest-dev | 3.4 以上
|
||||||
@@ -2375,6 +2375,152 @@ WeeChat は画面に色が表示された時点で色ペアを動的に割り当
|
|||||||
/set weechat.color.status_time *99999
|
/set weechat.color.status_time *99999
|
||||||
----
|
----
|
||||||
|
|
||||||
|
// TRANSLATION MISSING
|
||||||
|
[[themes]]
|
||||||
|
=== Themes
|
||||||
|
|
||||||
|
A theme is a named bundle of option overrides that can be applied with
|
||||||
|
the <<command_weechat_theme,/theme>> command. WeeChat ships a built-in
|
||||||
|
`"light"` theme tuned for light-background terminals and supports
|
||||||
|
user-defined themes loaded transiently from files.
|
||||||
|
|
||||||
|
[[themes_themable_options]]
|
||||||
|
==== Themable options
|
||||||
|
|
||||||
|
Themes can only set options marked as _themable_. All `*.color.*`
|
||||||
|
options are themable by default; a few string options that hold format
|
||||||
|
expressions with `+${color:...}+` references (such as
|
||||||
|
`+weechat.color.chat_nick_colors+`, `+weechat.look.prefix_error+` or the
|
||||||
|
`+buflist.format.*+` formats) are explicitly opted in.
|
||||||
|
|
||||||
|
You can list the full themable surface area from the
|
||||||
|
<<command_fset_fset,/fset>> buffer with the `+t:themable+` filter.
|
||||||
|
|
||||||
|
[[themes_apply]]
|
||||||
|
==== Applying a theme
|
||||||
|
|
||||||
|
To switch to the built-in light-background theme:
|
||||||
|
|
||||||
|
----
|
||||||
|
/theme apply light
|
||||||
|
----
|
||||||
|
|
||||||
|
The current state of every themable option is saved beforehand to a
|
||||||
|
backup theme file named like `+backup-YYYYMMDD-HHMMSS-uuuuuu+` in
|
||||||
|
directory `+themes+` inside the WeeChat configuration directory, so the
|
||||||
|
previous look can be restored at any time with:
|
||||||
|
|
||||||
|
----
|
||||||
|
/theme apply backup-YYYYMMDD-HHMMSS-uuuuuu
|
||||||
|
----
|
||||||
|
|
||||||
|
Backup creation can be disabled (not recommended):
|
||||||
|
|
||||||
|
----
|
||||||
|
/set weechat.look.theme_backup off
|
||||||
|
----
|
||||||
|
|
||||||
|
If backup is enabled and the backup file cannot be written, the apply
|
||||||
|
is aborted before any option is changed.
|
||||||
|
|
||||||
|
The name of the last applied theme is stored in
|
||||||
|
`+weechat.look.theme+` (informational only; not re-applied at startup).
|
||||||
|
|
||||||
|
[[themes_reset]]
|
||||||
|
==== Resetting to defaults
|
||||||
|
|
||||||
|
To restore the look shipped with WeeChat, reset every themable option
|
||||||
|
to its default value:
|
||||||
|
|
||||||
|
----
|
||||||
|
/theme reset
|
||||||
|
----
|
||||||
|
|
||||||
|
A backup is written first (same gate as `+/theme apply+`); on backup
|
||||||
|
failure the reset is aborted before any option is changed.
|
||||||
|
`+weechat.look.theme+` is cleared too.
|
||||||
|
|
||||||
|
[[themes_save_delete]]
|
||||||
|
==== Saving and deleting user themes
|
||||||
|
|
||||||
|
Save the current themable options as a new user theme file:
|
||||||
|
|
||||||
|
----
|
||||||
|
/theme save mytheme
|
||||||
|
----
|
||||||
|
|
||||||
|
Every themable option is written, so the file is self-contained and
|
||||||
|
applies the exact same look on any WeeChat, regardless of its current
|
||||||
|
configuration.
|
||||||
|
|
||||||
|
Reserved names (built-in theme names like `+light+` and any name
|
||||||
|
starting with `+backup-+`) are refused. Files live at
|
||||||
|
`+${weechat_config_dir}/themes/<name>.theme+`.
|
||||||
|
|
||||||
|
Rename a user theme (typical use: keep a useful automatic backup
|
||||||
|
under a meaningful name):
|
||||||
|
|
||||||
|
----
|
||||||
|
/theme rename backup-20260525-094210-123456 mybackup
|
||||||
|
----
|
||||||
|
|
||||||
|
Built-in themes have no file and cannot be renamed; the target name
|
||||||
|
cannot match a built-in name or start with `+backup-+`, and the
|
||||||
|
target file must not already exist. The `+[info]+` `+name+` field
|
||||||
|
inside the file is rewritten so `/theme info` reports the new name
|
||||||
|
consistently.
|
||||||
|
|
||||||
|
Delete a user theme:
|
||||||
|
|
||||||
|
----
|
||||||
|
/theme del mytheme
|
||||||
|
----
|
||||||
|
|
||||||
|
This removes the file on disk; built-in themes cannot be deleted.
|
||||||
|
|
||||||
|
[[themes_file_format]]
|
||||||
|
==== Theme file format
|
||||||
|
|
||||||
|
A theme file is INI-like with two sections:
|
||||||
|
|
||||||
|
----
|
||||||
|
[info]
|
||||||
|
name = "solarized_light"
|
||||||
|
description = "Light-background theme inspired by Solarized"
|
||||||
|
date = "2026-05-25 09:42:10"
|
||||||
|
weechat = "4.10.0-dev"
|
||||||
|
|
||||||
|
[options]
|
||||||
|
weechat.color.chat = "darkgray"
|
||||||
|
weechat.color.separator = "blue"
|
||||||
|
irc.color.input_nick = "magenta"
|
||||||
|
buflist.format.number = "${color:28}${number}${if:${number_displayed}?.: }"
|
||||||
|
----
|
||||||
|
|
||||||
|
`+[info]+` is informational metadata shown by `/theme info`. `+[options]+`
|
||||||
|
holds the actual overrides; keys are the full option names that would
|
||||||
|
appear in `/set`. String values can be enclosed in double or single
|
||||||
|
quotes; quotes are stripped at parse time. Non-themable options listed
|
||||||
|
in a theme file are refused at apply time and logged to the core
|
||||||
|
buffer (so a `.theme` file imported from an untrusted source cannot
|
||||||
|
overwrite passwords, autoload lists, or startup commands).
|
||||||
|
|
||||||
|
User theme files are never cached: on every `/theme apply <name>` the
|
||||||
|
file is parsed, applied, and freed.
|
||||||
|
|
||||||
|
[[themes_resolution]]
|
||||||
|
==== Resolution order
|
||||||
|
|
||||||
|
When `+/theme apply <name>+` is run:
|
||||||
|
|
||||||
|
* If `+${weechat_config_dir}/themes/<name>.theme+` exists, the file
|
||||||
|
is parsed and used (it shadows any built-in with the same name).
|
||||||
|
* Otherwise the built-in theme registry is consulted; built-ins are
|
||||||
|
registered programmatically by core, plugins and scripts (see the
|
||||||
|
plugin and scripting documentation for `+weechat_theme_register+`).
|
||||||
|
|
||||||
|
If neither source provides the name, the apply is refused.
|
||||||
|
|
||||||
[[charset]]
|
[[charset]]
|
||||||
=== Charset
|
=== Charset
|
||||||
|
|
||||||
|
|||||||
@@ -7,8 +7,7 @@
|
|||||||
Kompletna dokumentacja na temat opcji wtyczek dostępna jest
|
Kompletna dokumentacja na temat opcji wtyczek dostępna jest
|
||||||
w https://weechat.org/doc/[WeeChat user's guide].
|
w https://weechat.org/doc/[WeeChat user's guide].
|
||||||
|
|
||||||
// TRANSLATION MISSING
|
Używając wtyczki irc możesz połączyć się z serwerem używając URLa w poniższm formacie:
|
||||||
With irc plugin, you can connect to a server with an URL like:
|
|
||||||
|
|
||||||
irc[6][s]://[[nick][:hasło]@]serwer[:port][/#kanał1[,#kanał2...]]
|
irc[6][s]://[[nick][:hasło]@]serwer[:port][/#kanał1[,#kanał2...]]
|
||||||
|
|
||||||
|
|||||||
@@ -436,7 +436,7 @@ link:weechat_user.pl.html#colors[Poradniku użytkownika / Kolory ^↗^^].
|
|||||||
[[search_text]]
|
[[search_text]]
|
||||||
=== Jak mogę wyszukać tekst w buforze (jak za pomocą /lastlog w irssi)?
|
=== Jak mogę wyszukać tekst w buforze (jak za pomocą /lastlog w irssi)?
|
||||||
|
|
||||||
Domyślny skrót klawiszowy to kbd:[Ctrl+r] (komenda: `+/input search_text_here+`).
|
Domyślny skrót klawiszowy to kbd:[Ctrl+s] (komenda: `+/input search_text_here+`).
|
||||||
|
|
||||||
Poruszanie się między podświetleniami: kbd:[Alt+p] / kbd:[Alt+n].
|
Poruszanie się między podświetleniami: kbd:[Alt+p] / kbd:[Alt+n].
|
||||||
|
|
||||||
|
|||||||
+147
-1
@@ -210,7 +210,7 @@ WeeChat:
|
|||||||
| asciidoctor | ≥ 1.5.4
|
| asciidoctor | ≥ 1.5.4
|
||||||
| Tworzenie strony man i dokumentacji.
|
| Tworzenie strony man i dokumentacji.
|
||||||
|
|
||||||
| ruby-pygments.rb |
|
| python3-pygments, ruby-pygments.rb |
|
||||||
| Dokumentacja budowania.
|
| Dokumentacja budowania.
|
||||||
|
|
||||||
| libcpputest-dev | ≥ 3.4
|
| libcpputest-dev | ≥ 3.4
|
||||||
@@ -2191,6 +2191,152 @@ Przykład pogrubienia z domyślnym kolorem terminala:
|
|||||||
/set weechat.color.status_time *99999
|
/set weechat.color.status_time *99999
|
||||||
----
|
----
|
||||||
|
|
||||||
|
// TRANSLATION MISSING
|
||||||
|
[[themes]]
|
||||||
|
=== Motywy
|
||||||
|
|
||||||
|
A theme is a named bundle of option overrides that can be applied with
|
||||||
|
the <<command_weechat_theme,/theme>> command. WeeChat ships a built-in
|
||||||
|
`"light"` theme tuned for light-background terminals and supports
|
||||||
|
user-defined themes loaded transiently from files.
|
||||||
|
|
||||||
|
[[themes_themable_options]]
|
||||||
|
==== Themable options
|
||||||
|
|
||||||
|
Themes can only set options marked as _themable_. All `*.color.*`
|
||||||
|
options are themable by default; a few string options that hold format
|
||||||
|
expressions with `+${color:...}+` references (such as
|
||||||
|
`+weechat.color.chat_nick_colors+`, `+weechat.look.prefix_error+` or the
|
||||||
|
`+buflist.format.*+` formats) are explicitly opted in.
|
||||||
|
|
||||||
|
You can list the full themable surface area from the
|
||||||
|
<<command_fset_fset,/fset>> buffer with the `+t:themable+` filter.
|
||||||
|
|
||||||
|
[[themes_apply]]
|
||||||
|
==== Applying a theme
|
||||||
|
|
||||||
|
To switch to the built-in light-background theme:
|
||||||
|
|
||||||
|
----
|
||||||
|
/theme apply light
|
||||||
|
----
|
||||||
|
|
||||||
|
The current state of every themable option is saved beforehand to a
|
||||||
|
backup theme file named like `+backup-YYYYMMDD-HHMMSS-uuuuuu+` in
|
||||||
|
directory `+themes+` inside the WeeChat configuration directory, so the
|
||||||
|
previous look can be restored at any time with:
|
||||||
|
|
||||||
|
----
|
||||||
|
/theme apply backup-YYYYMMDD-HHMMSS-uuuuuu
|
||||||
|
----
|
||||||
|
|
||||||
|
Backup creation can be disabled (not recommended):
|
||||||
|
|
||||||
|
----
|
||||||
|
/set weechat.look.theme_backup off
|
||||||
|
----
|
||||||
|
|
||||||
|
If backup is enabled and the backup file cannot be written, the apply
|
||||||
|
is aborted before any option is changed.
|
||||||
|
|
||||||
|
The name of the last applied theme is stored in
|
||||||
|
`+weechat.look.theme+` (informational only; not re-applied at startup).
|
||||||
|
|
||||||
|
[[themes_reset]]
|
||||||
|
==== Resetting to defaults
|
||||||
|
|
||||||
|
To restore the look shipped with WeeChat, reset every themable option
|
||||||
|
to its default value:
|
||||||
|
|
||||||
|
----
|
||||||
|
/theme reset
|
||||||
|
----
|
||||||
|
|
||||||
|
A backup is written first (same gate as `+/theme apply+`); on backup
|
||||||
|
failure the reset is aborted before any option is changed.
|
||||||
|
`+weechat.look.theme+` is cleared too.
|
||||||
|
|
||||||
|
[[themes_save_delete]]
|
||||||
|
==== Saving and deleting user themes
|
||||||
|
|
||||||
|
Save the current themable options as a new user theme file:
|
||||||
|
|
||||||
|
----
|
||||||
|
/theme save mytheme
|
||||||
|
----
|
||||||
|
|
||||||
|
Every themable option is written, so the file is self-contained and
|
||||||
|
applies the exact same look on any WeeChat, regardless of its current
|
||||||
|
configuration.
|
||||||
|
|
||||||
|
Reserved names (built-in theme names like `+light+` and any name
|
||||||
|
starting with `+backup-+`) are refused. Files live at
|
||||||
|
`+${weechat_config_dir}/themes/<name>.theme+`.
|
||||||
|
|
||||||
|
Rename a user theme (typical use: keep a useful automatic backup
|
||||||
|
under a meaningful name):
|
||||||
|
|
||||||
|
----
|
||||||
|
/theme rename backup-20260525-094210-123456 mybackup
|
||||||
|
----
|
||||||
|
|
||||||
|
Built-in themes have no file and cannot be renamed; the target name
|
||||||
|
cannot match a built-in name or start with `+backup-+`, and the
|
||||||
|
target file must not already exist. The `+[info]+` `+name+` field
|
||||||
|
inside the file is rewritten so `/theme info` reports the new name
|
||||||
|
consistently.
|
||||||
|
|
||||||
|
Delete a user theme:
|
||||||
|
|
||||||
|
----
|
||||||
|
/theme del mytheme
|
||||||
|
----
|
||||||
|
|
||||||
|
This removes the file on disk; built-in themes cannot be deleted.
|
||||||
|
|
||||||
|
[[themes_file_format]]
|
||||||
|
==== Theme file format
|
||||||
|
|
||||||
|
A theme file is INI-like with two sections:
|
||||||
|
|
||||||
|
----
|
||||||
|
[info]
|
||||||
|
name = "solarized_light"
|
||||||
|
description = "Light-background theme inspired by Solarized"
|
||||||
|
date = "2026-05-25 09:42:10"
|
||||||
|
weechat = "4.10.0-dev"
|
||||||
|
|
||||||
|
[options]
|
||||||
|
weechat.color.chat = "darkgray"
|
||||||
|
weechat.color.separator = "blue"
|
||||||
|
irc.color.input_nick = "magenta"
|
||||||
|
buflist.format.number = "${color:28}${number}${if:${number_displayed}?.: }"
|
||||||
|
----
|
||||||
|
|
||||||
|
`+[info]+` is informational metadata shown by `/theme info`. `+[options]+`
|
||||||
|
holds the actual overrides; keys are the full option names that would
|
||||||
|
appear in `/set`. String values can be enclosed in double or single
|
||||||
|
quotes; quotes are stripped at parse time. Non-themable options listed
|
||||||
|
in a theme file are refused at apply time and logged to the core
|
||||||
|
buffer (so a `.theme` file imported from an untrusted source cannot
|
||||||
|
overwrite passwords, autoload lists, or startup commands).
|
||||||
|
|
||||||
|
User theme files are never cached: on every `/theme apply <name>` the
|
||||||
|
file is parsed, applied, and freed.
|
||||||
|
|
||||||
|
[[themes_resolution]]
|
||||||
|
==== Resolution order
|
||||||
|
|
||||||
|
When `+/theme apply <name>+` is run:
|
||||||
|
|
||||||
|
* If `+${weechat_config_dir}/themes/<name>.theme+` exists, the file
|
||||||
|
is parsed and used (it shadows any built-in with the same name).
|
||||||
|
* Otherwise the built-in theme registry is consulted; built-ins are
|
||||||
|
registered programmatically by core, plugins and scripts (see the
|
||||||
|
plugin and scripting documentation for `+weechat_theme_register+`).
|
||||||
|
|
||||||
|
If neither source provides the name, the apply is refused.
|
||||||
|
|
||||||
[[charset]]
|
[[charset]]
|
||||||
=== Charset
|
=== Charset
|
||||||
|
|
||||||
|
|||||||
@@ -6,8 +6,7 @@
|
|||||||
// tag::plugin_options[]
|
// tag::plugin_options[]
|
||||||
За комплетну документацију у вези опција додатака, молимо вас да погледате документацију за додатке у https://weechat.org/doc/[WeeChat корисничком упутству].
|
За комплетну документацију у вези опција додатака, молимо вас да погледате документацију за додатке у https://weechat.org/doc/[WeeChat корисничком упутству].
|
||||||
|
|
||||||
// TRANSLATION MISSING
|
Помоћу irc додатка, са сервером се повезујете URL адресом као што је:
|
||||||
With irc plugin, you can connect to a server with an URL like:
|
|
||||||
|
|
||||||
irc[6][s]://[[надимак][:лозинка]@]сервер[:порт][/#канал1[,#канал2...]]
|
irc[6][s]://[[надимак][:лозинка]@]сервер[:порт][/#канал1[,#канал2...]]
|
||||||
|
|
||||||
|
|||||||
@@ -128,6 +128,7 @@ WeeChat „језгро” се налази у следећим директо
|
|||||||
|===
|
|===
|
||||||
| Путања/фајл | Опис
|
| Путања/фајл | Опис
|
||||||
| core/ | Функције језгра: тачка улаза, интерне структуре.
|
| core/ | Функције језгра: тачка улаза, интерне структуре.
|
||||||
|
| core-args.c | Аргументи командне-линије.
|
||||||
| core-arraylist.c | Листе низова.
|
| core-arraylist.c | Листе низова.
|
||||||
| core-backtrace.c | Испис трага након краха.
|
| core-backtrace.c | Испис трага након краха.
|
||||||
| core-calc.c | Израчунавање резултата израза.
|
| core-calc.c | Израчунавање резултата израза.
|
||||||
@@ -651,9 +652,9 @@ WeeChat „језгро” се налази у следећим директо
|
|||||||
[source,c]
|
[source,c]
|
||||||
----
|
----
|
||||||
/*
|
/*
|
||||||
* Checks if a string with boolean value is valid.
|
* Check if a string with boolean value is valid.
|
||||||
*
|
*
|
||||||
* Returns:
|
* Return:
|
||||||
* 1: boolean value is valid
|
* 1: boolean value is valid
|
||||||
* 0: boolean value is NOT valid
|
* 0: boolean value is NOT valid
|
||||||
*/
|
*/
|
||||||
@@ -914,9 +915,9 @@ struct t_gui_window *gui_current_window = NULL; /* current window */
|
|||||||
[source,c]
|
[source,c]
|
||||||
----
|
----
|
||||||
/*
|
/*
|
||||||
* Creates a new window.
|
* Create a new window.
|
||||||
*
|
*
|
||||||
* Returns pointer to new window, NULL if error.
|
* Return pointer to new window, NULL if error.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
struct t_gui_window *
|
struct t_gui_window *
|
||||||
|
|||||||
@@ -380,7 +380,7 @@ term screen-256color
|
|||||||
[[search_text]]
|
[[search_text]]
|
||||||
=== Како могу да претражујем текст у баферу (као /lastlog у програму irssi)?
|
=== Како могу да претражујем текст у баферу (као /lastlog у програму irssi)?
|
||||||
|
|
||||||
Подразумевани тастер је kbd:[Ctrl+r] (команда је: `+/input овде_текст_претраге+`). И скок на истицања: kbd:[Alt+p] / kbd:[Alt+n].
|
Подразумевани тастер је kbd:[Ctrl+s] (команда је: `+/input овде_текст_претраге+`). И скок на истицања: kbd:[Alt+p] / kbd:[Alt+n].
|
||||||
|
|
||||||
За више о овој могућности, погледајте link:weechat_user.sr.html#key_bindings[Корисничко упутство / Тастерске пречице ^↗^^].
|
За више о овој могућности, погледајте link:weechat_user.sr.html#key_bindings[Корисничко упутство / Тастерске пречице ^↗^^].
|
||||||
|
|
||||||
|
|||||||
@@ -3356,6 +3356,9 @@ _WeeChat ≥ 1.8, ажурирано у верзији 3.0._
|
|||||||
|
|
||||||
Показивач на стринг _*string_ може да се промени ако се стринг реалоцира (у случају да нема довољно простора за надовезивање стринга).
|
Показивач на стринг _*string_ може да се промени ако се стринг реалоцира (у случају да нема довољно простора за надовезивање стринга).
|
||||||
|
|
||||||
|
// TRANSLATION MISSING
|
||||||
|
In case of error, the dynamic string is left unchanged.
|
||||||
|
|
||||||
Прототип:
|
Прототип:
|
||||||
|
|
||||||
[source,c]
|
[source,c]
|
||||||
@@ -4209,7 +4212,7 @@ _Ажурирано у верзији 3.2._
|
|||||||
|
|
||||||
[source,c]
|
[source,c]
|
||||||
----
|
----
|
||||||
int weechat_mkdir_home (char *directory, int mode);
|
int weechat_mkdir_home (const char *directory, int mode);
|
||||||
----
|
----
|
||||||
|
|
||||||
Аргументи:
|
Аргументи:
|
||||||
@@ -4255,7 +4258,7 @@ weechat.mkdir_home("${weechat_cache_dir}/temp", 0755)
|
|||||||
|
|
||||||
[source,c]
|
[source,c]
|
||||||
----
|
----
|
||||||
int weechat_mkdir (char *directory, int mode);
|
int weechat_mkdir (const char *directory, int mode);
|
||||||
----
|
----
|
||||||
|
|
||||||
Аргументи:
|
Аргументи:
|
||||||
@@ -4296,7 +4299,7 @@ weechat.mkdir("/tmp/mydir", 0755)
|
|||||||
|
|
||||||
[source,c]
|
[source,c]
|
||||||
----
|
----
|
||||||
int weechat_mkdir_parents (char *directory, int mode);
|
int weechat_mkdir_parents (const char *directory, int mode);
|
||||||
----
|
----
|
||||||
|
|
||||||
Аргументи:
|
Аргументи:
|
||||||
@@ -7171,7 +7174,7 @@ section = weechat.config_search_section(config_file, "section")
|
|||||||
|
|
||||||
==== config_new_option
|
==== config_new_option
|
||||||
|
|
||||||
_Ажурирано у верзији 1.5, 4.1.0._
|
_Ажурирано у верзији 1.5, 4.1.0, 4.10.0._
|
||||||
|
|
||||||
Креира нову опцију у одељку конфигурационог фајла.
|
Креира нову опцију у одељку конфигурационог фајла.
|
||||||
|
|
||||||
@@ -7214,7 +7217,10 @@ struct t_config_option *weechat_config_new_option (
|
|||||||
* _config_file_: показивач на конфигурациони фајл
|
* _config_file_: показивач на конфигурациони фајл
|
||||||
* _section_: показивач на одељак
|
* _section_: показивач на одељак
|
||||||
* _name_: име опције; у програм у WeeChat верзије ≥ 1.4, име може да укључи и име родитељске опције (у случају да је ова опција „null”, вредност родитељске опције ће се приказати у излазу команде `/set`), тада је синтакса: „име << фајл.одељак.опција”
|
* _name_: име опције; у програм у WeeChat верзије ≥ 1.4, име може да укључи и име родитељске опције (у случају да је ова опција „null”, вредност родитељске опције ће се приказати у излазу команде `/set`), тада је синтакса: „име << фајл.одељак.опција”
|
||||||
* _type_: тип опције:
|
// TRANSLATION MISSING
|
||||||
|
* _type_: type of option; any type can be suffixed with `+|themable+` to mark
|
||||||
|
the option as themable, so that it can be set by the `/theme` command
|
||||||
|
(options of type _color_ are always themable) _(WeeChat ≥ 4.10.0)_:
|
||||||
** _boolean_: логичка вредност (on/off)
|
** _boolean_: логичка вредност (on/off)
|
||||||
** _integer_: целобројна вредност
|
** _integer_: целобројна вредност
|
||||||
** _string_: стринг вредност
|
** _string_: стринг вредност
|
||||||
@@ -7287,7 +7293,7 @@ struct t_config_option *option_int =
|
|||||||
|
|
||||||
/* стринг */
|
/* стринг */
|
||||||
struct t_config_option *option_str =
|
struct t_config_option *option_str =
|
||||||
weechat_config_new_option (config_file, section, "option_str", "string",
|
weechat_config_new_option (config_file, section, "option_str", "string|themable",
|
||||||
"My option, type string",
|
"My option, type string",
|
||||||
NULL,
|
NULL,
|
||||||
0, 0,
|
0, 0,
|
||||||
@@ -7363,7 +7369,7 @@ option_int = weechat.config_new_option(config_file, section, "option_int", "inte
|
|||||||
"", "",
|
"", "",
|
||||||
"", "")
|
"", "")
|
||||||
|
|
||||||
option_str = weechat.config_new_option(config_file, section, "option_str", "string",
|
option_str = weechat.config_new_option(config_file, section, "option_str", "string|themable",
|
||||||
"My option, type string",
|
"My option, type string",
|
||||||
"", 0, 0, "test", "test", 1,
|
"", 0, 0, "test", "test", 1,
|
||||||
"option_str_check_value_cb", "",
|
"option_str_check_value_cb", "",
|
||||||
@@ -7492,7 +7498,7 @@ void weechat_config_search_with_string (const char *option_name,
|
|||||||
struct t_config_file **config_file,
|
struct t_config_file **config_file,
|
||||||
struct t_config_section **section,
|
struct t_config_section **section,
|
||||||
struct t_config_option **option,
|
struct t_config_option **option,
|
||||||
char **pos_option_name);
|
const char **pos_option_name);
|
||||||
----
|
----
|
||||||
|
|
||||||
Аргументи:
|
Аргументи:
|
||||||
@@ -7510,7 +7516,7 @@ C пример:
|
|||||||
struct t_config_file *ptr_config_file;
|
struct t_config_file *ptr_config_file;
|
||||||
struct t_config_section *ptr_section;
|
struct t_config_section *ptr_section;
|
||||||
struct t_config_option *ptr_option;
|
struct t_config_option *ptr_option;
|
||||||
char *option_name;
|
const char *option_name;
|
||||||
|
|
||||||
weechat_config_search_with_string ("file.section.option",
|
weechat_config_search_with_string ("file.section.option",
|
||||||
&ptr_config_file,
|
&ptr_config_file,
|
||||||
@@ -9436,6 +9442,90 @@ elif rc == weechat.WEECHAT_CONFIG_OPTION_UNSET_ERROR:
|
|||||||
# ...
|
# ...
|
||||||
----
|
----
|
||||||
|
|
||||||
|
// TRANSLATION MISSING
|
||||||
|
[[themes]]
|
||||||
|
=== Теме
|
||||||
|
|
||||||
|
Functions to contribute color (and other themable option) overrides to
|
||||||
|
built-in themes. See the
|
||||||
|
link:weechat_user.sr.html#themes[user's guide / Themes] section for the
|
||||||
|
end-user side and the `+/theme+` command.
|
||||||
|
|
||||||
|
==== theme_register
|
||||||
|
|
||||||
|
_WeeChat ≥ 4.10.0._
|
||||||
|
|
||||||
|
Register a contribution of option overrides under a named theme. The
|
||||||
|
caller's plugin is the owner of the contribution; subsequent calls
|
||||||
|
with the same theme name from the same plugin merge into the existing
|
||||||
|
contribution (later keys win for duplicates).
|
||||||
|
|
||||||
|
When the calling plugin is unloaded, all its contributions are
|
||||||
|
automatically dropped from every theme.
|
||||||
|
|
||||||
|
Prototype:
|
||||||
|
|
||||||
|
[source,c]
|
||||||
|
----
|
||||||
|
struct t_theme *weechat_theme_register (const char *name,
|
||||||
|
struct t_hashtable *overrides);
|
||||||
|
----
|
||||||
|
|
||||||
|
Arguments:
|
||||||
|
|
||||||
|
* _name_: theme name (for example `+light+` or a custom name)
|
||||||
|
* _overrides_: hashtable mapping full option names
|
||||||
|
(e.g. `+irc.color.input_nick+`) to their string values; the caller
|
||||||
|
retains ownership and may free the hashtable right after the call
|
||||||
|
|
||||||
|
Return value:
|
||||||
|
|
||||||
|
* pointer to the registered theme (existing or newly created), NULL on
|
||||||
|
error
|
||||||
|
|
||||||
|
C example:
|
||||||
|
|
||||||
|
[source,c]
|
||||||
|
----
|
||||||
|
struct t_hashtable *overrides = weechat_hashtable_new (
|
||||||
|
8,
|
||||||
|
WEECHAT_HASHTABLE_STRING,
|
||||||
|
WEECHAT_HASHTABLE_STRING,
|
||||||
|
NULL, NULL);
|
||||||
|
if (overrides)
|
||||||
|
{
|
||||||
|
weechat_hashtable_set (overrides, "irc.color.input_nick", "cyan");
|
||||||
|
weechat_hashtable_set (overrides, "irc.color.topic_old", "darkgray");
|
||||||
|
weechat_theme_register ("light", overrides);
|
||||||
|
weechat_hashtable_free (overrides);
|
||||||
|
}
|
||||||
|
----
|
||||||
|
|
||||||
|
Script (Python):
|
||||||
|
|
||||||
|
[source,python]
|
||||||
|
----
|
||||||
|
# prototype
|
||||||
|
def theme_register(name: str, overrides: Dict[str, str]) -> str: ...
|
||||||
|
|
||||||
|
# example
|
||||||
|
weechat.theme_register("light", {
|
||||||
|
"irc.color.input_nick": "cyan",
|
||||||
|
"irc.color.topic_old": "darkgray",
|
||||||
|
})
|
||||||
|
----
|
||||||
|
|
||||||
|
[NOTE]
|
||||||
|
Only options that have the _themable_ flag will be set by `/theme apply`.
|
||||||
|
All `*.color.*` options are themable by default; string options that
|
||||||
|
hold `+${color:...}+` references are explicitly opted in. Entries
|
||||||
|
targeting non-themable options are silently skipped at apply-time with
|
||||||
|
a warning logged to the _core_ buffer.
|
||||||
|
|
||||||
|
[NOTE]
|
||||||
|
When called from a script, the contribution is automatically dropped
|
||||||
|
when the script unloads (no manual cleanup is needed).
|
||||||
|
|
||||||
[[key_bindings]]
|
[[key_bindings]]
|
||||||
=== Тастерске пречице
|
=== Тастерске пречице
|
||||||
|
|
||||||
|
|||||||
@@ -543,7 +543,8 @@ HTTP/1.1 200 OK
|
|||||||
"plugin": "core",
|
"plugin": "core",
|
||||||
"name": "weechat"
|
"name": "weechat"
|
||||||
},
|
},
|
||||||
"keys": []
|
"keys": [],
|
||||||
|
"last_read_line_id": -1
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": 1709932823423765,
|
"id": 1709932823423765,
|
||||||
@@ -573,7 +574,8 @@ HTTP/1.1 200 OK
|
|||||||
"tls_version": "TLS1.3",
|
"tls_version": "TLS1.3",
|
||||||
"host": "~alice@example.com"
|
"host": "~alice@example.com"
|
||||||
},
|
},
|
||||||
"keys": []
|
"keys": [],
|
||||||
|
"last_read_line_id": -1
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": 1709932823649069,
|
"id": 1709932823649069,
|
||||||
@@ -601,7 +603,8 @@ HTTP/1.1 200 OK
|
|||||||
"nick": "alice",
|
"nick": "alice",
|
||||||
"host": "~alice@example.com"
|
"host": "~alice@example.com"
|
||||||
},
|
},
|
||||||
"keys": []
|
"keys": [],
|
||||||
|
"last_read_line_id": -1
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
----
|
----
|
||||||
@@ -657,7 +660,8 @@ HTTP/1.1 200 OK
|
|||||||
"message": "Учитани додаци: alias, buflist, charset, exec, fifo, fset, guile, irc, javascript, logger, lua, perl, php, python, relay, ruby, script, spell, tcl, trigger, typing, xfer",
|
"message": "Учитани додаци: alias, buflist, charset, exec, fifo, fset, guile, irc, javascript, logger, lua, perl, php, python, relay, ruby, script, spell, tcl, trigger, typing, xfer",
|
||||||
"tags": []
|
"tags": []
|
||||||
}
|
}
|
||||||
]
|
],
|
||||||
|
"last_read_line_id": -1
|
||||||
}
|
}
|
||||||
----
|
----
|
||||||
|
|
||||||
@@ -704,6 +708,7 @@ HTTP/1.1 200 OK
|
|||||||
"host": "~alice@example.com"
|
"host": "~alice@example.com"
|
||||||
},
|
},
|
||||||
"keys": [],
|
"keys": [],
|
||||||
|
"last_read_line_id": -1,
|
||||||
"nicklist_root": {
|
"nicklist_root": {
|
||||||
"id": 0,
|
"id": 0,
|
||||||
"parent_group_id": -1,
|
"parent_group_id": -1,
|
||||||
@@ -902,7 +907,8 @@ HTTP/1.1 200 OK
|
|||||||
"key": "up",
|
"key": "up",
|
||||||
"command": "/fset -up"
|
"command": "/fset -up"
|
||||||
}
|
}
|
||||||
]
|
],
|
||||||
|
"last_read_line_id": -1
|
||||||
}
|
}
|
||||||
----
|
----
|
||||||
|
|
||||||
@@ -1024,12 +1030,19 @@ GET /api/buffers/{id_бафера}/nicks
|
|||||||
GET /api/buffers/{име_бафера}/nicks
|
GET /api/buffers/{име_бафера}/nicks
|
||||||
----
|
----
|
||||||
|
|
||||||
Параметри упита:
|
Параметри путање:
|
||||||
|
|
||||||
* `id_бафера` (цео број, **обавезно**): јединствени идентификатор бафера (не треба
|
* `id_бафера` (цео број, **обавезно**): јединствени идентификатор бафера (не треба
|
||||||
да се помеша са бројем бафера, то је нешто друго)
|
да се помеша са бројем бафера, то је нешто друго)
|
||||||
* `име_бафера` (стринг, **обавезно**): име бафера
|
* `име_бафера` (стринг, **обавезно**): име бафера
|
||||||
|
|
||||||
|
Параметри упита:
|
||||||
|
|
||||||
|
* `colors` (стринг, није обавезно, подразумевано: `ansi`): како се враћају стрингови са кодовима боје:
|
||||||
|
** `ansi`: враћају се ANSI кодови боје
|
||||||
|
** `weechat`: враћају се WeeChat интерни кодови боје
|
||||||
|
** `strip`: уклањају се боје
|
||||||
|
|
||||||
Пример захтева: врати надимке бафера:
|
Пример захтева: врати надимке бафера:
|
||||||
|
|
||||||
[source,shell]
|
[source,shell]
|
||||||
@@ -1175,6 +1188,51 @@ HTTP/1.1 200 OK
|
|||||||
]
|
]
|
||||||
----
|
----
|
||||||
|
|
||||||
|
[[resource_scripts]]
|
||||||
|
=== Скрипте
|
||||||
|
|
||||||
|
Враћа учитане скрипте (на свим језицима).
|
||||||
|
|
||||||
|
Крајња тачка:
|
||||||
|
|
||||||
|
----
|
||||||
|
GET /api/scripts
|
||||||
|
----
|
||||||
|
|
||||||
|
Пример захтева:
|
||||||
|
|
||||||
|
[source,shell]
|
||||||
|
----
|
||||||
|
curl -L -u 'plain:secret_password' 'https://localhost:9000/api/scripts'
|
||||||
|
----
|
||||||
|
|
||||||
|
Одговор:
|
||||||
|
|
||||||
|
[source,http]
|
||||||
|
----
|
||||||
|
HTTP/1.1 200 OK
|
||||||
|
----
|
||||||
|
|
||||||
|
[source,json]
|
||||||
|
----
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"name": "highmon.pl",
|
||||||
|
"version": "2.7",
|
||||||
|
"description": "Highlight Monitor",
|
||||||
|
"author": "KenjiE20",
|
||||||
|
"license": "GPL3"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "go.py",
|
||||||
|
"version": "3.1.1",
|
||||||
|
"description": "Quick jump to buffers",
|
||||||
|
"author": "Sébastien Helleu <flashcode@flashtux.org>",
|
||||||
|
"license": "GPL3"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
----
|
||||||
|
|
||||||
[[resource_input]]
|
[[resource_input]]
|
||||||
=== Input
|
=== Input
|
||||||
|
|
||||||
@@ -1504,6 +1562,7 @@ GUID `258EAFA5-E914-47DA-95CA-C5AB0DC85B11` (SHA-1 се кодира у base64).
|
|||||||
* `nick_group` (објекат)
|
* `nick_group` (објекат)
|
||||||
* `nick` (објекат)
|
* `nick` (објекат)
|
||||||
* `hotlist` (објекат)
|
* `hotlist` (објекат)
|
||||||
|
* `scripts` (низ)
|
||||||
* `ping` (објекат)
|
* `ping` (објекат)
|
||||||
|
|
||||||
[TIP]
|
[TIP]
|
||||||
|
|||||||
+147
-1
@@ -203,7 +203,7 @@ WeeChat мора да се изгради са CMake.
|
|||||||
| asciidoctor | ≥ 1.5.4
|
| asciidoctor | ≥ 1.5.4
|
||||||
| Изградња man странице и документације.
|
| Изградња man странице и документације.
|
||||||
|
|
||||||
| ruby-pygments.rb |
|
| python3-pygments, ruby-pygments.rb |
|
||||||
| Документација изградње.
|
| Документација изградње.
|
||||||
|
|
||||||
| libcpputest-dev | ≥ 3.4
|
| libcpputest-dev | ≥ 3.4
|
||||||
@@ -2093,6 +2093,152 @@ include::{autogendir}/autogen_user_options.sr.adoc[tag=fset_options]
|
|||||||
/set weechat.color.status_time *99999
|
/set weechat.color.status_time *99999
|
||||||
----
|
----
|
||||||
|
|
||||||
|
// TRANSLATION MISSING
|
||||||
|
[[themes]]
|
||||||
|
=== Теме
|
||||||
|
|
||||||
|
A theme is a named bundle of option overrides that can be applied with
|
||||||
|
the <<command_weechat_theme,/theme>> command. WeeChat ships a built-in
|
||||||
|
`"light"` theme tuned for light-background terminals and supports
|
||||||
|
user-defined themes loaded transiently from files.
|
||||||
|
|
||||||
|
[[themes_themable_options]]
|
||||||
|
==== Themable options
|
||||||
|
|
||||||
|
Themes can only set options marked as _themable_. All `*.color.*`
|
||||||
|
options are themable by default; a few string options that hold format
|
||||||
|
expressions with `+${color:...}+` references (such as
|
||||||
|
`+weechat.color.chat_nick_colors+`, `+weechat.look.prefix_error+` or the
|
||||||
|
`+buflist.format.*+` formats) are explicitly opted in.
|
||||||
|
|
||||||
|
You can list the full themable surface area from the
|
||||||
|
<<command_fset_fset,/fset>> buffer with the `+t:themable+` filter.
|
||||||
|
|
||||||
|
[[themes_apply]]
|
||||||
|
==== Applying a theme
|
||||||
|
|
||||||
|
To switch to the built-in light-background theme:
|
||||||
|
|
||||||
|
----
|
||||||
|
/theme apply light
|
||||||
|
----
|
||||||
|
|
||||||
|
The current state of every themable option is saved beforehand to a
|
||||||
|
backup theme file named like `+backup-YYYYMMDD-HHMMSS-uuuuuu+` in
|
||||||
|
directory `+themes+` inside the WeeChat configuration directory, so the
|
||||||
|
previous look can be restored at any time with:
|
||||||
|
|
||||||
|
----
|
||||||
|
/theme apply backup-YYYYMMDD-HHMMSS-uuuuuu
|
||||||
|
----
|
||||||
|
|
||||||
|
Backup creation can be disabled (not recommended):
|
||||||
|
|
||||||
|
----
|
||||||
|
/set weechat.look.theme_backup off
|
||||||
|
----
|
||||||
|
|
||||||
|
If backup is enabled and the backup file cannot be written, the apply
|
||||||
|
is aborted before any option is changed.
|
||||||
|
|
||||||
|
The name of the last applied theme is stored in
|
||||||
|
`+weechat.look.theme+` (informational only; not re-applied at startup).
|
||||||
|
|
||||||
|
[[themes_reset]]
|
||||||
|
==== Resetting to defaults
|
||||||
|
|
||||||
|
To restore the look shipped with WeeChat, reset every themable option
|
||||||
|
to its default value:
|
||||||
|
|
||||||
|
----
|
||||||
|
/theme reset
|
||||||
|
----
|
||||||
|
|
||||||
|
A backup is written first (same gate as `+/theme apply+`); on backup
|
||||||
|
failure the reset is aborted before any option is changed.
|
||||||
|
`+weechat.look.theme+` is cleared too.
|
||||||
|
|
||||||
|
[[themes_save_delete]]
|
||||||
|
==== Saving and deleting user themes
|
||||||
|
|
||||||
|
Save the current themable options as a new user theme file:
|
||||||
|
|
||||||
|
----
|
||||||
|
/theme save mytheme
|
||||||
|
----
|
||||||
|
|
||||||
|
Every themable option is written, so the file is self-contained and
|
||||||
|
applies the exact same look on any WeeChat, regardless of its current
|
||||||
|
configuration.
|
||||||
|
|
||||||
|
Reserved names (built-in theme names like `+light+` and any name
|
||||||
|
starting with `+backup-+`) are refused. Files live at
|
||||||
|
`+${weechat_config_dir}/themes/<name>.theme+`.
|
||||||
|
|
||||||
|
Rename a user theme (typical use: keep a useful automatic backup
|
||||||
|
under a meaningful name):
|
||||||
|
|
||||||
|
----
|
||||||
|
/theme rename backup-20260525-094210-123456 mybackup
|
||||||
|
----
|
||||||
|
|
||||||
|
Built-in themes have no file and cannot be renamed; the target name
|
||||||
|
cannot match a built-in name or start with `+backup-+`, and the
|
||||||
|
target file must not already exist. The `+[info]+` `+name+` field
|
||||||
|
inside the file is rewritten so `/theme info` reports the new name
|
||||||
|
consistently.
|
||||||
|
|
||||||
|
Delete a user theme:
|
||||||
|
|
||||||
|
----
|
||||||
|
/theme del mytheme
|
||||||
|
----
|
||||||
|
|
||||||
|
This removes the file on disk; built-in themes cannot be deleted.
|
||||||
|
|
||||||
|
[[themes_file_format]]
|
||||||
|
==== Theme file format
|
||||||
|
|
||||||
|
A theme file is INI-like with two sections:
|
||||||
|
|
||||||
|
----
|
||||||
|
[info]
|
||||||
|
name = "solarized_light"
|
||||||
|
description = "Light-background theme inspired by Solarized"
|
||||||
|
date = "2026-05-25 09:42:10"
|
||||||
|
weechat = "4.10.0-dev"
|
||||||
|
|
||||||
|
[options]
|
||||||
|
weechat.color.chat = "darkgray"
|
||||||
|
weechat.color.separator = "blue"
|
||||||
|
irc.color.input_nick = "magenta"
|
||||||
|
buflist.format.number = "${color:28}${number}${if:${number_displayed}?.: }"
|
||||||
|
----
|
||||||
|
|
||||||
|
`+[info]+` is informational metadata shown by `/theme info`. `+[options]+`
|
||||||
|
holds the actual overrides; keys are the full option names that would
|
||||||
|
appear in `/set`. String values can be enclosed in double or single
|
||||||
|
quotes; quotes are stripped at parse time. Non-themable options listed
|
||||||
|
in a theme file are refused at apply time and logged to the core
|
||||||
|
buffer (so a `.theme` file imported from an untrusted source cannot
|
||||||
|
overwrite passwords, autoload lists, or startup commands).
|
||||||
|
|
||||||
|
User theme files are never cached: on every `/theme apply <name>` the
|
||||||
|
file is parsed, applied, and freed.
|
||||||
|
|
||||||
|
[[themes_resolution]]
|
||||||
|
==== Resolution order
|
||||||
|
|
||||||
|
When `+/theme apply <name>+` is run:
|
||||||
|
|
||||||
|
* If `+${weechat_config_dir}/themes/<name>.theme+` exists, the file
|
||||||
|
is parsed and used (it shadows any built-in with the same name).
|
||||||
|
* Otherwise the built-in theme registry is consulted; built-ins are
|
||||||
|
registered programmatically by core, plugins and scripts (see the
|
||||||
|
plugin and scripting documentation for `+weechat_theme_register+`).
|
||||||
|
|
||||||
|
If neither source provides the name, the apply is refused.
|
||||||
|
|
||||||
[[charset]]
|
[[charset]]
|
||||||
=== Charset
|
=== Charset
|
||||||
|
|
||||||
|
|||||||
@@ -22,16 +22,164 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: WeeChat\n"
|
"Project-Id-Version: WeeChat\n"
|
||||||
"Report-Msgid-Bugs-To: flashcode@flashtux.org\n"
|
"Report-Msgid-Bugs-To: flashcode@flashtux.org\n"
|
||||||
"POT-Creation-Date: 2026-03-16 13:17+0100\n"
|
"POT-Creation-Date: 2026-07-05 12:20+0200\n"
|
||||||
"PO-Revision-Date: 2025-10-27 08:27+0100\n"
|
"PO-Revision-Date: 2026-07-05 12:28+0200\n"
|
||||||
"Last-Translator: Andras Voroskoi <voroskoi@frugalware.org>\n"
|
"Last-Translator: Andras Voroskoi <voroskoi@frugalware.org>\n"
|
||||||
"Language-Team: weechat-dev <weechat-dev@nongnu.org>\n"
|
"Language-Team: Hungarian <weechat-dev@nongnu.org>\n"
|
||||||
"Language: hu\n"
|
"Language: hu\n"
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"Plural-Forms: nplurals=2; plural=n != 1;\n"
|
"Plural-Forms: nplurals=2; plural=n != 1;\n"
|
||||||
|
|
||||||
|
#. TRANSLATORS: command line option "-a", "--no-connect"
|
||||||
|
#, fuzzy
|
||||||
|
msgid "disable auto-connect to servers at startup"
|
||||||
|
msgstr "%s DCC: nem sikerült kapcsolódni a küldőhöz\n"
|
||||||
|
|
||||||
|
#. TRANSLATORS: command line option "-c", "--colors"
|
||||||
|
msgid "display default colors in terminal and exit"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. TRANSLATORS: only "<path>" may be translated
|
||||||
|
msgid "-d, --dir <path>"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. TRANSLATORS: command line option "-d", "--dir <path>"
|
||||||
|
msgid ""
|
||||||
|
"force a single WeeChat home directory or 5 different directories separated "
|
||||||
|
"by colons (in this order: config, data, state, cache, runtime) (environment "
|
||||||
|
"variable WEECHAT_HOME is read if this option is not given)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. TRANSLATORS: command line option "-t", "--temp-dir"
|
||||||
|
msgid ""
|
||||||
|
"create a temporary WeeChat home directory and delete it on exit "
|
||||||
|
"(incompatible with option \"-d\")"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. TRANSLATORS: command line option "-h", "--help"
|
||||||
|
#, fuzzy
|
||||||
|
msgid "display this help and exit"
|
||||||
|
msgstr "másik fél nevének színe privát beszélgetésben"
|
||||||
|
|
||||||
|
#. TRANSLATORS: command line option "-i", "--build-info"
|
||||||
|
msgid "display build information and exit"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. TRANSLATORS: command line option "-l", "--license"
|
||||||
|
#, fuzzy
|
||||||
|
#| msgid "display WeeChat logo at startup"
|
||||||
|
msgid "display WeeChat license and exit"
|
||||||
|
msgstr "WeeChat logo mutatása induláskor"
|
||||||
|
|
||||||
|
#. TRANSLATORS: command line option "-p", "--no-plugin"
|
||||||
|
#, fuzzy
|
||||||
|
#| msgid "display WeeChat logo at startup"
|
||||||
|
msgid "don't load any plugin at startup"
|
||||||
|
msgstr "WeeChat logo mutatása induláskor"
|
||||||
|
|
||||||
|
#. TRANSLATORS: only "<plugins>" may be translated
|
||||||
|
msgid "-P, --plugins <plugins>"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. TRANSLATORS: command line option "-P", "--plugins <plugins>"
|
||||||
|
msgid "load only these plugins at startup (see /help weechat.plugin.autoload)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. TRANSLATORS: only "<cmd>" may be translated (please keep it short)
|
||||||
|
msgid "-r, --run-command <cmd>"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. TRANSLATORS: command line option "-r", "--run-command <cmd>"
|
||||||
|
#, fuzzy
|
||||||
|
msgid ""
|
||||||
|
"run command(s) after startup; many commands can be separated by semicolons "
|
||||||
|
"and are evaluated, this option can be given multiple times"
|
||||||
|
msgstr "felhasználónév az IRC szerveren"
|
||||||
|
|
||||||
|
#. TRANSLATORS: command line option "-s", "--no-script"
|
||||||
|
msgid "don't load any script at startup"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. TRANSLATORS: command line option "--upgrade"
|
||||||
|
#, fuzzy
|
||||||
|
msgid "upgrade WeeChat using session files (see /help upgrade in WeeChat)"
|
||||||
|
msgstr "%s nem sikerült a folyamatot menteni\n"
|
||||||
|
|
||||||
|
#. TRANSLATORS: command line option "-v", "--version"
|
||||||
|
#, fuzzy
|
||||||
|
#| msgid "display WeeChat version at startup"
|
||||||
|
msgid "display WeeChat version and exit"
|
||||||
|
msgstr "WeeChat verziójának mutatása induláskor"
|
||||||
|
|
||||||
|
#. TRANSLATORS: command line option: "plugin" and "option" may be translated
|
||||||
|
#, fuzzy
|
||||||
|
msgid "plugin:option"
|
||||||
|
msgstr " (nem található bővítőmodul)\n"
|
||||||
|
|
||||||
|
#. TRANSLATORS: command line option "plugin:option"
|
||||||
|
msgid "option for plugin (see man weechat)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. TRANSLATORS: only "<path>" may be translated
|
||||||
|
msgid "--doc-gen <path>"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. TRANSLATORS: command line option "--doc-gen <path>"
|
||||||
|
msgid "generate files to build documentation and exit"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. TRANSLATORS: command line option "--daemon"
|
||||||
|
msgid ""
|
||||||
|
"run WeeChat as a daemon (fork, new process group, file descriptors closed); "
|
||||||
|
"by default in headless mode WeeChat is blocking and does not run in "
|
||||||
|
"background"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. TRANSLATORS: command line option "--stdout"
|
||||||
|
msgid ""
|
||||||
|
"display log messages on standard output instead of writing them in log file "
|
||||||
|
"(option ignored if option \"--daemon\" is given)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. TRANSLATORS: command line option "--no-dlclose"
|
||||||
|
msgid "do not call function dlclose after plugins are unloaded"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. TRANSLATORS: command line option "--no-gnutls"
|
||||||
|
msgid "disable init/deinit of gnutls"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. TRANSLATORS: command line option "--no-gcrypt"
|
||||||
|
msgid "disable init/deinit of gcrypt"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. TRANSLATORS: "%s %s" after "compiled on" is date and time
|
||||||
|
#, fuzzy, c-format
|
||||||
|
msgid ""
|
||||||
|
"WeeChat %s Copyright %s, compiled on %s %s\n"
|
||||||
|
"Developed by %s <%s> - %s"
|
||||||
|
msgstr ""
|
||||||
|
"%s Copyright (C) 2003-2010, fordítva: %s %s\n"
|
||||||
|
"Fejlesztő: Sébastien Helleu <flashcode@flashtux.org> - %s"
|
||||||
|
|
||||||
|
msgid "Usage:"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "[option...] [plugin:option...]"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Extra options in headless mode:"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Debug options (for tools like valgrind, DO NOT USE IN PRODUCTION):"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#, fuzzy, c-format
|
||||||
|
msgid "Error: missing argument for \"%s\" option\n"
|
||||||
|
msgstr "%s hiányzó argumentum a(z) \"%s\" opciónak\n"
|
||||||
|
|
||||||
#, fuzzy
|
#, fuzzy
|
||||||
msgid "List of bars:"
|
msgid "List of bars:"
|
||||||
msgstr "Aliaszok listája:\n"
|
msgstr "Aliaszok listája:\n"
|
||||||
@@ -142,7 +290,7 @@ msgid "%sUnable to scroll bar \"%s\""
|
|||||||
msgstr "%s nem sikerült a modul opciókat elmenteni\n"
|
msgstr "%s nem sikerült a modul opciókat elmenteni\n"
|
||||||
|
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%sBuffer number \"%d\" is out of range (it must be between 1 and %d)"
|
msgid "%sBuffer number %d is out of range (it must be between 1 and %d)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid "Buffers list:"
|
msgid "Buffers list:"
|
||||||
@@ -493,11 +641,11 @@ msgstr ""
|
|||||||
"%s \"-yes\" paraméter megadása kötelező a billentyűparancsok "
|
"%s \"-yes\" paraméter megadása kötelező a billentyűparancsok "
|
||||||
"visszaállításához (biztonsági okokból)\n"
|
"visszaállításához (biztonsági okokból)\n"
|
||||||
|
|
||||||
#, fuzzy, c-format
|
#, c-format
|
||||||
msgid "%d new key added"
|
msgid "%d new key added (context: \"%s\")"
|
||||||
msgid_plural "%d new keys added (context: \"%s\")"
|
msgid_plural "%d new keys added (context: \"%s\")"
|
||||||
msgstr[0] "Nincs mellőzés megadva.\n"
|
msgstr[0] ""
|
||||||
msgstr[1] "Nincs mellőzés megadva.\n"
|
msgstr[1] ""
|
||||||
|
|
||||||
#, fuzzy
|
#, fuzzy
|
||||||
msgid "Stored layouts:"
|
msgid "Stored layouts:"
|
||||||
@@ -843,6 +991,48 @@ msgstr "nincs a szobában"
|
|||||||
msgid "%sFunction \"%s\" is not available on this system"
|
msgid "%sFunction \"%s\" is not available on this system"
|
||||||
msgstr "%s a \"%s\" modul nem található\n"
|
msgstr "%s a \"%s\" modul nem található\n"
|
||||||
|
|
||||||
|
#, fuzzy
|
||||||
|
msgid "No theme available"
|
||||||
|
msgstr " . típus: szám\n"
|
||||||
|
|
||||||
|
msgid "Themes:"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#, c-format
|
||||||
|
msgid " %s %s%s%s (file)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#, fuzzy, c-format
|
||||||
|
msgid "%sTheme \"%s\" not found"
|
||||||
|
msgstr "%s a \"%s\" szerver nem található\n"
|
||||||
|
|
||||||
|
#, fuzzy, c-format
|
||||||
|
msgid "Theme \"%s%s%s\":"
|
||||||
|
msgstr "Felhasználók a %s%s%s szobában: %s["
|
||||||
|
|
||||||
|
#, fuzzy, c-format
|
||||||
|
msgid " source: %s"
|
||||||
|
msgstr " IRC(%s)\n"
|
||||||
|
|
||||||
|
msgid " source: built-in (in-memory)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#, fuzzy, c-format
|
||||||
|
msgid " description: %s"
|
||||||
|
msgstr " . leírás : %s\n"
|
||||||
|
|
||||||
|
#, fuzzy, c-format
|
||||||
|
msgid " date: %s"
|
||||||
|
msgstr " IRC(%s)\n"
|
||||||
|
|
||||||
|
#, fuzzy, c-format
|
||||||
|
msgid " WeeChat version: %s"
|
||||||
|
msgstr "WeeChat szlogen"
|
||||||
|
|
||||||
|
#, c-format
|
||||||
|
msgid " overrides: %d"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#, fuzzy, c-format
|
#, fuzzy, c-format
|
||||||
msgid "%sFailed to unset option \"%s\""
|
msgid "%sFailed to unset option \"%s\""
|
||||||
msgstr "%s nem sikerült a modul opciókat elmenteni\n"
|
msgstr "%s nem sikerült a modul opciókat elmenteni\n"
|
||||||
@@ -1010,6 +1200,16 @@ msgstr ""
|
|||||||
" üzenet: távolléti üzenet (ha nincs üzenet megadva, a távolléti státusz "
|
" üzenet: távolléti üzenet (ha nincs üzenet megadva, a távolléti státusz "
|
||||||
"eltávolítása)"
|
"eltávolítása)"
|
||||||
|
|
||||||
|
msgid ""
|
||||||
|
"By default the away status is displayed only locally by the irc plugin (see /"
|
||||||
|
"help irc.look.display_away)."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid ""
|
||||||
|
"This command can be caught by other plugins and scripts (see \"Plugin API "
|
||||||
|
"reference\", function \"hook_command_run\")."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#, fuzzy
|
#, fuzzy
|
||||||
msgid "manage bars"
|
msgid "manage bars"
|
||||||
msgstr "pufferek kezelése"
|
msgstr "pufferek kezelése"
|
||||||
@@ -1101,7 +1301,7 @@ msgstr ""
|
|||||||
|
|
||||||
msgid ""
|
msgid ""
|
||||||
"option: option to change (for options list, look at /set weechat.bar."
|
"option: option to change (for options list, look at /set weechat.bar."
|
||||||
"<barname>.*)"
|
"<bar_name>.*)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#, fuzzy
|
#, fuzzy
|
||||||
@@ -1554,7 +1754,7 @@ msgstr ""
|
|||||||
|
|
||||||
#. TRANSLATORS: only text between angle brackets (eg: "<name>") may be translated
|
#. TRANSLATORS: only text between angle brackets (eg: "<name>") may be translated
|
||||||
msgid ""
|
msgid ""
|
||||||
"[-n|-s] [-d] <expression> || [-n] [-d [-d]] -c <expression1> <operator> "
|
"[-n|-s] [-e] [-d] <expression> || [-n] [-d [-d]] -c <expression1> <operator> "
|
||||||
"<expression2>"
|
"<expression2>"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@@ -1566,6 +1766,9 @@ msgid ""
|
|||||||
"separated by semicolons)"
|
"separated by semicolons)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "raw[-e]: evaluate all commands before executing them"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid ""
|
msgid ""
|
||||||
"raw[-d]: display debug output after evaluation (with two -d: more verbose "
|
"raw[-d]: display debug output after evaluation (with two -d: more verbose "
|
||||||
"debug)"
|
"debug)"
|
||||||
@@ -2085,7 +2288,7 @@ msgid "display help about commands and options"
|
|||||||
msgstr "segítség megjelenítése a parancsokhoz"
|
msgstr "segítség megjelenítése a parancsokhoz"
|
||||||
|
|
||||||
#. TRANSLATORS: only text between angle brackets (eg: "<name>") may be translated
|
#. TRANSLATORS: only text between angle brackets (eg: "<name>") may be translated
|
||||||
msgid "-list|-listfull [<plugin>...]] || <command> || <option>"
|
msgid "-list|-listfull [<plugin>...] || <command> || <option>"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid ""
|
msgid ""
|
||||||
@@ -2145,9 +2348,9 @@ msgid "raw[clear]: clear hotlist"
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid ""
|
msgid ""
|
||||||
"level: \"lowest\" to clear only lowest level in hotlist, highest\" to clear "
|
"level: \"lowest\" to clear only lowest level in hotlist, \"highest\" to "
|
||||||
"only highest level in hotlist, or level mask: integer which is a combination "
|
"clear only highest level in hotlist, or level mask: integer which is a "
|
||||||
"of 1=join/part, 2=message, 4=private, 8=highlight"
|
"combination of 1=join/part, 2=message, 4=private, 8=highlight"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid "raw[remove]: remove current buffer from hotlist"
|
msgid "raw[remove]: remove current buffer from hotlist"
|
||||||
@@ -3012,7 +3215,7 @@ msgstr ""
|
|||||||
|
|
||||||
msgid ""
|
msgid ""
|
||||||
"option: option to change (for options list, look at /set weechat.proxy."
|
"option: option to change (for options list, look at /set weechat.proxy."
|
||||||
"<proxyname>.*)"
|
"<proxy_name>.*)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid " add a http proxy, running on local host, port 8888:"
|
msgid " add a http proxy, running on local host, port 8888:"
|
||||||
@@ -3249,20 +3452,20 @@ msgstr ""
|
|||||||
msgid " encrypt libera SASL password:"
|
msgid " encrypt libera SASL password:"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid " /secure set libera mypassword"
|
msgid " /secure set libera my_password"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid " encrypt oftc password for nickserv:"
|
msgid " encrypt oftc password for nickserv:"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid " /secure set oftc mypassword"
|
msgid " /secure set oftc my_password"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid " alias to ghost the nick \"mynick\":"
|
msgid " alias to ghost the nick \"andrew\":"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid ""
|
msgid ""
|
||||||
" /alias add ghost /eval /msg -server libera nickserv ghost mynick $"
|
" /alias add ghost /eval /msg -server libera nickserv ghost andrew $"
|
||||||
"{sec.data.libera}"
|
"{sec.data.libera}"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@@ -3350,6 +3553,75 @@ msgstr ""
|
|||||||
msgid "number: number of processes to clean"
|
msgid "number: number of processes to clean"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#, fuzzy
|
||||||
|
msgid "manage color themes"
|
||||||
|
msgstr "Aliaszok listája:\n"
|
||||||
|
|
||||||
|
#. TRANSLATORS: only text between angle brackets (eg: "<name>") may be translated
|
||||||
|
msgid ""
|
||||||
|
"[list [-backups]] || apply <name> || reset || save <name> || rename <old> "
|
||||||
|
"<new> || del <name> || info <name>"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#, fuzzy
|
||||||
|
msgid ""
|
||||||
|
"raw[list]: list registered themes and any *.theme files in the WeeChat "
|
||||||
|
"configuration directory; the active theme (matching weechat.look.theme) is "
|
||||||
|
"marked with \"->\""
|
||||||
|
msgstr "Aliaszok listája:\n"
|
||||||
|
|
||||||
|
msgid "raw[-backups]: display backup theme files"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid ""
|
||||||
|
"raw[apply]: apply a theme (set every themable option to the value from the "
|
||||||
|
"theme); if a file named <name>.theme exists in directory \"themes\" it "
|
||||||
|
"shadows any built-in theme of the same name"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid ""
|
||||||
|
"raw[reset]: reset every themable option to its default value (restores the "
|
||||||
|
"original look shipped with WeeChat)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid ""
|
||||||
|
"raw[save]: save current themable options to a file <name>.theme in directory "
|
||||||
|
"\"themes\"; every themable option is written, so the file is self-contained; "
|
||||||
|
"the name must not match a built-in theme or start with \"backup-\""
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#, fuzzy
|
||||||
|
msgid "raw[rename]: rename a user theme file"
|
||||||
|
msgstr "Aliaszok listája:\n"
|
||||||
|
|
||||||
|
#, fuzzy
|
||||||
|
#| msgid "get/set channel topic"
|
||||||
|
msgid "raw[del]: delete a user theme file"
|
||||||
|
msgstr "szoba témájának olvasása/módosítása"
|
||||||
|
|
||||||
|
msgid ""
|
||||||
|
"raw[info]: display details on a theme (name, description, creation date, "
|
||||||
|
"WeeChat version, number of option overrides)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#, fuzzy
|
||||||
|
msgid "name: name of a theme"
|
||||||
|
msgstr "Aliaszok listája:\n"
|
||||||
|
|
||||||
|
msgid ""
|
||||||
|
"Themes are named bundles of option overrides. Built-in themes are registered "
|
||||||
|
"in memory by core/plugins/scripts; user themes are read from files in "
|
||||||
|
"directory \"themes\" inside the WeeChat configuration directory."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid ""
|
||||||
|
"By default, `/theme apply` command creates a backup of current themable "
|
||||||
|
"values in directory \"themes\" before applying (file name: \"backup-"
|
||||||
|
"<timestamp>.theme\"); the previous state can be restored with: `/theme apply "
|
||||||
|
"backup-<timestamp>`. This is controlled by the option "
|
||||||
|
"weechat.look.theme_backup."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#, fuzzy
|
#, fuzzy
|
||||||
msgid "toggle value of a config option"
|
msgid "toggle value of a config option"
|
||||||
msgstr "Nem található az opció\n"
|
msgstr "Nem található az opció\n"
|
||||||
@@ -3502,7 +3774,7 @@ msgstr ""
|
|||||||
msgid "With option \"-quit\", the process is:"
|
msgid "With option \"-quit\", the process is:"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid " 1. close *ALL* connections (irc, xfer, relay, ...)"
|
msgid " 1. close *ALL* connections (irc, xfer, relay, etc.)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#, fuzzy
|
#, fuzzy
|
||||||
@@ -3906,6 +4178,15 @@ msgstr ""
|
|||||||
msgid "names of layouts"
|
msgid "names of layouts"
|
||||||
msgstr "Aliaszok listája:\n"
|
msgstr "Aliaszok listája:\n"
|
||||||
|
|
||||||
|
msgid "names of themes (built-ins + user files + backups)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "names of user theme files (without built-ins and backups)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "names of theme files on disk (user files + backups, no built-ins)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "names of secured data (file sec.conf, section data)"
|
msgid "names of secured data (file sec.conf, section data)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@@ -4745,6 +5026,20 @@ msgstr ""
|
|||||||
msgid "number of spaces used to display tabs in messages"
|
msgid "number of spaces used to display tabs in messages"
|
||||||
msgstr "válasz ping üzenetre"
|
msgstr "válasz ping üzenetre"
|
||||||
|
|
||||||
|
msgid ""
|
||||||
|
"name of the last theme applied with command /theme (set automatically, do "
|
||||||
|
"not change manually); informational only, the theme is not re-applied at "
|
||||||
|
"startup"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid ""
|
||||||
|
"create a backup theme file with the current themable options before applying "
|
||||||
|
"a theme with command /theme; if the backup file cannot be written, the apply "
|
||||||
|
"is aborted (no option is changed); the backup file is written to directory "
|
||||||
|
"\"themes\" inside the WeeChat configuration directory and can be restored "
|
||||||
|
"with the command: `/theme apply backup-<timestamp>`"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#, fuzzy
|
#, fuzzy
|
||||||
msgid ""
|
msgid ""
|
||||||
"time format for dates converted to strings and displayed in messages (see "
|
"time format for dates converted to strings and displayed in messages (see "
|
||||||
@@ -5705,6 +6000,100 @@ msgstr "%s a \"%s\" modul nem található\n"
|
|||||||
msgid "Resource usage (see \"man getrusage\" for help):"
|
msgid "Resource usage (see \"man getrusage\" for help):"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "WeeChat default theme for light-background terminals"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Automatic backup"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#, fuzzy, c-format
|
||||||
|
msgid "%sTheme: option \"%s\" not found, skipped"
|
||||||
|
msgstr "%s a \"%s\" szerver nem található\n"
|
||||||
|
|
||||||
|
#, fuzzy, c-format
|
||||||
|
msgid "%sTheme: option \"%s\" is not themable, skipped"
|
||||||
|
msgstr "%s a \"%s\" szerver nem található\n"
|
||||||
|
|
||||||
|
#, c-format
|
||||||
|
msgid "%s%s: line %d: malformed section header"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#, fuzzy, c-format
|
||||||
|
msgid "%s%s: line %d: ignoring unknown section \"%s\""
|
||||||
|
msgstr "%s %s, %d. sor: ismeretlen csoportazonosító (\"%s\")\n"
|
||||||
|
|
||||||
|
#, c-format
|
||||||
|
msgid "%s%s: line %d: missing '=' separator"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#, fuzzy, c-format
|
||||||
|
msgid "%s%s: line %d: ignoring unknown [info] key \"%s\""
|
||||||
|
msgstr "%s %s, %d. sor: ismeretlen csoportazonosító (\"%s\")\n"
|
||||||
|
|
||||||
|
#, c-format
|
||||||
|
msgid ""
|
||||||
|
"%sUnable to create theme backup; aborting apply (disable option "
|
||||||
|
"weechat.look.theme_backup to force)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#, c-format
|
||||||
|
msgid "Previous state saved as theme \"%s\"; to restore: /theme apply %s"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#, c-format
|
||||||
|
msgid ""
|
||||||
|
"%sUnable to create theme backup; aborting reset (disable option "
|
||||||
|
"weechat.look.theme_backup to force)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#, c-format
|
||||||
|
msgid "%sName \"%s\" is reserved for automatic backups"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#, c-format
|
||||||
|
msgid "%sName \"%s\" is reserved for a built-in theme"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#, fuzzy, c-format
|
||||||
|
msgid "%sFailed to save theme \"%s\""
|
||||||
|
msgstr "Nem sikerült a(z) \"%s\" naplófájlt írni\n"
|
||||||
|
|
||||||
|
#, fuzzy, c-format
|
||||||
|
msgid "Theme saved to: %s"
|
||||||
|
msgstr "Felhasználók a %s%s%s szobában: %s["
|
||||||
|
|
||||||
|
#, fuzzy, c-format
|
||||||
|
msgid "%sCannot rename built-in theme \"%s\""
|
||||||
|
msgstr "%s nem sikerült a \"%s\" fájlt létrehozni\n"
|
||||||
|
|
||||||
|
#, c-format
|
||||||
|
msgid "%sNew name is the same as old name"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#, fuzzy, c-format
|
||||||
|
msgid "%sTheme \"%s\" already exists"
|
||||||
|
msgstr "%s az ignore már létezik\n"
|
||||||
|
|
||||||
|
#, fuzzy, c-format
|
||||||
|
msgid "%sFailed to rename theme \"%s\" to \"%s\""
|
||||||
|
msgstr "%s ismeretlen opció a \"%s\" parancsnak\n"
|
||||||
|
|
||||||
|
#, fuzzy, c-format
|
||||||
|
msgid "Theme \"%s\" renamed to \"%s\""
|
||||||
|
msgstr "a felhasználók le lettek tiltva"
|
||||||
|
|
||||||
|
#, fuzzy, c-format
|
||||||
|
msgid "%sCannot delete built-in theme \"%s\""
|
||||||
|
msgstr "%s nem sikerült a \"%s\" fájlt létrehozni\n"
|
||||||
|
|
||||||
|
#, fuzzy, c-format
|
||||||
|
msgid "%sFailed to delete theme \"%s\""
|
||||||
|
msgstr "Nem sikerült a(z) \"%s\" naplófájlt írni\n"
|
||||||
|
|
||||||
|
#, c-format
|
||||||
|
msgid "Theme deleted: %s"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#, fuzzy, c-format
|
#, fuzzy, c-format
|
||||||
msgid "%sError upgrading WeeChat with file \"%s\":"
|
msgid "%sError upgrading WeeChat with file \"%s\":"
|
||||||
msgstr "WeeChat frissítése...\n"
|
msgstr "WeeChat frissítése...\n"
|
||||||
@@ -5746,7 +6135,7 @@ msgstr " . típus szöveg (értékek: "
|
|||||||
msgid "read - object type"
|
msgid "read - object type"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid "read - bad object type ('object start' expected)"
|
msgid "read - bad object type (\"object start\" expected)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid "read - object id"
|
msgid "read - object id"
|
||||||
@@ -5861,117 +6250,40 @@ msgstr ""
|
|||||||
msgid "End of URL transfer '%s', transfer stopped"
|
msgid "End of URL transfer '%s', transfer stopped"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#. TRANSLATORS: "%s %s" after "compiled on" is date and time
|
|
||||||
#, fuzzy, c-format
|
|
||||||
msgid ""
|
|
||||||
"WeeChat %s Copyright %s, compiled on %s %s\n"
|
|
||||||
"Developed by Sébastien Helleu <flashcode@flashtux.org> - %s"
|
|
||||||
msgstr ""
|
|
||||||
"%s Copyright (C) 2003-2010, fordítva: %s %s\n"
|
|
||||||
"Fejlesztő: Sébastien Helleu <flashcode@flashtux.org> - %s"
|
|
||||||
|
|
||||||
#, c-format
|
|
||||||
msgid "Usage: %s [option...] [plugin:option...]\n"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#, fuzzy
|
|
||||||
msgid ""
|
|
||||||
" -a, --no-connect disable auto-connect to servers at startup\n"
|
|
||||||
" -c, --colors display default colors in terminal and exit\n"
|
|
||||||
" -d, --dir <path> force a single WeeChat home directory\n"
|
|
||||||
" or 5 different directories separated by colons "
|
|
||||||
"(in this order: config, data, state, cache, runtime)\n"
|
|
||||||
" (environment variable WEECHAT_HOME is read if "
|
|
||||||
"this option is not given)\n"
|
|
||||||
" -t, --temp-dir create a temporary WeeChat home directory and "
|
|
||||||
"delete it on exit\n"
|
|
||||||
" (incompatible with option \"-d\")\n"
|
|
||||||
" -h, --help display this help and exit\n"
|
|
||||||
" -i, --build-info display build information and exit\n"
|
|
||||||
" -l, --license display WeeChat license and exit\n"
|
|
||||||
" -p, --no-plugin don't load any plugin at startup\n"
|
|
||||||
" -P, --plugins <plugins> load only these plugins at startup\n"
|
|
||||||
" (see /help weechat.plugin.autoload)\n"
|
|
||||||
" -r, --run-command <cmd> run command(s) after startup;\n"
|
|
||||||
" many commands can be separated by semicolons and "
|
|
||||||
"are evaluated,\n"
|
|
||||||
" this option can be given multiple times\n"
|
|
||||||
" -s, --no-script don't load any script at startup\n"
|
|
||||||
" --upgrade upgrade WeeChat using session files (see /help "
|
|
||||||
"upgrade in WeeChat)\n"
|
|
||||||
" -v, --version display WeeChat version and exit\n"
|
|
||||||
" plugin:option option for plugin (see man weechat)\n"
|
|
||||||
msgstr ""
|
|
||||||
" -a, --no-connect automatikus csatlakozás a szerverekhez tiltása\n"
|
|
||||||
" -c, --config beállítófájl opcióinak mutatása\n"
|
|
||||||
" -d, --dir <path> a WeeChat saját könyvtára (alapértelmezett: "
|
|
||||||
"~/.weechat)\n"
|
|
||||||
" -f, --key-functions WeeChat billentyűparancsok mutatása\n"
|
|
||||||
" -h, --help ez a segítség\n"
|
|
||||||
" -i, --irc-commands IRC parancsok mutatása\n"
|
|
||||||
" -k, --keys alapértelmezett WeeChat billentyűk\n"
|
|
||||||
" -l, --license WeeChat licenc\n"
|
|
||||||
" -p, --no-plugin nem tölt be modulokat induláskor\n"
|
|
||||||
" -v, --version WeeChat verziójának mutatása\n"
|
|
||||||
" -w, --weechat-commands WeeChat parancsok mutatása\n"
|
|
||||||
|
|
||||||
msgid "Extra options in headless mode:\n"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
msgid ""
|
|
||||||
" --doc-gen <path> generate files to build documentation and exit\n"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
msgid ""
|
|
||||||
" --daemon run WeeChat as a daemon (fork, new process group, "
|
|
||||||
"file descriptors closed);\n"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
msgid ""
|
|
||||||
" (by default in headless mode WeeChat is blocking "
|
|
||||||
"and does not run in background)\n"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
msgid ""
|
|
||||||
" --stdout display log messages on standard output instead "
|
|
||||||
"of writing them in log file\n"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
msgid ""
|
|
||||||
" (option ignored if option \"--daemon\" is given)\n"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
msgid ""
|
|
||||||
"Debug options (for tools like valgrind, DO NOT USE IN PRODUCTION):\n"
|
|
||||||
" --no-dlclose do not call function dlclose after plugins are "
|
|
||||||
"unloaded\n"
|
|
||||||
" --no-gnutls disable init/deinit of gnutls\n"
|
|
||||||
" --no-gcrypt disable init/deinit of gcrypt\n"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#, fuzzy, c-format
|
|
||||||
msgid "Error: missing argument for \"%s\" option\n"
|
|
||||||
msgstr "%s hiányzó argumentum a(z) \"%s\" opciónak\n"
|
|
||||||
|
|
||||||
msgid "WeeChat is running in headless mode (ctrl-c to quit)."
|
msgid "WeeChat is running in headless mode (ctrl-c to quit)."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Welcome to WeeChat!"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid ""
|
msgid ""
|
||||||
"Welcome to WeeChat!\n"
|
|
||||||
"\n"
|
|
||||||
"If you are discovering WeeChat, it is recommended to read at least the "
|
"If you are discovering WeeChat, it is recommended to read at least the "
|
||||||
"quickstart guide, and the user's guide if you have some time; they explain "
|
"quickstart guide, and the user's guide if you have some time; they explain "
|
||||||
"main WeeChat concepts.\n"
|
"main WeeChat concepts."
|
||||||
"All WeeChat docs are available at: https://weechat.org/doc/\n"
|
msgstr ""
|
||||||
"\n"
|
|
||||||
|
#, c-format
|
||||||
|
msgid "All WeeChat docs are available at: %s"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid ""
|
||||||
"Moreover, there is inline help with /help on all commands and options (use "
|
"Moreover, there is inline help with /help on all commands and options (use "
|
||||||
"Tab key to complete the name).\n"
|
"Tab key to complete the name)."
|
||||||
"The command /fset can help to customize WeeChat.\n"
|
msgstr ""
|
||||||
"\n"
|
|
||||||
|
msgid "The command /fset can help to customize WeeChat."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid ""
|
||||||
"You can add and connect to an IRC server with /server and /connect commands "
|
"You can add and connect to an IRC server with /server and /connect commands "
|
||||||
"(see /help server)."
|
"(see /help server)."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
msgid ""
|
||||||
|
"The \"light\" theme will be automatically applied. Use /theme reset to "
|
||||||
|
"switch back to the default dark theme."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#. TRANSLATORS: the "under %s" can be "under screen" or "under tmux"
|
#. TRANSLATORS: the "under %s" can be "under screen" or "under tmux"
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
@@ -6656,7 +6968,7 @@ msgstr ""
|
|||||||
msgid ""
|
msgid ""
|
||||||
" - ${index_displayed}: index of line displayed in the bar item (starts at "
|
" - ${index_displayed}: index of line displayed in the bar item (starts at "
|
||||||
"0, only buffers displayed increment this index, see option "
|
"0, only buffers displayed increment this index, see option "
|
||||||
"buflist.look.display_conditions"
|
"buflist.look.display_conditions)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#, fuzzy
|
#, fuzzy
|
||||||
@@ -7457,7 +7769,8 @@ msgstr "szerver konfigurációs fájljának újraolvastatása"
|
|||||||
|
|
||||||
msgid ""
|
msgid ""
|
||||||
"> `t:xxx`: show only type \"xxx\" (bool/int/str/col/enum or boolean/integer/"
|
"> `t:xxx`: show only type \"xxx\" (bool/int/str/col/enum or boolean/integer/"
|
||||||
"string/color/enum)"
|
"string/color/enum); the special value \"themable\" can be used to show all "
|
||||||
|
"options that can be used in themes, regardless of type"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid "> `d`: show only changed options"
|
msgid "> `d`: show only changed options"
|
||||||
@@ -8183,7 +8496,7 @@ msgid "%s%s: not connected to server \"%s\"!"
|
|||||||
msgstr "%s nincs csatlakozva a \"%s\" szerverhez!\n"
|
msgstr "%s nincs csatlakozva a \"%s\" szerverhez!\n"
|
||||||
|
|
||||||
#, fuzzy, c-format
|
#, fuzzy, c-format
|
||||||
msgid "%s: auto-reconnection is cancelled"
|
msgid "%s: auto-reconnection is canceled"
|
||||||
msgstr "automata újracsatlakozás megszakítva\n"
|
msgstr "automata újracsatlakozás megszakítva\n"
|
||||||
|
|
||||||
#, fuzzy, c-format
|
#, fuzzy, c-format
|
||||||
@@ -8344,6 +8657,12 @@ msgid_plural "seconds"
|
|||||||
msgstr[0] "másodperc"
|
msgstr[0] "másodperc"
|
||||||
msgstr[1] "másodperc"
|
msgstr[1] "másodperc"
|
||||||
|
|
||||||
|
#, fuzzy
|
||||||
|
msgid "millisecond"
|
||||||
|
msgid_plural "milliseconds"
|
||||||
|
msgstr[0] "másodperc"
|
||||||
|
msgstr[1] "másodperc"
|
||||||
|
|
||||||
#, fuzzy
|
#, fuzzy
|
||||||
msgid "minute"
|
msgid "minute"
|
||||||
msgid_plural "minutes"
|
msgid_plural "minutes"
|
||||||
@@ -8499,7 +8818,7 @@ msgstr "CTCP üzenet küldése az összes csatlakoztatott szerver összes szobá
|
|||||||
#, fuzzy
|
#, fuzzy
|
||||||
msgid ""
|
msgid ""
|
||||||
"[-current] [-parted|-all] [-exclude=<channel>[,<channel>...]] <command> || [-"
|
"[-current] [-parted|-all] [-exclude=<channel>[,<channel>...]] <command> || [-"
|
||||||
"current] [-parted|-all] -include=<channel>[,<channel>...] <command>"
|
"current] [-parted|-all] [-include=<channel>[,<channel>...]] <command>"
|
||||||
msgstr "[alias_név [parancs [paraméterek]]]"
|
msgstr "[alias_név [parancs [paraméterek]]]"
|
||||||
|
|
||||||
#, fuzzy
|
#, fuzzy
|
||||||
@@ -8589,8 +8908,8 @@ msgstr "CTCP üzenet küldése az összes csatlakoztatott szerver összes szobá
|
|||||||
#. TRANSLATORS: only text between angle brackets (eg: "<name>") may be translated
|
#. TRANSLATORS: only text between angle brackets (eg: "<name>") may be translated
|
||||||
#, fuzzy
|
#, fuzzy
|
||||||
msgid ""
|
msgid ""
|
||||||
"[-current] [-exclude=<nick>[,<nick>...]] <command> || [-current] "
|
"[-current] [-exclude=<nick>[,<nick>...]] <command> || [-current] [-"
|
||||||
"-include=<nick>[,<nick>...] <command>"
|
"include=<nick>[,<nick>...]] <command>"
|
||||||
msgstr "[alias_név [parancs [paraméterek]]]"
|
msgstr "[alias_név [parancs [paraméterek]]]"
|
||||||
|
|
||||||
#, fuzzy
|
#, fuzzy
|
||||||
@@ -8639,10 +8958,11 @@ msgid "execute a command on all connected servers"
|
|||||||
msgstr "üzenet küldése az összes csatlakoztatott szerver összes szobájába"
|
msgstr "üzenet küldése az összes csatlakoztatott szerver összes szobájába"
|
||||||
|
|
||||||
#. TRANSLATORS: only text between angle brackets (eg: "<name>") may be translated
|
#. TRANSLATORS: only text between angle brackets (eg: "<name>") may be translated
|
||||||
|
#, fuzzy
|
||||||
msgid ""
|
msgid ""
|
||||||
"[-exclude=<server>[,<server>...]] <command> || -include=<server>[,"
|
"[-exclude=<server>[,<server>...]] <command> || [-include=<server>[,"
|
||||||
"<server>...] <command>"
|
"<server>...]] <command>"
|
||||||
msgstr ""
|
msgstr "[alias_név [parancs [paraméterek]]]"
|
||||||
|
|
||||||
msgid "raw[-exclude]: exclude some servers (wildcard \"*\" is allowed)"
|
msgid "raw[-exclude]: exclude some servers (wildcard \"*\" is allowed)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@@ -8791,7 +9111,7 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid ""
|
msgid ""
|
||||||
"raw[ack]: acknowledge capabilities which require client-side acknowledgement"
|
"raw[ack]: acknowledge capabilities which require client-side acknowledgment"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#, fuzzy
|
#, fuzzy
|
||||||
@@ -10763,8 +11083,9 @@ msgstr ""
|
|||||||
msgid ""
|
msgid ""
|
||||||
"comma-separated list of fields to sort channels (see /help list for a list "
|
"comma-separated list of fields to sort channels (see /help list for a list "
|
||||||
"of fields); char \"-\" can be used before field to reverse order, char \"~\" "
|
"of fields); char \"-\" can be used before field to reverse order, char \"~\" "
|
||||||
"can be used to do a case-insensitive comparison; example: \"-users,~name\" "
|
"can be used to do a case-insensitive comparison; example: \"-users,~name2\" "
|
||||||
"for biggest channels first then case-insensitive sort on name"
|
"for biggest channels first then case-insensitive sort on channel name "
|
||||||
|
"without prefix"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#, fuzzy
|
#, fuzzy
|
||||||
@@ -11214,7 +11535,7 @@ msgstr "cél: szerver neve"
|
|||||||
msgid "get nick from IRC host"
|
msgid "get nick from IRC host"
|
||||||
msgstr "név vagy gép letiltása"
|
msgstr "név vagy gép letiltása"
|
||||||
|
|
||||||
msgid "IRC host (like `:nick!name@server.com`)"
|
msgid "IRC host (like `:nick!name@server`)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid ""
|
msgid ""
|
||||||
@@ -11448,8 +11769,8 @@ msgstr "Ez az ablak nem egy szoba!\n"
|
|||||||
|
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"%d channels (total: %d) | Filter: %s | Sort: %s | Key(input): ctrl+j=join "
|
"%d channels (total: %d) | Filter: %s | Sort: %s | Keys: ctrl+j=join channel "
|
||||||
"channel, ($)=refresh, (q)=close buffer"
|
"| Input: $=refresh, s:x,y=sort, words=filter, *=reset filter, q=close buffer"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid "Empty list of channels, try \"$\" to refresh list"
|
msgid "Empty list of channels, try \"$\" to refresh list"
|
||||||
@@ -12567,7 +12888,7 @@ msgid ""
|
|||||||
"and the current file is renamed with extension .1; an integer number with a "
|
"and the current file is renamed with extension .1; an integer number with a "
|
||||||
"suffix is allowed: b = bytes (default if no unit given), k = kilobytes, m = "
|
"suffix is allowed: b = bytes (default if no unit given), k = kilobytes, m = "
|
||||||
"megabytes, g = gigabytes, t = terabytes; example: \"2g\" causes a rotation "
|
"megabytes, g = gigabytes, t = terabytes; example: \"2g\" causes a rotation "
|
||||||
"if the file size is > 2,000,000,000 bytes; if set to \"0\", no rotation is "
|
"if the file size is greater than 2 GB; if set to \"0\", no rotation is "
|
||||||
"performed (unlimited log size); WARNING: before changing this option, you "
|
"performed (unlimited log size); WARNING: before changing this option, you "
|
||||||
"should first set the compression type via option "
|
"should first set the compression type via option "
|
||||||
"logger.file.rotation_compression_type"
|
"logger.file.rotation_compression_type"
|
||||||
@@ -13898,7 +14219,7 @@ msgid "%s%s: no connection to remote relay \"%s\""
|
|||||||
msgstr "%s nincs csatlakozva a \"%s\" szerverhez!\n"
|
msgstr "%s nincs csatlakozva a \"%s\" szerverhez!\n"
|
||||||
|
|
||||||
#, fuzzy, c-format
|
#, fuzzy, c-format
|
||||||
msgid "remote[%s]: auto-reconnection is cancelled"
|
msgid "remote[%s]: auto-reconnection is canceled"
|
||||||
msgstr "automata újracsatlakozás megszakítva\n"
|
msgstr "automata újracsatlakozás megszakítva\n"
|
||||||
|
|
||||||
#, fuzzy, c-format
|
#, fuzzy, c-format
|
||||||
@@ -14324,21 +14645,21 @@ msgstr ""
|
|||||||
#, fuzzy
|
#, fuzzy
|
||||||
msgid ""
|
msgid ""
|
||||||
"comma separated list of hash algorithms used for password authentication in "
|
"comma separated list of hash algorithms used for password authentication in "
|
||||||
"weechat protocol, among these values: \"plain\" (password in plain text, not "
|
"\"api\" and \"weechat\" protocols, among these values: \"plain\" (password "
|
||||||
"hashed), \"sha256\", \"sha512\", \"pbkdf2+sha256\", \"pbkdf2+sha512\"), "
|
"in plain text, not hashed), \"sha256\", \"sha512\", \"pbkdf2+sha256\", "
|
||||||
"\"*\" means all algorithms, a name beginning with \"!\" is a negative value "
|
"\"pbkdf2+sha512\"), \"*\" means all algorithms, a name beginning with \"!\" "
|
||||||
"to prevent an algorithm from being used, wildcard \"*\" is allowed in names "
|
"is a negative value to prevent an algorithm from being used, wildcard \"*\" "
|
||||||
"(examples: \"*\", \"pbkdf2*\", \"*,!plain\")"
|
"is allowed in names (examples: \"*\", \"pbkdf2*\", \"*,!plain\")"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"automatikusan betöltendő modulok vesszővel elválasztott listája, \"*\" "
|
"automatikusan betöltendő modulok vesszővel elválasztott listája, \"*\" "
|
||||||
"esetén az összes fellelt modul (az elnevezés lehet részleges, például a "
|
"esetén az összes fellelt modul (az elnevezés lehet részleges, például a "
|
||||||
"\"perl\" elegendő \"libperl.so\" helyett)"
|
"\"perl\" elegendő \"libperl.so\" helyett)"
|
||||||
|
|
||||||
msgid ""
|
msgid ""
|
||||||
"number of iterations asked to the client in weechat protocol when a hashed "
|
"number of iterations asked to the client in \"api\" and \"weechat\" "
|
||||||
"password with algorithm PBKDF2 is used for authentication; more iterations "
|
"protocols when a hashed password with algorithm PBKDF2 is used for "
|
||||||
"is better in term of security but is slower to compute; this number should "
|
"authentication; more iterations is better in term of security but is slower "
|
||||||
"not be too high if your CPU is slow"
|
"to compute; this number should not be too high if your CPU is slow"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid ""
|
msgid ""
|
||||||
@@ -14371,6 +14692,11 @@ msgid ""
|
|||||||
"1 are recommended values)"
|
"1 are recommended values)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
msgid ""
|
||||||
|
"permissions for the Unix socket, as octal value (see man chmod); it must be "
|
||||||
|
"a number with 3 digits, each between 0 and 7"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid ""
|
msgid ""
|
||||||
"POSIX extended regular expression with origins allowed in websockets (case-"
|
"POSIX extended regular expression with origins allowed in websockets (case-"
|
||||||
"insensitive, use \"(?-i)\" at beginning to make it case-sensitive), example: "
|
"insensitive, use \"(?-i)\" at beginning to make it case-sensitive), example: "
|
||||||
@@ -14472,7 +14798,7 @@ msgstr "Nincs szerver.\n"
|
|||||||
#. TRANSLATORS: please do not translate the status names, they must be used in English
|
#. TRANSLATORS: please do not translate the status names, they must be used in English
|
||||||
msgid ""
|
msgid ""
|
||||||
"protocol,status (both are optional, for each argument \"*\" means all; "
|
"protocol,status (both are optional, for each argument \"*\" means all; "
|
||||||
"protocols: irc, weechat; statuses: connecting, waiting_auth, connected, "
|
"protocols: api, irc, weechat; statuses: connecting, waiting_auth, connected, "
|
||||||
"auth_failed, disconnected)"
|
"auth_failed, disconnected)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@@ -14593,6 +14919,10 @@ msgstr "%s nem sikerült a csatornát létrehozni\n"
|
|||||||
msgid "%s%s: cannot \"bind\" on port %d (%s): error %d %s"
|
msgid "%s%s: cannot \"bind\" on port %d (%s): error %d %s"
|
||||||
msgstr "%s nem sikerült a csatornát létrehozni\n"
|
msgstr "%s nem sikerült a csatornát létrehozni\n"
|
||||||
|
|
||||||
|
#, fuzzy, c-format
|
||||||
|
msgid "%s%s: warning: failed to set permissions on path %s (%s): error %d %s"
|
||||||
|
msgstr "%s nem sikerült a csatornát létrehozni\n"
|
||||||
|
|
||||||
#, fuzzy, c-format
|
#, fuzzy, c-format
|
||||||
msgid "%s%s: cannot \"listen\" on path %s (%s): error %d %s"
|
msgid "%s%s: cannot \"listen\" on path %s (%s): error %d %s"
|
||||||
msgstr "%s nem sikerült a csatornát létrehozni\n"
|
msgstr "%s nem sikerült a csatornát létrehozni\n"
|
||||||
@@ -14629,7 +14959,7 @@ msgstr ""
|
|||||||
msgid "%s%s: not enough memory for listening on new port"
|
msgid "%s%s: not enough memory for listening on new port"
|
||||||
msgstr "%s nincs elegendő memória új DCC számára\n"
|
msgstr "%s nincs elegendő memória új DCC számára\n"
|
||||||
|
|
||||||
msgid "Relay WeeChat data to remote application (irc/weechat protocols)"
|
msgid "Relay WeeChat data to remote applications"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#, fuzzy
|
#, fuzzy
|
||||||
@@ -14872,9 +15202,9 @@ msgstr ""
|
|||||||
|
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"%d/%d scripts (filter: %s) | Sort: %s | Alt+key/input: i=install, r=remove, "
|
"%d/%d scripts | Filter: %s | Sort: %s | Alt+key/input: i=install, r=remove, "
|
||||||
"l=load, L=reload, u=unload, A=autoload, h=(un)hold, v=view script | Input: "
|
"l=load, L=reload, u=unload, A=autoload, h=(un)hold, v=view script | Input: "
|
||||||
"q=close, $=refresh, s:x,y=sort, words=filter, *=reset filter | Mouse: "
|
"$=refresh, s:x,y=sort, words=filter, *=reset filter, q=close buffer | Mouse: "
|
||||||
"left=select, right=install/remove"
|
"left=select, right=install/remove"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@@ -15228,6 +15558,9 @@ msgstr "FIFO cső bezárva\n"
|
|||||||
msgid "script name with extension"
|
msgid "script name with extension"
|
||||||
msgstr "Aliaszok listája:\n"
|
msgstr "Aliaszok listája:\n"
|
||||||
|
|
||||||
|
msgid "comma-separated list of plugin:extension with supported languages"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "script name with extension (wildcard \"*\" is allowed) (optional)"
|
msgid "script name with extension (wildcard \"*\" is allowed) (optional)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@@ -15821,7 +16154,9 @@ msgstr ""
|
|||||||
msgid "> type `command_run`: command(s) (required)"
|
msgid "> type `command_run`: command(s) (required)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid "> type `timer`: interval (required), align on second, max calls"
|
msgid ""
|
||||||
|
"> type `timer`: interval (required, in milliseconds), align on second, max "
|
||||||
|
"calls"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid "> type `config`: name(s) of option (required)"
|
msgid "> type `config`: name(s) of option (required)"
|
||||||
@@ -16167,6 +16502,11 @@ msgid ""
|
|||||||
"truncate content)"
|
"truncate content)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
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 ""
|
||||||
|
|
||||||
msgid "Typing status of users"
|
msgid "Typing status of users"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@@ -16313,8 +16653,9 @@ msgstr "nem vár ACK válaszra fájl küldésekor"
|
|||||||
|
|
||||||
#, fuzzy
|
#, fuzzy
|
||||||
msgid ""
|
msgid ""
|
||||||
"IP or DNS address used for sending and passively receiving files/chats (if "
|
"IP or DNS address used for sending and passively receiving files/chats; if "
|
||||||
"empty, local interface IP is used)"
|
"empty, local interface IP is used (note: content is evaluated, see /help "
|
||||||
|
"eval)"
|
||||||
msgstr "kimenő dcc forgalom IP/DNS-címe (ha üres, a helyi interfész IP-címe)"
|
msgstr "kimenő dcc forgalom IP/DNS-címe (ha üres, a helyi interfész IP-címe)"
|
||||||
|
|
||||||
#, fuzzy
|
#, fuzzy
|
||||||
|
|||||||
@@ -22,16 +22,171 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: WeeChat\n"
|
"Project-Id-Version: WeeChat\n"
|
||||||
"Report-Msgid-Bugs-To: flashcode@flashtux.org\n"
|
"Report-Msgid-Bugs-To: flashcode@flashtux.org\n"
|
||||||
"POT-Creation-Date: 2026-03-16 13:17+0100\n"
|
"POT-Creation-Date: 2026-07-05 12:20+0200\n"
|
||||||
"PO-Revision-Date: 2025-10-27 08:27+0100\n"
|
"PO-Revision-Date: 2026-07-05 12:28+0200\n"
|
||||||
"Last-Translator: Esteban I. Ruiz Moreno <exio4.com@gmail.com>\n"
|
"Last-Translator: Esteban I. Ruiz Moreno <exio4.com@gmail.com>\n"
|
||||||
"Language-Team: weechat-dev <weechat-dev@nongnu.org>\n"
|
"Language-Team: Italian <weechat-dev@nongnu.org>\n"
|
||||||
"Language: it\n"
|
"Language: it\n"
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
|
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
|
||||||
|
|
||||||
|
#. TRANSLATORS: command line option "-a", "--no-connect"
|
||||||
|
#, fuzzy
|
||||||
|
#| msgid "%s%s: unable to connect to sender"
|
||||||
|
msgid "disable auto-connect to servers at startup"
|
||||||
|
msgstr "%s%s: impossibile connettersi al mittente"
|
||||||
|
|
||||||
|
#. TRANSLATORS: command line option "-c", "--colors"
|
||||||
|
msgid "display default colors in terminal and exit"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. TRANSLATORS: only "<path>" may be translated
|
||||||
|
msgid "-d, --dir <path>"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. TRANSLATORS: command line option "-d", "--dir <path>"
|
||||||
|
msgid ""
|
||||||
|
"force a single WeeChat home directory or 5 different directories separated "
|
||||||
|
"by colons (in this order: config, data, state, cache, runtime) (environment "
|
||||||
|
"variable WEECHAT_HOME is read if this option is not given)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. TRANSLATORS: command line option "-t", "--temp-dir"
|
||||||
|
msgid ""
|
||||||
|
"create a temporary WeeChat home directory and delete it on exit "
|
||||||
|
"(incompatible with option \"-d\")"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. TRANSLATORS: command line option "-h", "--help"
|
||||||
|
#, fuzzy
|
||||||
|
#| msgid "use same nick color for channel and private"
|
||||||
|
msgid "display this help and exit"
|
||||||
|
msgstr "usa lo stesso colore del nick per canale e privato"
|
||||||
|
|
||||||
|
#. TRANSLATORS: command line option "-i", "--build-info"
|
||||||
|
msgid "display build information and exit"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. TRANSLATORS: command line option "-l", "--license"
|
||||||
|
#, fuzzy
|
||||||
|
#| msgid "display WeeChat logo at startup"
|
||||||
|
msgid "display WeeChat license and exit"
|
||||||
|
msgstr "mostra il logo di WeeChat all'avvio"
|
||||||
|
|
||||||
|
#. TRANSLATORS: command line option "-p", "--no-plugin"
|
||||||
|
#, fuzzy
|
||||||
|
#| msgid "display WeeChat logo at startup"
|
||||||
|
msgid "don't load any plugin at startup"
|
||||||
|
msgstr "mostra il logo di WeeChat all'avvio"
|
||||||
|
|
||||||
|
#. TRANSLATORS: only "<plugins>" may be translated
|
||||||
|
msgid "-P, --plugins <plugins>"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. TRANSLATORS: command line option "-P", "--plugins <plugins>"
|
||||||
|
msgid "load only these plugins at startup (see /help weechat.plugin.autoload)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. TRANSLATORS: only "<cmd>" may be translated (please keep it short)
|
||||||
|
msgid "-r, --run-command <cmd>"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. TRANSLATORS: command line option "-r", "--run-command <cmd>"
|
||||||
|
#, fuzzy
|
||||||
|
msgid ""
|
||||||
|
"run command(s) after startup; many commands can be separated by semicolons "
|
||||||
|
"and are evaluated, this option can be given multiple times"
|
||||||
|
msgstr ""
|
||||||
|
"comando eseguito all'avvio di WeeChat, dopo il caricamento dei plugin (nota: "
|
||||||
|
"il contenuto viene valutato, consultare /help eval)"
|
||||||
|
|
||||||
|
#. TRANSLATORS: command line option "-s", "--no-script"
|
||||||
|
msgid "don't load any script at startup"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. TRANSLATORS: command line option "--upgrade"
|
||||||
|
#, fuzzy
|
||||||
|
msgid "upgrade WeeChat using session files (see /help upgrade in WeeChat)"
|
||||||
|
msgstr "%sErrore: impossibile salvare la sessione su file"
|
||||||
|
|
||||||
|
#. TRANSLATORS: command line option "-v", "--version"
|
||||||
|
#, fuzzy
|
||||||
|
#| msgid "display WeeChat version at startup"
|
||||||
|
msgid "display WeeChat version and exit"
|
||||||
|
msgstr "mostra la versione di WeeChat all'avvio"
|
||||||
|
|
||||||
|
#. TRANSLATORS: command line option: "plugin" and "option" may be translated
|
||||||
|
#, fuzzy
|
||||||
|
#| msgid "plugin pointer (optional)"
|
||||||
|
msgid "plugin:option"
|
||||||
|
msgstr "puntatore al plugin (opzionale)"
|
||||||
|
|
||||||
|
#. TRANSLATORS: command line option "plugin:option"
|
||||||
|
msgid "option for plugin (see man weechat)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. TRANSLATORS: only "<path>" may be translated
|
||||||
|
msgid "--doc-gen <path>"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. TRANSLATORS: command line option "--doc-gen <path>"
|
||||||
|
msgid "generate files to build documentation and exit"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. TRANSLATORS: command line option "--daemon"
|
||||||
|
msgid ""
|
||||||
|
"run WeeChat as a daemon (fork, new process group, file descriptors closed); "
|
||||||
|
"by default in headless mode WeeChat is blocking and does not run in "
|
||||||
|
"background"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. TRANSLATORS: command line option "--stdout"
|
||||||
|
msgid ""
|
||||||
|
"display log messages on standard output instead of writing them in log file "
|
||||||
|
"(option ignored if option \"--daemon\" is given)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. TRANSLATORS: command line option "--no-dlclose"
|
||||||
|
msgid "do not call function dlclose after plugins are unloaded"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. TRANSLATORS: command line option "--no-gnutls"
|
||||||
|
msgid "disable init/deinit of gnutls"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. TRANSLATORS: command line option "--no-gcrypt"
|
||||||
|
msgid "disable init/deinit of gcrypt"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. TRANSLATORS: "%s %s" after "compiled on" is date and time
|
||||||
|
#, c-format
|
||||||
|
msgid ""
|
||||||
|
"WeeChat %s Copyright %s, compiled on %s %s\n"
|
||||||
|
"Developed by %s <%s> - %s"
|
||||||
|
msgstr ""
|
||||||
|
"WeeChat %s Copyright %s, compilato il %s %s\n"
|
||||||
|
"Sviluppato da %s <%s> - %s"
|
||||||
|
|
||||||
|
msgid "Usage:"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#, fuzzy
|
||||||
|
#| msgid "Usage: %s [option...] [plugin:option...]\n"
|
||||||
|
msgid "[option...] [plugin:option...]"
|
||||||
|
msgstr "Uso: %s [opzione...] [plugin:opzione...]\n"
|
||||||
|
|
||||||
|
msgid "Extra options in headless mode:"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Debug options (for tools like valgrind, DO NOT USE IN PRODUCTION):"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#, c-format
|
||||||
|
msgid "Error: missing argument for \"%s\" option\n"
|
||||||
|
msgstr "Errore: argomento mancante per l'opzione \"%s\"\n"
|
||||||
|
|
||||||
msgid "List of bars:"
|
msgid "List of bars:"
|
||||||
msgstr "Elenco delle barre:"
|
msgstr "Elenco delle barre:"
|
||||||
|
|
||||||
@@ -138,9 +293,9 @@ msgstr "%sErrore: finestra non trovata per il comando \"%s\""
|
|||||||
msgid "%sUnable to scroll bar \"%s\""
|
msgid "%sUnable to scroll bar \"%s\""
|
||||||
msgstr "%sErrore: impossibile scorrere la barra \"%s\""
|
msgstr "%sErrore: impossibile scorrere la barra \"%s\""
|
||||||
|
|
||||||
#, fuzzy, c-format
|
#, c-format
|
||||||
msgid "%sBuffer number \"%d\" is out of range (it must be between 1 and %d)"
|
msgid "%sBuffer number %d is out of range (it must be between 1 and %d)"
|
||||||
msgstr "%sNumero colore \"%s\" non valido (deve essere compresto tra %d e %d)"
|
msgstr ""
|
||||||
|
|
||||||
msgid "Buffers list:"
|
msgid "Buffers list:"
|
||||||
msgstr "Elenco buffer:"
|
msgstr "Elenco buffer:"
|
||||||
@@ -496,7 +651,7 @@ msgstr ""
|
|||||||
"sicurezza)"
|
"sicurezza)"
|
||||||
|
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%d new key added"
|
msgid "%d new key added (context: \"%s\")"
|
||||||
msgid_plural "%d new keys added (context: \"%s\")"
|
msgid_plural "%d new keys added (context: \"%s\")"
|
||||||
msgstr[0] "%d nuovo tasto aggiunto (contesto: \"%s\")"
|
msgstr[0] "%d nuovo tasto aggiunto (contesto: \"%s\")"
|
||||||
msgstr[1] "%d nuovi tasti aggiunti (contesto: \"%s\")"
|
msgstr[1] "%d nuovi tasti aggiunti (contesto: \"%s\")"
|
||||||
@@ -844,6 +999,54 @@ msgid "%sFunction \"%s\" is not available on this system"
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"%s: attenzione: il dizionario \"%s\" non è disponibile su questo sistema"
|
"%s: attenzione: il dizionario \"%s\" non è disponibile su questo sistema"
|
||||||
|
|
||||||
|
#, fuzzy
|
||||||
|
msgid "No theme available"
|
||||||
|
msgstr "Variabili"
|
||||||
|
|
||||||
|
msgid "Themes:"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#, c-format
|
||||||
|
msgid " %s %s%s%s (file)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#, fuzzy, c-format
|
||||||
|
#| msgid "%sKey \"%s\" not found"
|
||||||
|
msgid "%sTheme \"%s\" not found"
|
||||||
|
msgstr "%sTasto \"%s\" non trovato"
|
||||||
|
|
||||||
|
#, fuzzy, c-format
|
||||||
|
#| msgid "Option \"%s%s%s\":"
|
||||||
|
msgid "Theme \"%s%s%s\":"
|
||||||
|
msgstr "Opzione \"%s%s%s\":"
|
||||||
|
|
||||||
|
#, fuzzy, c-format
|
||||||
|
#| msgid " file: %s"
|
||||||
|
msgid " source: %s"
|
||||||
|
msgstr " file: %s"
|
||||||
|
|
||||||
|
msgid " source: built-in (in-memory)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#, fuzzy, c-format
|
||||||
|
#| msgid "description"
|
||||||
|
msgid " description: %s"
|
||||||
|
msgstr "descrizione"
|
||||||
|
|
||||||
|
#, fuzzy, c-format
|
||||||
|
#| msgid " file: %s"
|
||||||
|
msgid " date: %s"
|
||||||
|
msgstr " file: %s"
|
||||||
|
|
||||||
|
#, fuzzy, c-format
|
||||||
|
#| msgid "WeeChat version"
|
||||||
|
msgid " WeeChat version: %s"
|
||||||
|
msgstr "versione di WeeChat"
|
||||||
|
|
||||||
|
#, c-format
|
||||||
|
msgid " overrides: %d"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%sFailed to unset option \"%s\""
|
msgid "%sFailed to unset option \"%s\""
|
||||||
msgstr "%sImpossibile disabilitare l'opzione \"%s\""
|
msgstr "%sImpossibile disabilitare l'opzione \"%s\""
|
||||||
@@ -1019,6 +1222,16 @@ msgstr ""
|
|||||||
"messaggio: messaggio di assenza (se non specificato, lo stato di assenza "
|
"messaggio: messaggio di assenza (se non specificato, lo stato di assenza "
|
||||||
"viene rimosso)"
|
"viene rimosso)"
|
||||||
|
|
||||||
|
msgid ""
|
||||||
|
"By default the away status is displayed only locally by the irc plugin (see /"
|
||||||
|
"help irc.look.display_away)."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid ""
|
||||||
|
"This command can be caught by other plugins and scripts (see \"Plugin API "
|
||||||
|
"reference\", function \"hook_command_run\")."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "manage bars"
|
msgid "manage bars"
|
||||||
msgstr "gestione delle barre"
|
msgstr "gestione delle barre"
|
||||||
|
|
||||||
@@ -1119,7 +1332,7 @@ msgstr ""
|
|||||||
|
|
||||||
msgid ""
|
msgid ""
|
||||||
"option: option to change (for options list, look at /set weechat.bar."
|
"option: option to change (for options list, look at /set weechat.bar."
|
||||||
"<barname>.*)"
|
"<bar_name>.*)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#, fuzzy
|
#, fuzzy
|
||||||
@@ -1607,7 +1820,7 @@ msgstr ""
|
|||||||
#. TRANSLATORS: only text between angle brackets (eg: "<name>") may be translated
|
#. TRANSLATORS: only text between angle brackets (eg: "<name>") may be translated
|
||||||
#, fuzzy
|
#, fuzzy
|
||||||
msgid ""
|
msgid ""
|
||||||
"[-n|-s] [-d] <expression> || [-n] [-d [-d]] -c <expression1> <operator> "
|
"[-n|-s] [-e] [-d] <expression> || [-n] [-d [-d]] -c <expression1> <operator> "
|
||||||
"<expression2>"
|
"<expression2>"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"[-n] <espressione> || [-n] -c <espressione1> <operatore> <espressione2>"
|
"[-n] <espressione> || [-n] -c <espressione1> <operatore> <espressione2>"
|
||||||
@@ -1620,6 +1833,9 @@ msgid ""
|
|||||||
"separated by semicolons)"
|
"separated by semicolons)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "raw[-e]: evaluate all commands before executing them"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid ""
|
msgid ""
|
||||||
"raw[-d]: display debug output after evaluation (with two -d: more verbose "
|
"raw[-d]: display debug output after evaluation (with two -d: more verbose "
|
||||||
"debug)"
|
"debug)"
|
||||||
@@ -2165,7 +2381,7 @@ msgstr "visualizza l'aiuto su comandi e opzioni"
|
|||||||
#. TRANSLATORS: only text between angle brackets (eg: "<name>") may be translated
|
#. TRANSLATORS: only text between angle brackets (eg: "<name>") may be translated
|
||||||
#, fuzzy
|
#, fuzzy
|
||||||
#| msgid "-list|-listfull [<plugin> [<plugin>...]] || <command> || <option>"
|
#| msgid "-list|-listfull [<plugin> [<plugin>...]] || <command> || <option>"
|
||||||
msgid "-list|-listfull [<plugin>...]] || <command> || <option>"
|
msgid "-list|-listfull [<plugin>...] || <command> || <option>"
|
||||||
msgstr "-list|-listfull [<plugin> [<plugin>...]] || <comando> || <opzione>"
|
msgstr "-list|-listfull [<plugin> [<plugin>...]] || <comando> || <opzione>"
|
||||||
|
|
||||||
msgid ""
|
msgid ""
|
||||||
@@ -2228,9 +2444,9 @@ msgid "raw[clear]: clear hotlist"
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid ""
|
msgid ""
|
||||||
"level: \"lowest\" to clear only lowest level in hotlist, highest\" to clear "
|
"level: \"lowest\" to clear only lowest level in hotlist, \"highest\" to "
|
||||||
"only highest level in hotlist, or level mask: integer which is a combination "
|
"clear only highest level in hotlist, or level mask: integer which is a "
|
||||||
"of 1=join/part, 2=message, 4=private, 8=highlight"
|
"combination of 1=join/part, 2=message, 4=private, 8=highlight"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid "raw[remove]: remove current buffer from hotlist"
|
msgid "raw[remove]: remove current buffer from hotlist"
|
||||||
@@ -3126,7 +3342,7 @@ msgstr ""
|
|||||||
|
|
||||||
msgid ""
|
msgid ""
|
||||||
"option: option to change (for options list, look at /set weechat.proxy."
|
"option: option to change (for options list, look at /set weechat.proxy."
|
||||||
"<proxyname>.*)"
|
"<proxy_name>.*)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid " add a http proxy, running on local host, port 8888:"
|
msgid " add a http proxy, running on local host, port 8888:"
|
||||||
@@ -3404,20 +3620,20 @@ msgstr ""
|
|||||||
msgid " encrypt libera SASL password:"
|
msgid " encrypt libera SASL password:"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid " /secure set libera mypassword"
|
msgid " /secure set libera my_password"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid " encrypt oftc password for nickserv:"
|
msgid " encrypt oftc password for nickserv:"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid " /secure set oftc mypassword"
|
msgid " /secure set oftc my_password"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid " alias to ghost the nick \"mynick\":"
|
msgid " alias to ghost the nick \"andrew\":"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid ""
|
msgid ""
|
||||||
" /alias add ghost /eval /msg -server libera nickserv ghost mynick $"
|
" /alias add ghost /eval /msg -server libera nickserv ghost andrew $"
|
||||||
"{sec.data.libera}"
|
"{sec.data.libera}"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@@ -3514,6 +3730,78 @@ msgstr ""
|
|||||||
msgid "number: number of processes to clean"
|
msgid "number: number of processes to clean"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#, fuzzy
|
||||||
|
#| msgid "list of bar items"
|
||||||
|
msgid "manage color themes"
|
||||||
|
msgstr "elenco degli elementi barra"
|
||||||
|
|
||||||
|
#. TRANSLATORS: only text between angle brackets (eg: "<name>") may be translated
|
||||||
|
msgid ""
|
||||||
|
"[list [-backups]] || apply <name> || reset || save <name> || rename <old> "
|
||||||
|
"<new> || del <name> || info <name>"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#, fuzzy
|
||||||
|
#| msgid "list of filters"
|
||||||
|
msgid ""
|
||||||
|
"raw[list]: list registered themes and any *.theme files in the WeeChat "
|
||||||
|
"configuration directory; the active theme (matching weechat.look.theme) is "
|
||||||
|
"marked with \"->\""
|
||||||
|
msgstr "elenco dei filtri"
|
||||||
|
|
||||||
|
msgid "raw[-backups]: display backup theme files"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid ""
|
||||||
|
"raw[apply]: apply a theme (set every themable option to the value from the "
|
||||||
|
"theme); if a file named <name>.theme exists in directory \"themes\" it "
|
||||||
|
"shadows any built-in theme of the same name"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid ""
|
||||||
|
"raw[reset]: reset every themable option to its default value (restores the "
|
||||||
|
"original look shipped with WeeChat)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid ""
|
||||||
|
"raw[save]: save current themable options to a file <name>.theme in directory "
|
||||||
|
"\"themes\"; every themable option is written, so the file is self-contained; "
|
||||||
|
"the name must not match a built-in theme or start with \"backup-\""
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#, fuzzy
|
||||||
|
#| msgid "names of filters"
|
||||||
|
msgid "raw[rename]: rename a user theme file"
|
||||||
|
msgstr "nomi dei filtri"
|
||||||
|
|
||||||
|
#, fuzzy
|
||||||
|
#| msgid "get/set channel topic"
|
||||||
|
msgid "raw[del]: delete a user theme file"
|
||||||
|
msgstr "legge/modifica argomento del canale"
|
||||||
|
|
||||||
|
msgid ""
|
||||||
|
"raw[info]: display details on a theme (name, description, creation date, "
|
||||||
|
"WeeChat version, number of option overrides)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#, fuzzy
|
||||||
|
msgid "name: name of a theme"
|
||||||
|
msgstr "abilita il supporto del mouse"
|
||||||
|
|
||||||
|
msgid ""
|
||||||
|
"Themes are named bundles of option overrides. Built-in themes are registered "
|
||||||
|
"in memory by core/plugins/scripts; user themes are read from files in "
|
||||||
|
"directory \"themes\" inside the WeeChat configuration directory."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid ""
|
||||||
|
"By default, `/theme apply` command creates a backup of current themable "
|
||||||
|
"values in directory \"themes\" before applying (file name: \"backup-"
|
||||||
|
"<timestamp>.theme\"); the previous state can be restored with: `/theme apply "
|
||||||
|
"backup-<timestamp>`. This is controlled by the option "
|
||||||
|
"weechat.look.theme_backup."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#, fuzzy
|
#, fuzzy
|
||||||
#| msgid "values for a configuration option"
|
#| msgid "values for a configuration option"
|
||||||
msgid "toggle value of a config option"
|
msgid "toggle value of a config option"
|
||||||
@@ -3680,7 +3968,7 @@ msgstr ""
|
|||||||
msgid "With option \"-quit\", the process is:"
|
msgid "With option \"-quit\", the process is:"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid " 1. close *ALL* connections (irc, xfer, relay, ...)"
|
msgid " 1. close *ALL* connections (irc, xfer, relay, etc.)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#, fuzzy
|
#, fuzzy
|
||||||
@@ -4104,6 +4392,15 @@ msgstr "aree (\"chat\" o nome barra) per il movimento libero del cursore"
|
|||||||
msgid "names of layouts"
|
msgid "names of layouts"
|
||||||
msgstr "nomi dei layout"
|
msgstr "nomi dei layout"
|
||||||
|
|
||||||
|
msgid "names of themes (built-ins + user files + backups)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "names of user theme files (without built-ins and backups)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "names of theme files on disk (user files + backups, no built-ins)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#, fuzzy
|
#, fuzzy
|
||||||
msgid "names of secured data (file sec.conf, section data)"
|
msgid "names of secured data (file sec.conf, section data)"
|
||||||
msgstr "nome dei dati sensibili (file sec.conf, sezione data)"
|
msgstr "nome dei dati sensibili (file sec.conf, sezione data)"
|
||||||
@@ -5151,6 +5448,20 @@ msgstr ""
|
|||||||
msgid "number of spaces used to display tabs in messages"
|
msgid "number of spaces used to display tabs in messages"
|
||||||
msgstr "locale usato per la traduzione dei messaggi"
|
msgstr "locale usato per la traduzione dei messaggi"
|
||||||
|
|
||||||
|
msgid ""
|
||||||
|
"name of the last theme applied with command /theme (set automatically, do "
|
||||||
|
"not change manually); informational only, the theme is not re-applied at "
|
||||||
|
"startup"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid ""
|
||||||
|
"create a backup theme file with the current themable options before applying "
|
||||||
|
"a theme with command /theme; if the backup file cannot be written, the apply "
|
||||||
|
"is aborted (no option is changed); the backup file is written to directory "
|
||||||
|
"\"themes\" inside the WeeChat configuration directory and can be restored "
|
||||||
|
"with the command: `/theme apply backup-<timestamp>`"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid ""
|
msgid ""
|
||||||
"time format for dates converted to strings and displayed in messages (see "
|
"time format for dates converted to strings and displayed in messages (see "
|
||||||
"man strftime for date/time specifiers)"
|
"man strftime for date/time specifiers)"
|
||||||
@@ -6163,6 +6474,109 @@ msgstr "%s: errore: il dizionario \"%s\" non è disponibile su questo sistema"
|
|||||||
msgid "Resource usage (see \"man getrusage\" for help):"
|
msgid "Resource usage (see \"man getrusage\" for help):"
|
||||||
msgstr "Uso della memoria (consultare \"man mallinfo\" per aiuto):"
|
msgstr "Uso della memoria (consultare \"man mallinfo\" per aiuto):"
|
||||||
|
|
||||||
|
msgid "WeeChat default theme for light-background terminals"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Automatic backup"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#, fuzzy, c-format
|
||||||
|
#| msgid "%sKey \"%s\" not found"
|
||||||
|
msgid "%sTheme: option \"%s\" not found, skipped"
|
||||||
|
msgstr "%sTasto \"%s\" non trovato"
|
||||||
|
|
||||||
|
#, fuzzy, c-format
|
||||||
|
#| msgid "%s: script \"%s\" is not installed"
|
||||||
|
msgid "%sTheme: option \"%s\" is not themable, skipped"
|
||||||
|
msgstr "%s: script \"%s\" non installato"
|
||||||
|
|
||||||
|
#, c-format
|
||||||
|
msgid "%s%s: line %d: malformed section header"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#, fuzzy, c-format
|
||||||
|
#| msgid "%sWarning: %s, line %d: unknown section identifier (\"%s\")"
|
||||||
|
msgid "%s%s: line %d: ignoring unknown section \"%s\""
|
||||||
|
msgstr ""
|
||||||
|
"%sAttenzione: %s, riga %d: identificatore di sezione sconosciuto (\"%s\")"
|
||||||
|
|
||||||
|
#, c-format
|
||||||
|
msgid "%s%s: line %d: missing '=' separator"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#, fuzzy, c-format
|
||||||
|
#| msgid "%sWarning: %s, line %d: unknown option for section \"%s\": %s"
|
||||||
|
msgid "%s%s: line %d: ignoring unknown [info] key \"%s\""
|
||||||
|
msgstr ""
|
||||||
|
"%sAttenzione: %s, riga %d: opzione sconosciuta per la sezione \"%s\": %s"
|
||||||
|
|
||||||
|
#, c-format
|
||||||
|
msgid ""
|
||||||
|
"%sUnable to create theme backup; aborting apply (disable option "
|
||||||
|
"weechat.look.theme_backup to force)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#, c-format
|
||||||
|
msgid "Previous state saved as theme \"%s\"; to restore: /theme apply %s"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#, c-format
|
||||||
|
msgid ""
|
||||||
|
"%sUnable to create theme backup; aborting reset (disable option "
|
||||||
|
"weechat.look.theme_backup to force)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#, c-format
|
||||||
|
msgid "%sName \"%s\" is reserved for automatic backups"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#, c-format
|
||||||
|
msgid "%sName \"%s\" is reserved for a built-in theme"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#, fuzzy, c-format
|
||||||
|
#| msgid "%s%s: unable to parse file \"%s\""
|
||||||
|
msgid "%sFailed to save theme \"%s\""
|
||||||
|
msgstr "%s%s: impossibile analizzare il file \"%s\""
|
||||||
|
|
||||||
|
#, fuzzy, c-format
|
||||||
|
#| msgid "Option \"%s%s%s\":"
|
||||||
|
msgid "Theme saved to: %s"
|
||||||
|
msgstr "Opzione \"%s%s%s\":"
|
||||||
|
|
||||||
|
#, fuzzy, c-format
|
||||||
|
msgid "%sCannot rename built-in theme \"%s\""
|
||||||
|
msgstr "%sErrore: impossibile creare il file \"%s\""
|
||||||
|
|
||||||
|
#, c-format
|
||||||
|
msgid "%sNew name is the same as old name"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#, fuzzy, c-format
|
||||||
|
msgid "%sTheme \"%s\" already exists"
|
||||||
|
msgstr "%sErrore: il filtro \"%s\" esiste già"
|
||||||
|
|
||||||
|
#, fuzzy, c-format
|
||||||
|
msgid "%sFailed to rename theme \"%s\" to \"%s\""
|
||||||
|
msgstr "%sErrore: impossibile rinominare il filtro da \"%s\" a \"%s\""
|
||||||
|
|
||||||
|
#, fuzzy, c-format
|
||||||
|
msgid "Theme \"%s\" renamed to \"%s\""
|
||||||
|
msgstr "Filtro \"%s\" rinominato in \"%s\""
|
||||||
|
|
||||||
|
#, fuzzy, c-format
|
||||||
|
msgid "%sCannot delete built-in theme \"%s\""
|
||||||
|
msgstr "%sErrore: impossibile creare il file \"%s\""
|
||||||
|
|
||||||
|
#, fuzzy, c-format
|
||||||
|
#| msgid "%s%s: unable to parse file \"%s\""
|
||||||
|
msgid "%sFailed to delete theme \"%s\""
|
||||||
|
msgstr "%s%s: impossibile analizzare il file \"%s\""
|
||||||
|
|
||||||
|
#, c-format
|
||||||
|
msgid "Theme deleted: %s"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%sError upgrading WeeChat with file \"%s\":"
|
msgid "%sError upgrading WeeChat with file \"%s\":"
|
||||||
msgstr "%sErrore durante l'aggiornamento di WeeChat con il file \"%s\":"
|
msgstr "%sErrore durante l'aggiornamento di WeeChat con il file \"%s\":"
|
||||||
@@ -6202,8 +6616,8 @@ msgstr "scrittura - variabile"
|
|||||||
msgid "read - object type"
|
msgid "read - object type"
|
||||||
msgstr "lettura - tipo oggetto"
|
msgstr "lettura - tipo oggetto"
|
||||||
|
|
||||||
msgid "read - bad object type ('object start' expected)"
|
msgid "read - bad object type (\"object start\" expected)"
|
||||||
msgstr "lettura - tipo oggetto errato ('object start' previsto)"
|
msgstr "lettura - tipo oggetto errato (\"object start\" previsto)"
|
||||||
|
|
||||||
msgid "read - object id"
|
msgid "read - object id"
|
||||||
msgstr "lettura - id oggetto"
|
msgstr "lettura - id oggetto"
|
||||||
@@ -6323,120 +6737,41 @@ msgstr ""
|
|||||||
msgid "End of URL transfer '%s', transfer stopped"
|
msgid "End of URL transfer '%s', transfer stopped"
|
||||||
msgstr "Fine comando '%s', timeout raggiunto (%.1fs)"
|
msgstr "Fine comando '%s', timeout raggiunto (%.1fs)"
|
||||||
|
|
||||||
#. TRANSLATORS: "%s %s" after "compiled on" is date and time
|
|
||||||
#, c-format
|
|
||||||
msgid ""
|
|
||||||
"WeeChat %s Copyright %s, compiled on %s %s\n"
|
|
||||||
"Developed by Sébastien Helleu <flashcode@flashtux.org> - %s"
|
|
||||||
msgstr ""
|
|
||||||
"WeeChat %s Copyright %s, compilato il %s %s\n"
|
|
||||||
"Sviluppato da Sébastien Helleu <flashcode@flashtux.org> - %s"
|
|
||||||
|
|
||||||
#, c-format
|
|
||||||
msgid "Usage: %s [option...] [plugin:option...]\n"
|
|
||||||
msgstr "Uso: %s [opzione...] [plugin:opzione...]\n"
|
|
||||||
|
|
||||||
#, fuzzy
|
|
||||||
msgid ""
|
|
||||||
" -a, --no-connect disable auto-connect to servers at startup\n"
|
|
||||||
" -c, --colors display default colors in terminal and exit\n"
|
|
||||||
" -d, --dir <path> force a single WeeChat home directory\n"
|
|
||||||
" or 5 different directories separated by colons "
|
|
||||||
"(in this order: config, data, state, cache, runtime)\n"
|
|
||||||
" (environment variable WEECHAT_HOME is read if "
|
|
||||||
"this option is not given)\n"
|
|
||||||
" -t, --temp-dir create a temporary WeeChat home directory and "
|
|
||||||
"delete it on exit\n"
|
|
||||||
" (incompatible with option \"-d\")\n"
|
|
||||||
" -h, --help display this help and exit\n"
|
|
||||||
" -i, --build-info display build information and exit\n"
|
|
||||||
" -l, --license display WeeChat license and exit\n"
|
|
||||||
" -p, --no-plugin don't load any plugin at startup\n"
|
|
||||||
" -P, --plugins <plugins> load only these plugins at startup\n"
|
|
||||||
" (see /help weechat.plugin.autoload)\n"
|
|
||||||
" -r, --run-command <cmd> run command(s) after startup;\n"
|
|
||||||
" many commands can be separated by semicolons and "
|
|
||||||
"are evaluated,\n"
|
|
||||||
" this option can be given multiple times\n"
|
|
||||||
" -s, --no-script don't load any script at startup\n"
|
|
||||||
" --upgrade upgrade WeeChat using session files (see /help "
|
|
||||||
"upgrade in WeeChat)\n"
|
|
||||||
" -v, --version display WeeChat version and exit\n"
|
|
||||||
" plugin:option option for plugin (see man weechat)\n"
|
|
||||||
msgstr ""
|
|
||||||
" -a, --no-connect\t disabilita la connessione automatica all'avvio\n"
|
|
||||||
" -c, --colors mostra i colori predefiniti nel terminale\n"
|
|
||||||
" -d, --dir <path> imposta la directory principale di WeeChat "
|
|
||||||
"(predefinita: ~/.weechat)\n"
|
|
||||||
" -h, --help mostra questo aiuto\n"
|
|
||||||
" -l, --license mostra la licenza di WeeChat\n"
|
|
||||||
" -p, --no-plugin non carica i plugin all'avvio\n"
|
|
||||||
" -s, --no-script non carica gli script all'avvio\n"
|
|
||||||
" -r, --run-command esegue uno o più comandi all'avvio\n"
|
|
||||||
"(più comandi vanno separati da punto e virgola)\n"
|
|
||||||
" --upgrade aggiorna WeeChat usando i file di sessione "
|
|
||||||
"(consultare /help upgrade in WeeChat)\n"
|
|
||||||
" -v. --version mostra la versione di WeeChat\n"
|
|
||||||
" plugin:opzione opzione per il plugin (consultare man weechat)\n"
|
|
||||||
|
|
||||||
msgid "Extra options in headless mode:\n"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
msgid ""
|
|
||||||
" --doc-gen <path> generate files to build documentation and exit\n"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
msgid ""
|
|
||||||
" --daemon run WeeChat as a daemon (fork, new process group, "
|
|
||||||
"file descriptors closed);\n"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
msgid ""
|
|
||||||
" (by default in headless mode WeeChat is blocking "
|
|
||||||
"and does not run in background)\n"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
msgid ""
|
|
||||||
" --stdout display log messages on standard output instead "
|
|
||||||
"of writing them in log file\n"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
msgid ""
|
|
||||||
" (option ignored if option \"--daemon\" is given)\n"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
msgid ""
|
|
||||||
"Debug options (for tools like valgrind, DO NOT USE IN PRODUCTION):\n"
|
|
||||||
" --no-dlclose do not call function dlclose after plugins are "
|
|
||||||
"unloaded\n"
|
|
||||||
" --no-gnutls disable init/deinit of gnutls\n"
|
|
||||||
" --no-gcrypt disable init/deinit of gcrypt\n"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#, c-format
|
|
||||||
msgid "Error: missing argument for \"%s\" option\n"
|
|
||||||
msgstr "Errore: argomento mancante per l'opzione \"%s\"\n"
|
|
||||||
|
|
||||||
#, fuzzy
|
#, fuzzy
|
||||||
msgid "WeeChat is running in headless mode (ctrl-c to quit)."
|
msgid "WeeChat is running in headless mode (ctrl-c to quit)."
|
||||||
msgstr "1 se si sta aggiornando WeeChat (comando `/upgrade`)"
|
msgstr "1 se si sta aggiornando WeeChat (comando `/upgrade`)"
|
||||||
|
|
||||||
|
msgid "Welcome to WeeChat!"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid ""
|
msgid ""
|
||||||
"Welcome to WeeChat!\n"
|
|
||||||
"\n"
|
|
||||||
"If you are discovering WeeChat, it is recommended to read at least the "
|
"If you are discovering WeeChat, it is recommended to read at least the "
|
||||||
"quickstart guide, and the user's guide if you have some time; they explain "
|
"quickstart guide, and the user's guide if you have some time; they explain "
|
||||||
"main WeeChat concepts.\n"
|
"main WeeChat concepts."
|
||||||
"All WeeChat docs are available at: https://weechat.org/doc/\n"
|
msgstr ""
|
||||||
"\n"
|
|
||||||
|
#, c-format
|
||||||
|
msgid "All WeeChat docs are available at: %s"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid ""
|
||||||
"Moreover, there is inline help with /help on all commands and options (use "
|
"Moreover, there is inline help with /help on all commands and options (use "
|
||||||
"Tab key to complete the name).\n"
|
"Tab key to complete the name)."
|
||||||
"The command /fset can help to customize WeeChat.\n"
|
msgstr ""
|
||||||
"\n"
|
|
||||||
|
msgid "The command /fset can help to customize WeeChat."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid ""
|
||||||
"You can add and connect to an IRC server with /server and /connect commands "
|
"You can add and connect to an IRC server with /server and /connect commands "
|
||||||
"(see /help server)."
|
"(see /help server)."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
msgid ""
|
||||||
|
"The \"light\" theme will be automatically applied. Use /theme reset to "
|
||||||
|
"switch back to the default dark theme."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#. TRANSLATORS: the "under %s" can be "under screen" or "under tmux"
|
#. TRANSLATORS: the "under %s" can be "under screen" or "under tmux"
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
@@ -7142,7 +7477,7 @@ msgstr ""
|
|||||||
msgid ""
|
msgid ""
|
||||||
" - ${index_displayed}: index of line displayed in the bar item (starts at "
|
" - ${index_displayed}: index of line displayed in the bar item (starts at "
|
||||||
"0, only buffers displayed increment this index, see option "
|
"0, only buffers displayed increment this index, see option "
|
||||||
"buflist.look.display_conditions"
|
"buflist.look.display_conditions)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#, fuzzy
|
#, fuzzy
|
||||||
@@ -7986,7 +8321,8 @@ msgstr "File di configurazione \"%s\" sconosciuto"
|
|||||||
|
|
||||||
msgid ""
|
msgid ""
|
||||||
"> `t:xxx`: show only type \"xxx\" (bool/int/str/col/enum or boolean/integer/"
|
"> `t:xxx`: show only type \"xxx\" (bool/int/str/col/enum or boolean/integer/"
|
||||||
"string/color/enum)"
|
"string/color/enum); the special value \"themable\" can be used to show all "
|
||||||
|
"options that can be used in themes, regardless of type"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid "> `d`: show only changed options"
|
msgid "> `d`: show only changed options"
|
||||||
@@ -8743,7 +9079,7 @@ msgid "%s%s: not connected to server \"%s\"!"
|
|||||||
msgstr "%s%s: non connesso al server \"%s\"!"
|
msgstr "%s%s: non connesso al server \"%s\"!"
|
||||||
|
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%s: auto-reconnection is cancelled"
|
msgid "%s: auto-reconnection is canceled"
|
||||||
msgstr "%s: la riconnessione automatica è annullata"
|
msgstr "%s: la riconnessione automatica è annullata"
|
||||||
|
|
||||||
#, c-format
|
#, c-format
|
||||||
@@ -8913,6 +9249,14 @@ msgid_plural "seconds"
|
|||||||
msgstr[0] "secondo"
|
msgstr[0] "secondo"
|
||||||
msgstr[1] "secondi"
|
msgstr[1] "secondi"
|
||||||
|
|
||||||
|
#, fuzzy
|
||||||
|
#| msgid "second"
|
||||||
|
#| msgid_plural "seconds"
|
||||||
|
msgid "millisecond"
|
||||||
|
msgid_plural "milliseconds"
|
||||||
|
msgstr[0] "secondo"
|
||||||
|
msgstr[1] "secondi"
|
||||||
|
|
||||||
msgid "minute"
|
msgid "minute"
|
||||||
msgid_plural "minutes"
|
msgid_plural "minutes"
|
||||||
msgstr[0] "minuto"
|
msgstr[0] "minuto"
|
||||||
@@ -9075,7 +9419,7 @@ msgstr "esegue un comando su tutti i canali di tutti i server connessi"
|
|||||||
#, fuzzy
|
#, fuzzy
|
||||||
msgid ""
|
msgid ""
|
||||||
"[-current] [-parted|-all] [-exclude=<channel>[,<channel>...]] <command> || [-"
|
"[-current] [-parted|-all] [-exclude=<channel>[,<channel>...]] <command> || [-"
|
||||||
"current] [-parted|-all] -include=<channel>[,<channel>...] <command>"
|
"current] [-parted|-all] [-include=<channel>[,<channel>...]] <command>"
|
||||||
msgstr "[-current] [-exclude=<canale>[,<canale>...]] <comando> [<argomenti>]"
|
msgstr "[-current] [-exclude=<canale>[,<canale>...]] <comando> [<argomenti>]"
|
||||||
|
|
||||||
#, fuzzy
|
#, fuzzy
|
||||||
@@ -9177,8 +9521,8 @@ msgstr "esegue un comando su tutti i canali di tutti i server connessi"
|
|||||||
#. TRANSLATORS: only text between angle brackets (eg: "<name>") may be translated
|
#. TRANSLATORS: only text between angle brackets (eg: "<name>") may be translated
|
||||||
#, fuzzy
|
#, fuzzy
|
||||||
msgid ""
|
msgid ""
|
||||||
"[-current] [-exclude=<nick>[,<nick>...]] <command> || [-current] "
|
"[-current] [-exclude=<nick>[,<nick>...]] <command> || [-current] [-"
|
||||||
"-include=<nick>[,<nick>...] <command>"
|
"include=<nick>[,<nick>...]] <command>"
|
||||||
msgstr "[-current] [-exclude=<canale>[,<canale>...]] <comando> [<argomenti>]"
|
msgstr "[-current] [-exclude=<canale>[,<canale>...]] <comando> [<argomenti>]"
|
||||||
|
|
||||||
#, fuzzy
|
#, fuzzy
|
||||||
@@ -9233,8 +9577,8 @@ msgstr "esegue un comando su tutti i server connessi"
|
|||||||
#. TRANSLATORS: only text between angle brackets (eg: "<name>") may be translated
|
#. TRANSLATORS: only text between angle brackets (eg: "<name>") may be translated
|
||||||
#, fuzzy
|
#, fuzzy
|
||||||
msgid ""
|
msgid ""
|
||||||
"[-exclude=<server>[,<server>...]] <command> || -include=<server>[,"
|
"[-exclude=<server>[,<server>...]] <command> || [-include=<server>[,"
|
||||||
"<server>...] <command>"
|
"<server>...]] <command>"
|
||||||
msgstr "[-exclude=<server>[,<server>...]] <comando> [<argomenti>]"
|
msgstr "[-exclude=<server>[,<server>...]] <comando> [<argomenti>]"
|
||||||
|
|
||||||
msgid "raw[-exclude]: exclude some servers (wildcard \"*\" is allowed)"
|
msgid "raw[-exclude]: exclude some servers (wildcard \"*\" is allowed)"
|
||||||
@@ -9399,7 +9743,7 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid ""
|
msgid ""
|
||||||
"raw[ack]: acknowledge capabilities which require client-side acknowledgement"
|
"raw[ack]: acknowledge capabilities which require client-side acknowledgment"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#, fuzzy
|
#, fuzzy
|
||||||
@@ -11508,8 +11852,9 @@ msgstr ""
|
|||||||
msgid ""
|
msgid ""
|
||||||
"comma-separated list of fields to sort channels (see /help list for a list "
|
"comma-separated list of fields to sort channels (see /help list for a list "
|
||||||
"of fields); char \"-\" can be used before field to reverse order, char \"~\" "
|
"of fields); char \"-\" can be used before field to reverse order, char \"~\" "
|
||||||
"can be used to do a case-insensitive comparison; example: \"-users,~name\" "
|
"can be used to do a case-insensitive comparison; example: \"-users,~name2\" "
|
||||||
"for biggest channels first then case-insensitive sort on name"
|
"for biggest channels first then case-insensitive sort on channel name "
|
||||||
|
"without prefix"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#, fuzzy
|
#, fuzzy
|
||||||
@@ -12047,8 +12392,8 @@ msgstr "nome server"
|
|||||||
msgid "get nick from IRC host"
|
msgid "get nick from IRC host"
|
||||||
msgstr "ottiene nick dall'host IRC"
|
msgstr "ottiene nick dall'host IRC"
|
||||||
|
|
||||||
msgid "IRC host (like `:nick!name@server.com`)"
|
msgid "IRC host (like `:nick!name@server`)"
|
||||||
msgstr "host IRC (come `:nick!nome@server.com`)"
|
msgstr "host IRC (come `:nick!nome@server`)"
|
||||||
|
|
||||||
msgid ""
|
msgid ""
|
||||||
"get nick color code (*deprecated* since version 1.5, replaced by "
|
"get nick color code (*deprecated* since version 1.5, replaced by "
|
||||||
@@ -12288,8 +12633,8 @@ msgstr "%s%s: questo buffer non è un canale!"
|
|||||||
|
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"%d channels (total: %d) | Filter: %s | Sort: %s | Key(input): ctrl+j=join "
|
"%d channels (total: %d) | Filter: %s | Sort: %s | Keys: ctrl+j=join channel "
|
||||||
"channel, ($)=refresh, (q)=close buffer"
|
"| Input: $=refresh, s:x,y=sort, words=filter, *=reset filter, q=close buffer"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid "Empty list of channels, try \"$\" to refresh list"
|
msgid "Empty list of channels, try \"$\" to refresh list"
|
||||||
@@ -13479,7 +13824,7 @@ msgid ""
|
|||||||
"and the current file is renamed with extension .1; an integer number with a "
|
"and the current file is renamed with extension .1; an integer number with a "
|
||||||
"suffix is allowed: b = bytes (default if no unit given), k = kilobytes, m = "
|
"suffix is allowed: b = bytes (default if no unit given), k = kilobytes, m = "
|
||||||
"megabytes, g = gigabytes, t = terabytes; example: \"2g\" causes a rotation "
|
"megabytes, g = gigabytes, t = terabytes; example: \"2g\" causes a rotation "
|
||||||
"if the file size is > 2,000,000,000 bytes; if set to \"0\", no rotation is "
|
"if the file size is greater than 2 GB; if set to \"0\", no rotation is "
|
||||||
"performed (unlimited log size); WARNING: before changing this option, you "
|
"performed (unlimited log size); WARNING: before changing this option, you "
|
||||||
"should first set the compression type via option "
|
"should first set the compression type via option "
|
||||||
"logger.file.rotation_compression_type"
|
"logger.file.rotation_compression_type"
|
||||||
@@ -14890,10 +15235,9 @@ msgstr "%s%s: server \"%s\" non trovato per il comando \"%s\""
|
|||||||
msgid "%s%s: no connection to remote relay \"%s\""
|
msgid "%s%s: no connection to remote relay \"%s\""
|
||||||
msgstr "%s%s: non connesso al server \"%s\"!"
|
msgstr "%s%s: non connesso al server \"%s\"!"
|
||||||
|
|
||||||
#, fuzzy, c-format
|
#, c-format
|
||||||
#| msgid "%s: auto-reconnection is cancelled"
|
msgid "remote[%s]: auto-reconnection is canceled"
|
||||||
msgid "remote[%s]: auto-reconnection is cancelled"
|
msgstr ""
|
||||||
msgstr "%s: la riconnessione automatica è annullata"
|
|
||||||
|
|
||||||
#, fuzzy, c-format
|
#, fuzzy, c-format
|
||||||
#| msgid "%s%s: server \"%s\" already exists for \"%s\" command"
|
#| msgid "%s%s: server \"%s\" already exists for \"%s\" command"
|
||||||
@@ -15371,11 +15715,11 @@ msgstr ""
|
|||||||
#, fuzzy
|
#, fuzzy
|
||||||
msgid ""
|
msgid ""
|
||||||
"comma separated list of hash algorithms used for password authentication in "
|
"comma separated list of hash algorithms used for password authentication in "
|
||||||
"weechat protocol, among these values: \"plain\" (password in plain text, not "
|
"\"api\" and \"weechat\" protocols, among these values: \"plain\" (password "
|
||||||
"hashed), \"sha256\", \"sha512\", \"pbkdf2+sha256\", \"pbkdf2+sha512\"), "
|
"in plain text, not hashed), \"sha256\", \"sha512\", \"pbkdf2+sha256\", "
|
||||||
"\"*\" means all algorithms, a name beginning with \"!\" is a negative value "
|
"\"pbkdf2+sha512\"), \"*\" means all algorithms, a name beginning with \"!\" "
|
||||||
"to prevent an algorithm from being used, wildcard \"*\" is allowed in names "
|
"is a negative value to prevent an algorithm from being used, wildcard \"*\" "
|
||||||
"(examples: \"*\", \"pbkdf2*\", \"*,!plain\")"
|
"is allowed in names (examples: \"*\", \"pbkdf2*\", \"*,!plain\")"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"elenco separato da virgole di plugin da caricare automaticamente all'avvio, "
|
"elenco separato da virgole di plugin da caricare automaticamente all'avvio, "
|
||||||
"\"*\" equivale a tutti i plugin trovati. un nome che comincia con \"!\" è un "
|
"\"*\" equivale a tutti i plugin trovati. un nome che comincia con \"!\" è un "
|
||||||
@@ -15384,10 +15728,10 @@ msgstr ""
|
|||||||
"oppure \"*,!lua,!tcl\")"
|
"oppure \"*,!lua,!tcl\")"
|
||||||
|
|
||||||
msgid ""
|
msgid ""
|
||||||
"number of iterations asked to the client in weechat protocol when a hashed "
|
"number of iterations asked to the client in \"api\" and \"weechat\" "
|
||||||
"password with algorithm PBKDF2 is used for authentication; more iterations "
|
"protocols when a hashed password with algorithm PBKDF2 is used for "
|
||||||
"is better in term of security but is slower to compute; this number should "
|
"authentication; more iterations is better in term of security but is slower "
|
||||||
"not be too high if your CPU is slow"
|
"to compute; this number should not be too high if your CPU is slow"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid ""
|
msgid ""
|
||||||
@@ -15420,6 +15764,11 @@ msgid ""
|
|||||||
"1 are recommended values)"
|
"1 are recommended values)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
msgid ""
|
||||||
|
"permissions for the Unix socket, as octal value (see man chmod); it must be "
|
||||||
|
"a number with 3 digits, each between 0 and 7"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#, fuzzy
|
#, fuzzy
|
||||||
msgid ""
|
msgid ""
|
||||||
"POSIX extended regular expression with origins allowed in websockets (case-"
|
"POSIX extended regular expression with origins allowed in websockets (case-"
|
||||||
@@ -15542,7 +15891,7 @@ msgstr "Elenco dei client per il relay"
|
|||||||
#. TRANSLATORS: please do not translate the status names, they must be used in English
|
#. TRANSLATORS: please do not translate the status names, they must be used in English
|
||||||
msgid ""
|
msgid ""
|
||||||
"protocol,status (both are optional, for each argument \"*\" means all; "
|
"protocol,status (both are optional, for each argument \"*\" means all; "
|
||||||
"protocols: irc, weechat; statuses: connecting, waiting_auth, connected, "
|
"protocols: api, irc, weechat; statuses: connecting, waiting_auth, connected, "
|
||||||
"auth_failed, disconnected)"
|
"auth_failed, disconnected)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@@ -15683,6 +16032,10 @@ msgstr "%s%s: \"bind\" impossibile sulla porta %d (%s): errore %d %s"
|
|||||||
msgid "%s%s: cannot \"bind\" on port %d (%s): error %d %s"
|
msgid "%s%s: cannot \"bind\" on port %d (%s): error %d %s"
|
||||||
msgstr "%s%s: \"bind\" impossibile sulla porta %d (%s): errore %d %s"
|
msgstr "%s%s: \"bind\" impossibile sulla porta %d (%s): errore %d %s"
|
||||||
|
|
||||||
|
#, fuzzy, c-format
|
||||||
|
msgid "%s%s: warning: failed to set permissions on path %s (%s): error %d %s"
|
||||||
|
msgstr "%s%s: \"listen\" impossibile sulla porta %d (%s): errore %d %s"
|
||||||
|
|
||||||
#, fuzzy, c-format
|
#, fuzzy, c-format
|
||||||
msgid "%s%s: cannot \"listen\" on path %s (%s): error %d %s"
|
msgid "%s%s: cannot \"listen\" on path %s (%s): error %d %s"
|
||||||
msgstr "%s%s: \"listen\" impossibile sulla porta %d (%s): errore %d %s"
|
msgstr "%s%s: \"listen\" impossibile sulla porta %d (%s): errore %d %s"
|
||||||
@@ -15719,10 +16072,8 @@ msgstr ""
|
|||||||
msgid "%s%s: not enough memory for listening on new port"
|
msgid "%s%s: not enough memory for listening on new port"
|
||||||
msgstr "%s%s: memoria non sufficiente per l'ascolto su una nuova porta"
|
msgstr "%s%s: memoria non sufficiente per l'ascolto su una nuova porta"
|
||||||
|
|
||||||
msgid "Relay WeeChat data to remote application (irc/weechat protocols)"
|
msgid "Relay WeeChat data to remote applications"
|
||||||
msgstr ""
|
msgstr "Esegui il relay dei dati di WeeChat ad un'applicazione remota"
|
||||||
"Esegui il relay dei dati di WeeChat ad un'applicazione remota (protocolli "
|
|
||||||
"irc/weechat)"
|
|
||||||
|
|
||||||
msgid "connecting"
|
msgid "connecting"
|
||||||
msgstr "connessione"
|
msgstr "connessione"
|
||||||
@@ -15971,9 +16322,9 @@ msgstr ""
|
|||||||
|
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"%d/%d scripts (filter: %s) | Sort: %s | Alt+key/input: i=install, r=remove, "
|
"%d/%d scripts | Filter: %s | Sort: %s | Alt+key/input: i=install, r=remove, "
|
||||||
"l=load, L=reload, u=unload, A=autoload, h=(un)hold, v=view script | Input: "
|
"l=load, L=reload, u=unload, A=autoload, h=(un)hold, v=view script | Input: "
|
||||||
"q=close, $=refresh, s:x,y=sort, words=filter, *=reset filter | Mouse: "
|
"$=refresh, s:x,y=sort, words=filter, *=reset filter, q=close buffer | Mouse: "
|
||||||
"left=select, right=install/remove"
|
"left=select, right=install/remove"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@@ -16343,6 +16694,11 @@ msgstr "script %s caricati:"
|
|||||||
msgid "script name with extension"
|
msgid "script name with extension"
|
||||||
msgstr "elenco degli script"
|
msgstr "elenco degli script"
|
||||||
|
|
||||||
|
#, fuzzy
|
||||||
|
#| msgid "comma separated list of file name extensions for plugins"
|
||||||
|
msgid "comma-separated list of plugin:extension with supported languages"
|
||||||
|
msgstr "elenco separato da virgole di estensioni dei nomi file per i plugin"
|
||||||
|
|
||||||
#, fuzzy
|
#, fuzzy
|
||||||
msgid "script name with extension (wildcard \"*\" is allowed) (optional)"
|
msgid "script name with extension (wildcard \"*\" is allowed) (optional)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@@ -16976,7 +17332,9 @@ msgstr ""
|
|||||||
msgid "> type `command_run`: command(s) (required)"
|
msgid "> type `command_run`: command(s) (required)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid "> type `timer`: interval (required), align on second, max calls"
|
msgid ""
|
||||||
|
"> type `timer`: interval (required, in milliseconds), align on second, max "
|
||||||
|
"calls"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid "> type `config`: name(s) of option (required)"
|
msgid "> type `config`: name(s) of option (required)"
|
||||||
@@ -17330,6 +17688,11 @@ msgid ""
|
|||||||
"truncate content)"
|
"truncate content)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
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 ""
|
||||||
|
|
||||||
msgid "Typing status of users"
|
msgid "Typing status of users"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@@ -17479,8 +17842,9 @@ msgstr "non attendere ACK all'invio del file"
|
|||||||
#| "IP or DNS address used for sending files/chats (if empty, local interface "
|
#| "IP or DNS address used for sending files/chats (if empty, local interface "
|
||||||
#| "IP is used)"
|
#| "IP is used)"
|
||||||
msgid ""
|
msgid ""
|
||||||
"IP or DNS address used for sending and passively receiving files/chats (if "
|
"IP or DNS address used for sending and passively receiving files/chats; if "
|
||||||
"empty, local interface IP is used)"
|
"empty, local interface IP is used (note: content is evaluated, see /help "
|
||||||
|
"eval)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Indirizzo IP o DNS per l'invio di file/chat (se vuoto, verrà usata "
|
"Indirizzo IP o DNS per l'invio di file/chat (se vuoto, verrà usata "
|
||||||
"l'interfaccia IP locale)"
|
"l'interfaccia IP locale)"
|
||||||
@@ -17809,5 +18173,4 @@ msgid ""
|
|||||||
"xfer not found or not ready for transfer"
|
"xfer not found or not ready for transfer"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"%s%s: impossibile accettare di riprendere il file \"%s\" (porta: %d, "
|
"%s%s: impossibile accettare di riprendere il file \"%s\" (porta: %d, "
|
||||||
"posizione di avvio: %llu): xfer non trovato o non pronto per il "
|
"posizione di avvio: %llu): xfer non trovato o non pronto per il trasferimento"
|
||||||
"trasferimento"
|
|
||||||
|
|||||||
+537
-187
File diff suppressed because it is too large
Load Diff
@@ -23,10 +23,10 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: WeeChat\n"
|
"Project-Id-Version: WeeChat\n"
|
||||||
"Report-Msgid-Bugs-To: flashcode@flashtux.org\n"
|
"Report-Msgid-Bugs-To: flashcode@flashtux.org\n"
|
||||||
"POT-Creation-Date: 2026-03-16 13:17+0100\n"
|
"POT-Creation-Date: 2026-07-05 12:20+0200\n"
|
||||||
"PO-Revision-Date: 2025-10-27 08:27+0100\n"
|
"PO-Revision-Date: 2026-07-05 12:28+0200\n"
|
||||||
"Last-Translator: Aleksey V Zapparov AKA ixti <ixti@member.fsf.org>\n"
|
"Last-Translator: Aleksey V Zapparov AKA ixti <ixti@member.fsf.org>\n"
|
||||||
"Language-Team: weechat-dev <weechat-dev@nongnu.org>\n"
|
"Language-Team: Russian <weechat-dev@nongnu.org>\n"
|
||||||
"Language: ru\n"
|
"Language: ru\n"
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
@@ -35,6 +35,154 @@ msgstr ""
|
|||||||
"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
|
"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
|
||||||
"X-Poedit-Bookmarks: -1,-1,608,-1,-1,-1,-1,-1,-1,-1\n"
|
"X-Poedit-Bookmarks: -1,-1,608,-1,-1,-1,-1,-1,-1,-1\n"
|
||||||
|
|
||||||
|
#. TRANSLATORS: command line option "-a", "--no-connect"
|
||||||
|
#, fuzzy
|
||||||
|
msgid "disable auto-connect to servers at startup"
|
||||||
|
msgstr "%s DCC: не могу соединиться с отправителем\n"
|
||||||
|
|
||||||
|
#. TRANSLATORS: command line option "-c", "--colors"
|
||||||
|
msgid "display default colors in terminal and exit"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. TRANSLATORS: only "<path>" may be translated
|
||||||
|
msgid "-d, --dir <path>"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. TRANSLATORS: command line option "-d", "--dir <path>"
|
||||||
|
msgid ""
|
||||||
|
"force a single WeeChat home directory or 5 different directories separated "
|
||||||
|
"by colons (in this order: config, data, state, cache, runtime) (environment "
|
||||||
|
"variable WEECHAT_HOME is read if this option is not given)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. TRANSLATORS: command line option "-t", "--temp-dir"
|
||||||
|
msgid ""
|
||||||
|
"create a temporary WeeChat home directory and delete it on exit "
|
||||||
|
"(incompatible with option \"-d\")"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. TRANSLATORS: command line option "-h", "--help"
|
||||||
|
#, fuzzy
|
||||||
|
msgid "display this help and exit"
|
||||||
|
msgstr "цвет ника собеседника в окне привата"
|
||||||
|
|
||||||
|
#. TRANSLATORS: command line option "-i", "--build-info"
|
||||||
|
msgid "display build information and exit"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. TRANSLATORS: command line option "-l", "--license"
|
||||||
|
#, fuzzy
|
||||||
|
#| msgid "display WeeChat logo at startup"
|
||||||
|
msgid "display WeeChat license and exit"
|
||||||
|
msgstr "отображать логотип WeeChat при запуске"
|
||||||
|
|
||||||
|
#. TRANSLATORS: command line option "-p", "--no-plugin"
|
||||||
|
#, fuzzy
|
||||||
|
#| msgid "display WeeChat logo at startup"
|
||||||
|
msgid "don't load any plugin at startup"
|
||||||
|
msgstr "отображать логотип WeeChat при запуске"
|
||||||
|
|
||||||
|
#. TRANSLATORS: only "<plugins>" may be translated
|
||||||
|
msgid "-P, --plugins <plugins>"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. TRANSLATORS: command line option "-P", "--plugins <plugins>"
|
||||||
|
msgid "load only these plugins at startup (see /help weechat.plugin.autoload)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. TRANSLATORS: only "<cmd>" may be translated (please keep it short)
|
||||||
|
msgid "-r, --run-command <cmd>"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. TRANSLATORS: command line option "-r", "--run-command <cmd>"
|
||||||
|
#, fuzzy
|
||||||
|
msgid ""
|
||||||
|
"run command(s) after startup; many commands can be separated by semicolons "
|
||||||
|
"and are evaluated, this option can be given multiple times"
|
||||||
|
msgstr "ник, используемый на IRC сервере"
|
||||||
|
|
||||||
|
#. TRANSLATORS: command line option "-s", "--no-script"
|
||||||
|
msgid "don't load any script at startup"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. TRANSLATORS: command line option "--upgrade"
|
||||||
|
#, fuzzy
|
||||||
|
msgid "upgrade WeeChat using session files (see /help upgrade in WeeChat)"
|
||||||
|
msgstr "%s не могу сохранить сессию в файл\n"
|
||||||
|
|
||||||
|
#. TRANSLATORS: command line option "-v", "--version"
|
||||||
|
#, fuzzy
|
||||||
|
#| msgid "display WeeChat version at startup"
|
||||||
|
msgid "display WeeChat version and exit"
|
||||||
|
msgstr "отображать версию WeeChat при запуске"
|
||||||
|
|
||||||
|
#. TRANSLATORS: command line option: "plugin" and "option" may be translated
|
||||||
|
#, fuzzy
|
||||||
|
msgid "plugin:option"
|
||||||
|
msgstr " (нет pluginа)\n"
|
||||||
|
|
||||||
|
#. TRANSLATORS: command line option "plugin:option"
|
||||||
|
msgid "option for plugin (see man weechat)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. TRANSLATORS: only "<path>" may be translated
|
||||||
|
msgid "--doc-gen <path>"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. TRANSLATORS: command line option "--doc-gen <path>"
|
||||||
|
msgid "generate files to build documentation and exit"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. TRANSLATORS: command line option "--daemon"
|
||||||
|
msgid ""
|
||||||
|
"run WeeChat as a daemon (fork, new process group, file descriptors closed); "
|
||||||
|
"by default in headless mode WeeChat is blocking and does not run in "
|
||||||
|
"background"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. TRANSLATORS: command line option "--stdout"
|
||||||
|
msgid ""
|
||||||
|
"display log messages on standard output instead of writing them in log file "
|
||||||
|
"(option ignored if option \"--daemon\" is given)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. TRANSLATORS: command line option "--no-dlclose"
|
||||||
|
msgid "do not call function dlclose after plugins are unloaded"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. TRANSLATORS: command line option "--no-gnutls"
|
||||||
|
msgid "disable init/deinit of gnutls"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. TRANSLATORS: command line option "--no-gcrypt"
|
||||||
|
msgid "disable init/deinit of gcrypt"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. TRANSLATORS: "%s %s" after "compiled on" is date and time
|
||||||
|
#, fuzzy, c-format
|
||||||
|
msgid ""
|
||||||
|
"WeeChat %s Copyright %s, compiled on %s %s\n"
|
||||||
|
"Developed by %s <%s> - %s"
|
||||||
|
msgstr ""
|
||||||
|
"%s Copyright (C) 2003-2010, собран %s %s\n"
|
||||||
|
"Разработчик - Sébastien Helleu <flashcode@flashtux.org> - %s"
|
||||||
|
|
||||||
|
msgid "Usage:"
|
||||||
|
msgstr "Использование:"
|
||||||
|
|
||||||
|
msgid "[option...] [plugin:option...]"
|
||||||
|
msgstr "[опция...] [расширение:опция...]"
|
||||||
|
|
||||||
|
msgid "Extra options in headless mode:"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Debug options (for tools like valgrind, DO NOT USE IN PRODUCTION):"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#, fuzzy, c-format
|
||||||
|
msgid "Error: missing argument for \"%s\" option\n"
|
||||||
|
msgstr "%s нет аргумента для параметра \"%s\"\n"
|
||||||
|
|
||||||
#, fuzzy
|
#, fuzzy
|
||||||
msgid "List of bars:"
|
msgid "List of bars:"
|
||||||
msgstr "Список сокращений:\n"
|
msgstr "Список сокращений:\n"
|
||||||
@@ -145,7 +293,7 @@ msgid "%sUnable to scroll bar \"%s\""
|
|||||||
msgstr "%s не могу сохранить конфигурационный файл pluginов\n"
|
msgstr "%s не могу сохранить конфигурационный файл pluginов\n"
|
||||||
|
|
||||||
#, fuzzy, c-format
|
#, fuzzy, c-format
|
||||||
msgid "%sBuffer number \"%d\" is out of range (it must be between 1 and %d)"
|
msgid "%sBuffer number %d is out of range (it must be between 1 and %d)"
|
||||||
msgstr "%sОшибочный код цвета \"%s\" (должен быть в диапазоне от %d до %d)"
|
msgstr "%sОшибочный код цвета \"%s\" (должен быть в диапазоне от %d до %d)"
|
||||||
|
|
||||||
msgid "Buffers list:"
|
msgid "Buffers list:"
|
||||||
@@ -504,12 +652,12 @@ msgid "%sArgument \"-yes\" is required for keys reset (security reason)"
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"%s аргумент \"-yes\" необходим для сброса ключей (в целях безопасности)\n"
|
"%s аргумент \"-yes\" необходим для сброса ключей (в целях безопасности)\n"
|
||||||
|
|
||||||
#, fuzzy, c-format
|
#, c-format
|
||||||
msgid "%d new key added"
|
msgid "%d new key added (context: \"%s\")"
|
||||||
msgid_plural "%d new keys added (context: \"%s\")"
|
msgid_plural "%d new keys added (context: \"%s\")"
|
||||||
msgstr[0] "Игнорирования не заданы.\n"
|
msgstr[0] ""
|
||||||
msgstr[1] "Игнорирования не заданы.\n"
|
msgstr[1] ""
|
||||||
msgstr[2] "Игнорирования не заданы.\n"
|
msgstr[2] ""
|
||||||
|
|
||||||
#, fuzzy
|
#, fuzzy
|
||||||
msgid "Stored layouts:"
|
msgid "Stored layouts:"
|
||||||
@@ -864,6 +1012,48 @@ msgstr "не на канале"
|
|||||||
msgid "%sFunction \"%s\" is not available on this system"
|
msgid "%sFunction \"%s\" is not available on this system"
|
||||||
msgstr "%s plugin \"%s\" не найден\n"
|
msgstr "%s plugin \"%s\" не найден\n"
|
||||||
|
|
||||||
|
#, fuzzy
|
||||||
|
msgid "No theme available"
|
||||||
|
msgstr " . тип: целочисленный\n"
|
||||||
|
|
||||||
|
msgid "Themes:"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#, c-format
|
||||||
|
msgid " %s %s%s%s (file)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#, fuzzy, c-format
|
||||||
|
msgid "%sTheme \"%s\" not found"
|
||||||
|
msgstr "%s сервер \"%s\" не найден\n"
|
||||||
|
|
||||||
|
#, fuzzy, c-format
|
||||||
|
msgid "Theme \"%s%s%s\":"
|
||||||
|
msgstr "Ники %s%s%s: %s["
|
||||||
|
|
||||||
|
#, fuzzy, c-format
|
||||||
|
msgid " source: %s"
|
||||||
|
msgstr " IRC(%s)\n"
|
||||||
|
|
||||||
|
msgid " source: built-in (in-memory)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#, fuzzy, c-format
|
||||||
|
msgid " description: %s"
|
||||||
|
msgstr " . описание: %s\n"
|
||||||
|
|
||||||
|
#, fuzzy, c-format
|
||||||
|
msgid " date: %s"
|
||||||
|
msgstr " IRC(%s)\n"
|
||||||
|
|
||||||
|
#, fuzzy, c-format
|
||||||
|
msgid " WeeChat version: %s"
|
||||||
|
msgstr "слоган WeeChat"
|
||||||
|
|
||||||
|
#, c-format
|
||||||
|
msgid " overrides: %d"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#, fuzzy, c-format
|
#, fuzzy, c-format
|
||||||
msgid "%sFailed to unset option \"%s\""
|
msgid "%sFailed to unset option \"%s\""
|
||||||
msgstr "%s не могу сохранить конфигурационный файл pluginов\n"
|
msgstr "%s не могу сохранить конфигурационный файл pluginов\n"
|
||||||
@@ -1031,6 +1221,16 @@ msgstr ""
|
|||||||
" -all: включить режим \"отсутствую\" на всех подключенных серверах\n"
|
" -all: включить режим \"отсутствую\" на всех подключенных серверах\n"
|
||||||
"сообщение: причина отсутствия (если сообщения нет - статус снимается)"
|
"сообщение: причина отсутствия (если сообщения нет - статус снимается)"
|
||||||
|
|
||||||
|
msgid ""
|
||||||
|
"By default the away status is displayed only locally by the irc plugin (see /"
|
||||||
|
"help irc.look.display_away)."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid ""
|
||||||
|
"This command can be caught by other plugins and scripts (see \"Plugin API "
|
||||||
|
"reference\", function \"hook_command_run\")."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#, fuzzy
|
#, fuzzy
|
||||||
msgid "manage bars"
|
msgid "manage bars"
|
||||||
msgstr "управление буферами"
|
msgstr "управление буферами"
|
||||||
@@ -1123,7 +1323,7 @@ msgstr ""
|
|||||||
|
|
||||||
msgid ""
|
msgid ""
|
||||||
"option: option to change (for options list, look at /set weechat.bar."
|
"option: option to change (for options list, look at /set weechat.bar."
|
||||||
"<barname>.*)"
|
"<bar_name>.*)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#, fuzzy
|
#, fuzzy
|
||||||
@@ -1576,7 +1776,7 @@ msgstr ""
|
|||||||
|
|
||||||
#. TRANSLATORS: only text between angle brackets (eg: "<name>") may be translated
|
#. TRANSLATORS: only text between angle brackets (eg: "<name>") may be translated
|
||||||
msgid ""
|
msgid ""
|
||||||
"[-n|-s] [-d] <expression> || [-n] [-d [-d]] -c <expression1> <operator> "
|
"[-n|-s] [-e] [-d] <expression> || [-n] [-d [-d]] -c <expression1> <operator> "
|
||||||
"<expression2>"
|
"<expression2>"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@@ -1588,6 +1788,9 @@ msgid ""
|
|||||||
"separated by semicolons)"
|
"separated by semicolons)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "raw[-e]: evaluate all commands before executing them"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid ""
|
msgid ""
|
||||||
"raw[-d]: display debug output after evaluation (with two -d: more verbose "
|
"raw[-d]: display debug output after evaluation (with two -d: more verbose "
|
||||||
"debug)"
|
"debug)"
|
||||||
@@ -2109,7 +2312,7 @@ msgid "display help about commands and options"
|
|||||||
msgstr "отобразить помощь по командам"
|
msgstr "отобразить помощь по командам"
|
||||||
|
|
||||||
#. TRANSLATORS: only text between angle brackets (eg: "<name>") may be translated
|
#. TRANSLATORS: only text between angle brackets (eg: "<name>") may be translated
|
||||||
msgid "-list|-listfull [<plugin>...]] || <command> || <option>"
|
msgid "-list|-listfull [<plugin>...] || <command> || <option>"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid ""
|
msgid ""
|
||||||
@@ -2169,9 +2372,9 @@ msgid "raw[clear]: clear hotlist"
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid ""
|
msgid ""
|
||||||
"level: \"lowest\" to clear only lowest level in hotlist, highest\" to clear "
|
"level: \"lowest\" to clear only lowest level in hotlist, \"highest\" to "
|
||||||
"only highest level in hotlist, or level mask: integer which is a combination "
|
"clear only highest level in hotlist, or level mask: integer which is a "
|
||||||
"of 1=join/part, 2=message, 4=private, 8=highlight"
|
"combination of 1=join/part, 2=message, 4=private, 8=highlight"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid "raw[remove]: remove current buffer from hotlist"
|
msgid "raw[remove]: remove current buffer from hotlist"
|
||||||
@@ -3036,7 +3239,7 @@ msgstr ""
|
|||||||
|
|
||||||
msgid ""
|
msgid ""
|
||||||
"option: option to change (for options list, look at /set weechat.proxy."
|
"option: option to change (for options list, look at /set weechat.proxy."
|
||||||
"<proxyname>.*)"
|
"<proxy_name>.*)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid " add a http proxy, running on local host, port 8888:"
|
msgid " add a http proxy, running on local host, port 8888:"
|
||||||
@@ -3273,20 +3476,20 @@ msgstr ""
|
|||||||
msgid " encrypt libera SASL password:"
|
msgid " encrypt libera SASL password:"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid " /secure set libera mypassword"
|
msgid " /secure set libera my_password"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid " encrypt oftc password for nickserv:"
|
msgid " encrypt oftc password for nickserv:"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid " /secure set oftc mypassword"
|
msgid " /secure set oftc my_password"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid " alias to ghost the nick \"mynick\":"
|
msgid " alias to ghost the nick \"andrew\":"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid ""
|
msgid ""
|
||||||
" /alias add ghost /eval /msg -server libera nickserv ghost mynick $"
|
" /alias add ghost /eval /msg -server libera nickserv ghost andrew $"
|
||||||
"{sec.data.libera}"
|
"{sec.data.libera}"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@@ -3374,6 +3577,75 @@ msgstr ""
|
|||||||
msgid "number: number of processes to clean"
|
msgid "number: number of processes to clean"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#, fuzzy
|
||||||
|
msgid "manage color themes"
|
||||||
|
msgstr "Список сокращений:\n"
|
||||||
|
|
||||||
|
#. TRANSLATORS: only text between angle brackets (eg: "<name>") may be translated
|
||||||
|
msgid ""
|
||||||
|
"[list [-backups]] || apply <name> || reset || save <name> || rename <old> "
|
||||||
|
"<new> || del <name> || info <name>"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#, fuzzy
|
||||||
|
msgid ""
|
||||||
|
"raw[list]: list registered themes and any *.theme files in the WeeChat "
|
||||||
|
"configuration directory; the active theme (matching weechat.look.theme) is "
|
||||||
|
"marked with \"->\""
|
||||||
|
msgstr "Список сокращений:\n"
|
||||||
|
|
||||||
|
msgid "raw[-backups]: display backup theme files"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid ""
|
||||||
|
"raw[apply]: apply a theme (set every themable option to the value from the "
|
||||||
|
"theme); if a file named <name>.theme exists in directory \"themes\" it "
|
||||||
|
"shadows any built-in theme of the same name"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid ""
|
||||||
|
"raw[reset]: reset every themable option to its default value (restores the "
|
||||||
|
"original look shipped with WeeChat)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid ""
|
||||||
|
"raw[save]: save current themable options to a file <name>.theme in directory "
|
||||||
|
"\"themes\"; every themable option is written, so the file is self-contained; "
|
||||||
|
"the name must not match a built-in theme or start with \"backup-\""
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#, fuzzy
|
||||||
|
msgid "raw[rename]: rename a user theme file"
|
||||||
|
msgstr "Список сокращений:\n"
|
||||||
|
|
||||||
|
#, fuzzy
|
||||||
|
#| msgid "get/set channel topic"
|
||||||
|
msgid "raw[del]: delete a user theme file"
|
||||||
|
msgstr "получить/установить тему канала"
|
||||||
|
|
||||||
|
msgid ""
|
||||||
|
"raw[info]: display details on a theme (name, description, creation date, "
|
||||||
|
"WeeChat version, number of option overrides)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#, fuzzy
|
||||||
|
msgid "name: name of a theme"
|
||||||
|
msgstr "Список сокращений:\n"
|
||||||
|
|
||||||
|
msgid ""
|
||||||
|
"Themes are named bundles of option overrides. Built-in themes are registered "
|
||||||
|
"in memory by core/plugins/scripts; user themes are read from files in "
|
||||||
|
"directory \"themes\" inside the WeeChat configuration directory."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid ""
|
||||||
|
"By default, `/theme apply` command creates a backup of current themable "
|
||||||
|
"values in directory \"themes\" before applying (file name: \"backup-"
|
||||||
|
"<timestamp>.theme\"); the previous state can be restored with: `/theme apply "
|
||||||
|
"backup-<timestamp>`. This is controlled by the option "
|
||||||
|
"weechat.look.theme_backup."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#, fuzzy
|
#, fuzzy
|
||||||
msgid "toggle value of a config option"
|
msgid "toggle value of a config option"
|
||||||
msgstr "Не найден параметр\n"
|
msgstr "Не найден параметр\n"
|
||||||
@@ -3526,7 +3798,7 @@ msgstr ""
|
|||||||
msgid "With option \"-quit\", the process is:"
|
msgid "With option \"-quit\", the process is:"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid " 1. close *ALL* connections (irc, xfer, relay, ...)"
|
msgid " 1. close *ALL* connections (irc, xfer, relay, etc.)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#, fuzzy
|
#, fuzzy
|
||||||
@@ -3930,6 +4202,15 @@ msgstr ""
|
|||||||
msgid "names of layouts"
|
msgid "names of layouts"
|
||||||
msgstr "Список сокращений:\n"
|
msgstr "Список сокращений:\n"
|
||||||
|
|
||||||
|
msgid "names of themes (built-ins + user files + backups)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "names of user theme files (without built-ins and backups)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "names of theme files on disk (user files + backups, no built-ins)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "names of secured data (file sec.conf, section data)"
|
msgid "names of secured data (file sec.conf, section data)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@@ -4779,6 +5060,20 @@ msgstr ""
|
|||||||
msgid "number of spaces used to display tabs in messages"
|
msgid "number of spaces used to display tabs in messages"
|
||||||
msgstr "ответить на ping"
|
msgstr "ответить на ping"
|
||||||
|
|
||||||
|
msgid ""
|
||||||
|
"name of the last theme applied with command /theme (set automatically, do "
|
||||||
|
"not change manually); informational only, the theme is not re-applied at "
|
||||||
|
"startup"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid ""
|
||||||
|
"create a backup theme file with the current themable options before applying "
|
||||||
|
"a theme with command /theme; if the backup file cannot be written, the apply "
|
||||||
|
"is aborted (no option is changed); the backup file is written to directory "
|
||||||
|
"\"themes\" inside the WeeChat configuration directory and can be restored "
|
||||||
|
"with the command: `/theme apply backup-<timestamp>`"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#, fuzzy
|
#, fuzzy
|
||||||
msgid ""
|
msgid ""
|
||||||
"time format for dates converted to strings and displayed in messages (see "
|
"time format for dates converted to strings and displayed in messages (see "
|
||||||
@@ -5742,6 +6037,100 @@ msgstr "%s plugin \"%s\" не найден\n"
|
|||||||
msgid "Resource usage (see \"man getrusage\" for help):"
|
msgid "Resource usage (see \"man getrusage\" for help):"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "WeeChat default theme for light-background terminals"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Automatic backup"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#, fuzzy, c-format
|
||||||
|
msgid "%sTheme: option \"%s\" not found, skipped"
|
||||||
|
msgstr "%s сервер \"%s\" не найден\n"
|
||||||
|
|
||||||
|
#, fuzzy, c-format
|
||||||
|
msgid "%sTheme: option \"%s\" is not themable, skipped"
|
||||||
|
msgstr "%s сервер \"%s\" не найден\n"
|
||||||
|
|
||||||
|
#, c-format
|
||||||
|
msgid "%s%s: line %d: malformed section header"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#, fuzzy, c-format
|
||||||
|
msgid "%s%s: line %d: ignoring unknown section \"%s\""
|
||||||
|
msgstr "%s %s, строка %d: неизвестный идентификатор секции (\"%s\")\n"
|
||||||
|
|
||||||
|
#, c-format
|
||||||
|
msgid "%s%s: line %d: missing '=' separator"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#, fuzzy, c-format
|
||||||
|
msgid "%s%s: line %d: ignoring unknown [info] key \"%s\""
|
||||||
|
msgstr "%s %s, строка %d: неизвестный идентификатор секции (\"%s\")\n"
|
||||||
|
|
||||||
|
#, c-format
|
||||||
|
msgid ""
|
||||||
|
"%sUnable to create theme backup; aborting apply (disable option "
|
||||||
|
"weechat.look.theme_backup to force)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#, c-format
|
||||||
|
msgid "Previous state saved as theme \"%s\"; to restore: /theme apply %s"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#, c-format
|
||||||
|
msgid ""
|
||||||
|
"%sUnable to create theme backup; aborting reset (disable option "
|
||||||
|
"weechat.look.theme_backup to force)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#, c-format
|
||||||
|
msgid "%sName \"%s\" is reserved for automatic backups"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#, c-format
|
||||||
|
msgid "%sName \"%s\" is reserved for a built-in theme"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#, fuzzy, c-format
|
||||||
|
msgid "%sFailed to save theme \"%s\""
|
||||||
|
msgstr "Не могу записать лог-файл \"%s\"\n"
|
||||||
|
|
||||||
|
#, fuzzy, c-format
|
||||||
|
msgid "Theme saved to: %s"
|
||||||
|
msgstr "Ники %s%s%s: %s["
|
||||||
|
|
||||||
|
#, fuzzy, c-format
|
||||||
|
msgid "%sCannot rename built-in theme \"%s\""
|
||||||
|
msgstr "%s не могу создать файл \"%s\"\n"
|
||||||
|
|
||||||
|
#, c-format
|
||||||
|
msgid "%sNew name is the same as old name"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#, fuzzy, c-format
|
||||||
|
msgid "%sTheme \"%s\" already exists"
|
||||||
|
msgstr "%s игнорирование уже существует\n"
|
||||||
|
|
||||||
|
#, fuzzy, c-format
|
||||||
|
msgid "%sFailed to rename theme \"%s\" to \"%s\""
|
||||||
|
msgstr "%s неизвестный параметр для команды \"%s\"\n"
|
||||||
|
|
||||||
|
#, fuzzy, c-format
|
||||||
|
msgid "Theme \"%s\" renamed to \"%s\""
|
||||||
|
msgstr "команда users отключена"
|
||||||
|
|
||||||
|
#, fuzzy, c-format
|
||||||
|
msgid "%sCannot delete built-in theme \"%s\""
|
||||||
|
msgstr "%s не могу создать файл \"%s\"\n"
|
||||||
|
|
||||||
|
#, fuzzy, c-format
|
||||||
|
msgid "%sFailed to delete theme \"%s\""
|
||||||
|
msgstr "Не могу записать лог-файл \"%s\"\n"
|
||||||
|
|
||||||
|
#, c-format
|
||||||
|
msgid "Theme deleted: %s"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#, fuzzy, c-format
|
#, fuzzy, c-format
|
||||||
msgid "%sError upgrading WeeChat with file \"%s\":"
|
msgid "%sError upgrading WeeChat with file \"%s\":"
|
||||||
msgstr "Обновляю WeeChat...\n"
|
msgstr "Обновляю WeeChat...\n"
|
||||||
@@ -5783,7 +6172,7 @@ msgstr " . строковой тип (значения: "
|
|||||||
msgid "read - object type"
|
msgid "read - object type"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid "read - bad object type ('object start' expected)"
|
msgid "read - bad object type (\"object start\" expected)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid "read - object id"
|
msgid "read - object id"
|
||||||
@@ -5898,118 +6287,40 @@ msgstr ""
|
|||||||
msgid "End of URL transfer '%s', transfer stopped"
|
msgid "End of URL transfer '%s', transfer stopped"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#. TRANSLATORS: "%s %s" after "compiled on" is date and time
|
|
||||||
#, fuzzy, c-format
|
|
||||||
msgid ""
|
|
||||||
"WeeChat %s Copyright %s, compiled on %s %s\n"
|
|
||||||
"Developed by Sébastien Helleu <flashcode@flashtux.org> - %s"
|
|
||||||
msgstr ""
|
|
||||||
"%s Copyright (C) 2003-2010, собран %s %s\n"
|
|
||||||
"Разработчик - Sébastien Helleu <flashcode@flashtux.org> - %s"
|
|
||||||
|
|
||||||
#, c-format
|
|
||||||
msgid "Usage: %s [option...] [plugin:option...]\n"
|
|
||||||
msgstr "Использование: %s [опция...] [расширение:опция...]\n"
|
|
||||||
|
|
||||||
#, fuzzy
|
|
||||||
msgid ""
|
|
||||||
" -a, --no-connect disable auto-connect to servers at startup\n"
|
|
||||||
" -c, --colors display default colors in terminal and exit\n"
|
|
||||||
" -d, --dir <path> force a single WeeChat home directory\n"
|
|
||||||
" or 5 different directories separated by colons "
|
|
||||||
"(in this order: config, data, state, cache, runtime)\n"
|
|
||||||
" (environment variable WEECHAT_HOME is read if "
|
|
||||||
"this option is not given)\n"
|
|
||||||
" -t, --temp-dir create a temporary WeeChat home directory and "
|
|
||||||
"delete it on exit\n"
|
|
||||||
" (incompatible with option \"-d\")\n"
|
|
||||||
" -h, --help display this help and exit\n"
|
|
||||||
" -i, --build-info display build information and exit\n"
|
|
||||||
" -l, --license display WeeChat license and exit\n"
|
|
||||||
" -p, --no-plugin don't load any plugin at startup\n"
|
|
||||||
" -P, --plugins <plugins> load only these plugins at startup\n"
|
|
||||||
" (see /help weechat.plugin.autoload)\n"
|
|
||||||
" -r, --run-command <cmd> run command(s) after startup;\n"
|
|
||||||
" many commands can be separated by semicolons and "
|
|
||||||
"are evaluated,\n"
|
|
||||||
" this option can be given multiple times\n"
|
|
||||||
" -s, --no-script don't load any script at startup\n"
|
|
||||||
" --upgrade upgrade WeeChat using session files (see /help "
|
|
||||||
"upgrade in WeeChat)\n"
|
|
||||||
" -v, --version display WeeChat version and exit\n"
|
|
||||||
" plugin:option option for plugin (see man weechat)\n"
|
|
||||||
msgstr ""
|
|
||||||
" -a, --no-connect не подключаться автоматически при запуске\n"
|
|
||||||
" -c, --config отобразить параметры конфигурации\n"
|
|
||||||
" -d, --dir <path> установить домашний каталог WeeChat (по умолчанию: "
|
|
||||||
"~/.weechat)\n"
|
|
||||||
" -f, --key-functions отобразить внутренние функции WeeChat для горячих "
|
|
||||||
"клавиш\n"
|
|
||||||
" -h, --help эта сравка\n"
|
|
||||||
" -i, --irc-commands отобразить команды IRC\n"
|
|
||||||
" -k, --keys отобразить клавиши по умолчанию\n"
|
|
||||||
" -l, --license отобразить лицензию WeeChat\n"
|
|
||||||
" -p, --no-plugin не загружать pluginы при запуске\n"
|
|
||||||
" -v, --version отобразить версию WeeChat\n"
|
|
||||||
" -w, --weechat-commands отобразить команды WeeChat\n"
|
|
||||||
|
|
||||||
msgid "Extra options in headless mode:\n"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
msgid ""
|
|
||||||
" --doc-gen <path> generate files to build documentation and exit\n"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
msgid ""
|
|
||||||
" --daemon run WeeChat as a daemon (fork, new process group, "
|
|
||||||
"file descriptors closed);\n"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
msgid ""
|
|
||||||
" (by default in headless mode WeeChat is blocking "
|
|
||||||
"and does not run in background)\n"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
msgid ""
|
|
||||||
" --stdout display log messages on standard output instead "
|
|
||||||
"of writing them in log file\n"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
msgid ""
|
|
||||||
" (option ignored if option \"--daemon\" is given)\n"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
msgid ""
|
|
||||||
"Debug options (for tools like valgrind, DO NOT USE IN PRODUCTION):\n"
|
|
||||||
" --no-dlclose do not call function dlclose after plugins are "
|
|
||||||
"unloaded\n"
|
|
||||||
" --no-gnutls disable init/deinit of gnutls\n"
|
|
||||||
" --no-gcrypt disable init/deinit of gcrypt\n"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#, fuzzy, c-format
|
|
||||||
msgid "Error: missing argument for \"%s\" option\n"
|
|
||||||
msgstr "%s нет аргумента для параметра \"%s\"\n"
|
|
||||||
|
|
||||||
msgid "WeeChat is running in headless mode (ctrl-c to quit)."
|
msgid "WeeChat is running in headless mode (ctrl-c to quit)."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Welcome to WeeChat!"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid ""
|
msgid ""
|
||||||
"Welcome to WeeChat!\n"
|
|
||||||
"\n"
|
|
||||||
"If you are discovering WeeChat, it is recommended to read at least the "
|
"If you are discovering WeeChat, it is recommended to read at least the "
|
||||||
"quickstart guide, and the user's guide if you have some time; they explain "
|
"quickstart guide, and the user's guide if you have some time; they explain "
|
||||||
"main WeeChat concepts.\n"
|
"main WeeChat concepts."
|
||||||
"All WeeChat docs are available at: https://weechat.org/doc/\n"
|
msgstr ""
|
||||||
"\n"
|
|
||||||
|
#, c-format
|
||||||
|
msgid "All WeeChat docs are available at: %s"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid ""
|
||||||
"Moreover, there is inline help with /help on all commands and options (use "
|
"Moreover, there is inline help with /help on all commands and options (use "
|
||||||
"Tab key to complete the name).\n"
|
"Tab key to complete the name)."
|
||||||
"The command /fset can help to customize WeeChat.\n"
|
msgstr ""
|
||||||
"\n"
|
|
||||||
|
msgid "The command /fset can help to customize WeeChat."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid ""
|
||||||
"You can add and connect to an IRC server with /server and /connect commands "
|
"You can add and connect to an IRC server with /server and /connect commands "
|
||||||
"(see /help server)."
|
"(see /help server)."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
msgid ""
|
||||||
|
"The \"light\" theme will be automatically applied. Use /theme reset to "
|
||||||
|
"switch back to the default dark theme."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#. TRANSLATORS: the "under %s" can be "under screen" or "under tmux"
|
#. TRANSLATORS: the "under %s" can be "under screen" or "under tmux"
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
@@ -6697,7 +7008,7 @@ msgstr ""
|
|||||||
msgid ""
|
msgid ""
|
||||||
" - ${index_displayed}: index of line displayed in the bar item (starts at "
|
" - ${index_displayed}: index of line displayed in the bar item (starts at "
|
||||||
"0, only buffers displayed increment this index, see option "
|
"0, only buffers displayed increment this index, see option "
|
||||||
"buflist.look.display_conditions"
|
"buflist.look.display_conditions)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#, fuzzy
|
#, fuzzy
|
||||||
@@ -7499,7 +7810,8 @@ msgstr "перезагрузить конфигурационный файл с
|
|||||||
|
|
||||||
msgid ""
|
msgid ""
|
||||||
"> `t:xxx`: show only type \"xxx\" (bool/int/str/col/enum or boolean/integer/"
|
"> `t:xxx`: show only type \"xxx\" (bool/int/str/col/enum or boolean/integer/"
|
||||||
"string/color/enum)"
|
"string/color/enum); the special value \"themable\" can be used to show all "
|
||||||
|
"options that can be used in themes, regardless of type"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid "> `d`: show only changed options"
|
msgid "> `d`: show only changed options"
|
||||||
@@ -8225,7 +8537,7 @@ msgid "%s%s: not connected to server \"%s\"!"
|
|||||||
msgstr "%s не подключен к серверу \"%s\"!\n"
|
msgstr "%s не подключен к серверу \"%s\"!\n"
|
||||||
|
|
||||||
#, fuzzy, c-format
|
#, fuzzy, c-format
|
||||||
msgid "%s: auto-reconnection is cancelled"
|
msgid "%s: auto-reconnection is canceled"
|
||||||
msgstr "Авто-переподключение отменено\n"
|
msgstr "Авто-переподключение отменено\n"
|
||||||
|
|
||||||
#, fuzzy, c-format
|
#, fuzzy, c-format
|
||||||
@@ -8387,6 +8699,13 @@ msgstr[0] "секунда"
|
|||||||
msgstr[1] "секунда"
|
msgstr[1] "секунда"
|
||||||
msgstr[2] "секунда"
|
msgstr[2] "секунда"
|
||||||
|
|
||||||
|
#, fuzzy
|
||||||
|
msgid "millisecond"
|
||||||
|
msgid_plural "milliseconds"
|
||||||
|
msgstr[0] "секунда"
|
||||||
|
msgstr[1] "секунда"
|
||||||
|
msgstr[2] "секунда"
|
||||||
|
|
||||||
#, fuzzy
|
#, fuzzy
|
||||||
msgid "minute"
|
msgid "minute"
|
||||||
msgid_plural "minutes"
|
msgid_plural "minutes"
|
||||||
@@ -8545,7 +8864,7 @@ msgstr "отправить действие на все каналы всех п
|
|||||||
#, fuzzy
|
#, fuzzy
|
||||||
msgid ""
|
msgid ""
|
||||||
"[-current] [-parted|-all] [-exclude=<channel>[,<channel>...]] <command> || [-"
|
"[-current] [-parted|-all] [-exclude=<channel>[,<channel>...]] <command> || [-"
|
||||||
"current] [-parted|-all] -include=<channel>[,<channel>...] <command>"
|
"current] [-parted|-all] [-include=<channel>[,<channel>...]] <command>"
|
||||||
msgstr "[сокращение [команда [аргументы]]]"
|
msgstr "[сокращение [команда [аргументы]]]"
|
||||||
|
|
||||||
#, fuzzy
|
#, fuzzy
|
||||||
@@ -8635,8 +8954,8 @@ msgstr "отправить действие на все каналы всех п
|
|||||||
#. TRANSLATORS: only text between angle brackets (eg: "<name>") may be translated
|
#. TRANSLATORS: only text between angle brackets (eg: "<name>") may be translated
|
||||||
#, fuzzy
|
#, fuzzy
|
||||||
msgid ""
|
msgid ""
|
||||||
"[-current] [-exclude=<nick>[,<nick>...]] <command> || [-current] "
|
"[-current] [-exclude=<nick>[,<nick>...]] <command> || [-current] [-"
|
||||||
"-include=<nick>[,<nick>...] <command>"
|
"include=<nick>[,<nick>...]] <command>"
|
||||||
msgstr "[сокращение [команда [аргументы]]]"
|
msgstr "[сокращение [команда [аргументы]]]"
|
||||||
|
|
||||||
#, fuzzy
|
#, fuzzy
|
||||||
@@ -8686,8 +9005,8 @@ msgstr "отправить сообщение на все каналы всех
|
|||||||
|
|
||||||
#. TRANSLATORS: only text between angle brackets (eg: "<name>") may be translated
|
#. TRANSLATORS: only text between angle brackets (eg: "<name>") may be translated
|
||||||
msgid ""
|
msgid ""
|
||||||
"[-exclude=<server>[,<server>...]] <command> || -include=<server>[,"
|
"[-exclude=<server>[,<server>...]] <command> || [-include=<server>[,"
|
||||||
"<server>...] <command>"
|
"<server>...]] <command>"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid "raw[-exclude]: exclude some servers (wildcard \"*\" is allowed)"
|
msgid "raw[-exclude]: exclude some servers (wildcard \"*\" is allowed)"
|
||||||
@@ -8837,7 +9156,7 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid ""
|
msgid ""
|
||||||
"raw[ack]: acknowledge capabilities which require client-side acknowledgement"
|
"raw[ack]: acknowledge capabilities which require client-side acknowledgment"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#, fuzzy
|
#, fuzzy
|
||||||
@@ -10805,8 +11124,9 @@ msgstr ""
|
|||||||
msgid ""
|
msgid ""
|
||||||
"comma-separated list of fields to sort channels (see /help list for a list "
|
"comma-separated list of fields to sort channels (see /help list for a list "
|
||||||
"of fields); char \"-\" can be used before field to reverse order, char \"~\" "
|
"of fields); char \"-\" can be used before field to reverse order, char \"~\" "
|
||||||
"can be used to do a case-insensitive comparison; example: \"-users,~name\" "
|
"can be used to do a case-insensitive comparison; example: \"-users,~name2\" "
|
||||||
"for biggest channels first then case-insensitive sort on name"
|
"for biggest channels first then case-insensitive sort on channel name "
|
||||||
|
"without prefix"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#, fuzzy
|
#, fuzzy
|
||||||
@@ -11261,7 +11581,7 @@ msgstr "цель: название сервера"
|
|||||||
msgid "get nick from IRC host"
|
msgid "get nick from IRC host"
|
||||||
msgstr "банит ник или хост"
|
msgstr "банит ник или хост"
|
||||||
|
|
||||||
msgid "IRC host (like `:nick!name@server.com`)"
|
msgid "IRC host (like `:nick!name@server`)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid ""
|
msgid ""
|
||||||
@@ -11495,8 +11815,8 @@ msgstr "Это окно не является каналом!\n"
|
|||||||
|
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"%d channels (total: %d) | Filter: %s | Sort: %s | Key(input): ctrl+j=join "
|
"%d channels (total: %d) | Filter: %s | Sort: %s | Keys: ctrl+j=join channel "
|
||||||
"channel, ($)=refresh, (q)=close buffer"
|
"| Input: $=refresh, s:x,y=sort, words=filter, *=reset filter, q=close buffer"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid "Empty list of channels, try \"$\" to refresh list"
|
msgid "Empty list of channels, try \"$\" to refresh list"
|
||||||
@@ -12620,7 +12940,7 @@ msgid ""
|
|||||||
"and the current file is renamed with extension .1; an integer number with a "
|
"and the current file is renamed with extension .1; an integer number with a "
|
||||||
"suffix is allowed: b = bytes (default if no unit given), k = kilobytes, m = "
|
"suffix is allowed: b = bytes (default if no unit given), k = kilobytes, m = "
|
||||||
"megabytes, g = gigabytes, t = terabytes; example: \"2g\" causes a rotation "
|
"megabytes, g = gigabytes, t = terabytes; example: \"2g\" causes a rotation "
|
||||||
"if the file size is > 2,000,000,000 bytes; if set to \"0\", no rotation is "
|
"if the file size is greater than 2 GB; if set to \"0\", no rotation is "
|
||||||
"performed (unlimited log size); WARNING: before changing this option, you "
|
"performed (unlimited log size); WARNING: before changing this option, you "
|
||||||
"should first set the compression type via option "
|
"should first set the compression type via option "
|
||||||
"logger.file.rotation_compression_type"
|
"logger.file.rotation_compression_type"
|
||||||
@@ -13951,7 +14271,7 @@ msgid "%s%s: no connection to remote relay \"%s\""
|
|||||||
msgstr "%s не подключен к серверу \"%s\"!\n"
|
msgstr "%s не подключен к серверу \"%s\"!\n"
|
||||||
|
|
||||||
#, fuzzy, c-format
|
#, fuzzy, c-format
|
||||||
msgid "remote[%s]: auto-reconnection is cancelled"
|
msgid "remote[%s]: auto-reconnection is canceled"
|
||||||
msgstr "Авто-переподключение отменено\n"
|
msgstr "Авто-переподключение отменено\n"
|
||||||
|
|
||||||
#, fuzzy, c-format
|
#, fuzzy, c-format
|
||||||
@@ -14376,21 +14696,21 @@ msgstr ""
|
|||||||
#, fuzzy
|
#, fuzzy
|
||||||
msgid ""
|
msgid ""
|
||||||
"comma separated list of hash algorithms used for password authentication in "
|
"comma separated list of hash algorithms used for password authentication in "
|
||||||
"weechat protocol, among these values: \"plain\" (password in plain text, not "
|
"\"api\" and \"weechat\" protocols, among these values: \"plain\" (password "
|
||||||
"hashed), \"sha256\", \"sha512\", \"pbkdf2+sha256\", \"pbkdf2+sha512\"), "
|
"in plain text, not hashed), \"sha256\", \"sha512\", \"pbkdf2+sha256\", "
|
||||||
"\"*\" means all algorithms, a name beginning with \"!\" is a negative value "
|
"\"pbkdf2+sha512\"), \"*\" means all algorithms, a name beginning with \"!\" "
|
||||||
"to prevent an algorithm from being used, wildcard \"*\" is allowed in names "
|
"is a negative value to prevent an algorithm from being used, wildcard \"*\" "
|
||||||
"(examples: \"*\", \"pbkdf2*\", \"*,!plain\")"
|
"is allowed in names (examples: \"*\", \"pbkdf2*\", \"*,!plain\")"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"разделённый запятыми список автоматически загружаемых при запуске plug-"
|
"разделённый запятыми список автоматически загружаемых при запуске plug-"
|
||||||
"in'ов , \"*\" означает все найденные plug-in'ы (имена могут быть не полными, "
|
"in'ов , \"*\" означает все найденные plug-in'ы (имена могут быть не полными, "
|
||||||
"например \"perl\" успешно загрузит \"libperl.so\")"
|
"например \"perl\" успешно загрузит \"libperl.so\")"
|
||||||
|
|
||||||
msgid ""
|
msgid ""
|
||||||
"number of iterations asked to the client in weechat protocol when a hashed "
|
"number of iterations asked to the client in \"api\" and \"weechat\" "
|
||||||
"password with algorithm PBKDF2 is used for authentication; more iterations "
|
"protocols when a hashed password with algorithm PBKDF2 is used for "
|
||||||
"is better in term of security but is slower to compute; this number should "
|
"authentication; more iterations is better in term of security but is slower "
|
||||||
"not be too high if your CPU is slow"
|
"to compute; this number should not be too high if your CPU is slow"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid ""
|
msgid ""
|
||||||
@@ -14423,6 +14743,11 @@ msgid ""
|
|||||||
"1 are recommended values)"
|
"1 are recommended values)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
msgid ""
|
||||||
|
"permissions for the Unix socket, as octal value (see man chmod); it must be "
|
||||||
|
"a number with 3 digits, each between 0 and 7"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid ""
|
msgid ""
|
||||||
"POSIX extended regular expression with origins allowed in websockets (case-"
|
"POSIX extended regular expression with origins allowed in websockets (case-"
|
||||||
"insensitive, use \"(?-i)\" at beginning to make it case-sensitive), example: "
|
"insensitive, use \"(?-i)\" at beginning to make it case-sensitive), example: "
|
||||||
@@ -14522,7 +14847,7 @@ msgstr "Нет сервера.\n"
|
|||||||
#. TRANSLATORS: please do not translate the status names, they must be used in English
|
#. TRANSLATORS: please do not translate the status names, they must be used in English
|
||||||
msgid ""
|
msgid ""
|
||||||
"protocol,status (both are optional, for each argument \"*\" means all; "
|
"protocol,status (both are optional, for each argument \"*\" means all; "
|
||||||
"protocols: irc, weechat; statuses: connecting, waiting_auth, connected, "
|
"protocols: api, irc, weechat; statuses: connecting, waiting_auth, connected, "
|
||||||
"auth_failed, disconnected)"
|
"auth_failed, disconnected)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@@ -14644,6 +14969,10 @@ msgstr "%s невозможно создать сокет\n"
|
|||||||
msgid "%s%s: cannot \"bind\" on port %d (%s): error %d %s"
|
msgid "%s%s: cannot \"bind\" on port %d (%s): error %d %s"
|
||||||
msgstr "%s невозможно создать сокет\n"
|
msgstr "%s невозможно создать сокет\n"
|
||||||
|
|
||||||
|
#, fuzzy, c-format
|
||||||
|
msgid "%s%s: warning: failed to set permissions on path %s (%s): error %d %s"
|
||||||
|
msgstr "%s невозможно создать сокет\n"
|
||||||
|
|
||||||
#, fuzzy, c-format
|
#, fuzzy, c-format
|
||||||
msgid "%s%s: cannot \"listen\" on path %s (%s): error %d %s"
|
msgid "%s%s: cannot \"listen\" on path %s (%s): error %d %s"
|
||||||
msgstr "%s невозможно создать сокет\n"
|
msgstr "%s невозможно создать сокет\n"
|
||||||
@@ -14682,7 +15011,7 @@ msgstr ""
|
|||||||
msgid "%s%s: not enough memory for listening on new port"
|
msgid "%s%s: not enough memory for listening on new port"
|
||||||
msgstr "%s недостаточно памяти для нового DCC\n"
|
msgstr "%s недостаточно памяти для нового DCC\n"
|
||||||
|
|
||||||
msgid "Relay WeeChat data to remote application (irc/weechat protocols)"
|
msgid "Relay WeeChat data to remote applications"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#, fuzzy
|
#, fuzzy
|
||||||
@@ -14926,9 +15255,9 @@ msgstr ""
|
|||||||
|
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"%d/%d scripts (filter: %s) | Sort: %s | Alt+key/input: i=install, r=remove, "
|
"%d/%d scripts | Filter: %s | Sort: %s | Alt+key/input: i=install, r=remove, "
|
||||||
"l=load, L=reload, u=unload, A=autoload, h=(un)hold, v=view script | Input: "
|
"l=load, L=reload, u=unload, A=autoload, h=(un)hold, v=view script | Input: "
|
||||||
"q=close, $=refresh, s:x,y=sort, words=filter, *=reset filter | Mouse: "
|
"$=refresh, s:x,y=sort, words=filter, *=reset filter, q=close buffer | Mouse: "
|
||||||
"left=select, right=install/remove"
|
"left=select, right=install/remove"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@@ -15282,6 +15611,9 @@ msgstr "FIFO pipe закрыт\n"
|
|||||||
msgid "script name with extension"
|
msgid "script name with extension"
|
||||||
msgstr "Список сокращений:\n"
|
msgstr "Список сокращений:\n"
|
||||||
|
|
||||||
|
msgid "comma-separated list of plugin:extension with supported languages"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "script name with extension (wildcard \"*\" is allowed) (optional)"
|
msgid "script name with extension (wildcard \"*\" is allowed) (optional)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@@ -15874,7 +16206,9 @@ msgstr ""
|
|||||||
msgid "> type `command_run`: command(s) (required)"
|
msgid "> type `command_run`: command(s) (required)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid "> type `timer`: interval (required), align on second, max calls"
|
msgid ""
|
||||||
|
"> type `timer`: interval (required, in milliseconds), align on second, max "
|
||||||
|
"calls"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid "> type `config`: name(s) of option (required)"
|
msgid "> type `config`: name(s) of option (required)"
|
||||||
@@ -16220,6 +16554,11 @@ msgid ""
|
|||||||
"truncate content)"
|
"truncate content)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
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 ""
|
||||||
|
|
||||||
msgid "Typing status of users"
|
msgid "Typing status of users"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@@ -16366,8 +16705,9 @@ msgstr "не ожидать ACK при отправке файла"
|
|||||||
|
|
||||||
#, fuzzy
|
#, fuzzy
|
||||||
msgid ""
|
msgid ""
|
||||||
"IP or DNS address used for sending and passively receiving files/chats (if "
|
"IP or DNS address used for sending and passively receiving files/chats; if "
|
||||||
"empty, local interface IP is used)"
|
"empty, local interface IP is used (note: content is evaluated, see /help "
|
||||||
|
"eval)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"IP адрес или домен, используемый для исходящих DCC соединений (пустое "
|
"IP адрес или домен, используемый для исходящих DCC соединений (пустое "
|
||||||
"значение означает текущий IP адрес)"
|
"значение означает текущий IP адрес)"
|
||||||
|
|||||||
+467
-133
@@ -23,7 +23,7 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: WeeChat\n"
|
"Project-Id-Version: WeeChat\n"
|
||||||
"Report-Msgid-Bugs-To: flashcode@flashtux.org\n"
|
"Report-Msgid-Bugs-To: flashcode@flashtux.org\n"
|
||||||
"POT-Creation-Date: 2026-03-16 13:17+0100\n"
|
"POT-Creation-Date: 2026-07-05 12:20+0200\n"
|
||||||
"PO-Revision-Date: 2014-08-16 10:27+0200\n"
|
"PO-Revision-Date: 2014-08-16 10:27+0200\n"
|
||||||
"Last-Translator: Sébastien Helleu <flashcode@flashtux.org>\n"
|
"Last-Translator: Sébastien Helleu <flashcode@flashtux.org>\n"
|
||||||
"Language-Team: weechat-dev <weechat-dev@nongnu.org>\n"
|
"Language-Team: weechat-dev <weechat-dev@nongnu.org>\n"
|
||||||
@@ -32,6 +32,141 @@ msgstr ""
|
|||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
|
|
||||||
|
#. TRANSLATORS: command line option "-a", "--no-connect"
|
||||||
|
msgid "disable auto-connect to servers at startup"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. TRANSLATORS: command line option "-c", "--colors"
|
||||||
|
msgid "display default colors in terminal and exit"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. TRANSLATORS: only "<path>" may be translated
|
||||||
|
msgid "-d, --dir <path>"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. TRANSLATORS: command line option "-d", "--dir <path>"
|
||||||
|
msgid ""
|
||||||
|
"force a single WeeChat home directory or 5 different directories separated "
|
||||||
|
"by colons (in this order: config, data, state, cache, runtime) (environment "
|
||||||
|
"variable WEECHAT_HOME is read if this option is not given)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. TRANSLATORS: command line option "-t", "--temp-dir"
|
||||||
|
msgid ""
|
||||||
|
"create a temporary WeeChat home directory and delete it on exit "
|
||||||
|
"(incompatible with option \"-d\")"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. TRANSLATORS: command line option "-h", "--help"
|
||||||
|
msgid "display this help and exit"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. TRANSLATORS: command line option "-i", "--build-info"
|
||||||
|
msgid "display build information and exit"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. TRANSLATORS: command line option "-l", "--license"
|
||||||
|
msgid "display WeeChat license and exit"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. TRANSLATORS: command line option "-p", "--no-plugin"
|
||||||
|
msgid "don't load any plugin at startup"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. TRANSLATORS: only "<plugins>" may be translated
|
||||||
|
msgid "-P, --plugins <plugins>"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. TRANSLATORS: command line option "-P", "--plugins <plugins>"
|
||||||
|
msgid "load only these plugins at startup (see /help weechat.plugin.autoload)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. TRANSLATORS: only "<cmd>" may be translated (please keep it short)
|
||||||
|
msgid "-r, --run-command <cmd>"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. TRANSLATORS: command line option "-r", "--run-command <cmd>"
|
||||||
|
msgid ""
|
||||||
|
"run command(s) after startup; many commands can be separated by semicolons "
|
||||||
|
"and are evaluated, this option can be given multiple times"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. TRANSLATORS: command line option "-s", "--no-script"
|
||||||
|
msgid "don't load any script at startup"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. TRANSLATORS: command line option "--upgrade"
|
||||||
|
msgid "upgrade WeeChat using session files (see /help upgrade in WeeChat)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. TRANSLATORS: command line option "-v", "--version"
|
||||||
|
msgid "display WeeChat version and exit"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. TRANSLATORS: command line option: "plugin" and "option" may be translated
|
||||||
|
msgid "plugin:option"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. TRANSLATORS: command line option "plugin:option"
|
||||||
|
msgid "option for plugin (see man weechat)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. TRANSLATORS: only "<path>" may be translated
|
||||||
|
msgid "--doc-gen <path>"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. TRANSLATORS: command line option "--doc-gen <path>"
|
||||||
|
msgid "generate files to build documentation and exit"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. TRANSLATORS: command line option "--daemon"
|
||||||
|
msgid ""
|
||||||
|
"run WeeChat as a daemon (fork, new process group, file descriptors closed); "
|
||||||
|
"by default in headless mode WeeChat is blocking and does not run in "
|
||||||
|
"background"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. TRANSLATORS: command line option "--stdout"
|
||||||
|
msgid ""
|
||||||
|
"display log messages on standard output instead of writing them in log file "
|
||||||
|
"(option ignored if option \"--daemon\" is given)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. TRANSLATORS: command line option "--no-dlclose"
|
||||||
|
msgid "do not call function dlclose after plugins are unloaded"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. TRANSLATORS: command line option "--no-gnutls"
|
||||||
|
msgid "disable init/deinit of gnutls"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. TRANSLATORS: command line option "--no-gcrypt"
|
||||||
|
msgid "disable init/deinit of gcrypt"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. TRANSLATORS: "%s %s" after "compiled on" is date and time
|
||||||
|
#, c-format
|
||||||
|
msgid ""
|
||||||
|
"WeeChat %s Copyright %s, compiled on %s %s\n"
|
||||||
|
"Developed by %s <%s> - %s"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Usage:"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "[option...] [plugin:option...]"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Extra options in headless mode:"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Debug options (for tools like valgrind, DO NOT USE IN PRODUCTION):"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#, c-format
|
||||||
|
msgid "Error: missing argument for \"%s\" option\n"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "List of bars:"
|
msgid "List of bars:"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@@ -136,7 +271,7 @@ msgid "%sUnable to scroll bar \"%s\""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%sBuffer number \"%d\" is out of range (it must be between 1 and %d)"
|
msgid "%sBuffer number %d is out of range (it must be between 1 and %d)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid "Buffers list:"
|
msgid "Buffers list:"
|
||||||
@@ -465,7 +600,7 @@ msgid "%sArgument \"-yes\" is required for keys reset (security reason)"
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%d new key added"
|
msgid "%d new key added (context: \"%s\")"
|
||||||
msgid_plural "%d new keys added (context: \"%s\")"
|
msgid_plural "%d new keys added (context: \"%s\")"
|
||||||
msgstr[0] ""
|
msgstr[0] ""
|
||||||
msgstr[1] ""
|
msgstr[1] ""
|
||||||
@@ -791,6 +926,47 @@ msgstr ""
|
|||||||
msgid "%sFunction \"%s\" is not available on this system"
|
msgid "%sFunction \"%s\" is not available on this system"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "No theme available"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Themes:"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#, c-format
|
||||||
|
msgid " %s %s%s%s (file)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#, c-format
|
||||||
|
msgid "%sTheme \"%s\" not found"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#, c-format
|
||||||
|
msgid "Theme \"%s%s%s\":"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#, c-format
|
||||||
|
msgid " source: %s"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid " source: built-in (in-memory)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#, c-format
|
||||||
|
msgid " description: %s"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#, c-format
|
||||||
|
msgid " date: %s"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#, c-format
|
||||||
|
msgid " WeeChat version: %s"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#, c-format
|
||||||
|
msgid " overrides: %d"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%sFailed to unset option \"%s\""
|
msgid "%sFailed to unset option \"%s\""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@@ -937,6 +1113,16 @@ msgid ""
|
|||||||
"message: message for away (if no message is given, away status is removed)"
|
"message: message for away (if no message is given, away status is removed)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
msgid ""
|
||||||
|
"By default the away status is displayed only locally by the irc plugin (see /"
|
||||||
|
"help irc.look.display_away)."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid ""
|
||||||
|
"This command can be caught by other plugins and scripts (see \"Plugin API "
|
||||||
|
"reference\", function \"hook_command_run\")."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "manage bars"
|
msgid "manage bars"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@@ -1026,7 +1212,7 @@ msgstr ""
|
|||||||
|
|
||||||
msgid ""
|
msgid ""
|
||||||
"option: option to change (for options list, look at /set weechat.bar."
|
"option: option to change (for options list, look at /set weechat.bar."
|
||||||
"<barname>.*)"
|
"<bar_name>.*)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid "value: new value for option"
|
msgid "value: new value for option"
|
||||||
@@ -1464,7 +1650,7 @@ msgstr ""
|
|||||||
|
|
||||||
#. TRANSLATORS: only text between angle brackets (eg: "<name>") may be translated
|
#. TRANSLATORS: only text between angle brackets (eg: "<name>") may be translated
|
||||||
msgid ""
|
msgid ""
|
||||||
"[-n|-s] [-d] <expression> || [-n] [-d [-d]] -c <expression1> <operator> "
|
"[-n|-s] [-e] [-d] <expression> || [-n] [-d [-d]] -c <expression1> <operator> "
|
||||||
"<expression2>"
|
"<expression2>"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@@ -1476,6 +1662,9 @@ msgid ""
|
|||||||
"separated by semicolons)"
|
"separated by semicolons)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "raw[-e]: evaluate all commands before executing them"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid ""
|
msgid ""
|
||||||
"raw[-d]: display debug output after evaluation (with two -d: more verbose "
|
"raw[-d]: display debug output after evaluation (with two -d: more verbose "
|
||||||
"debug)"
|
"debug)"
|
||||||
@@ -1968,7 +2157,7 @@ msgid "display help about commands and options"
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#. TRANSLATORS: only text between angle brackets (eg: "<name>") may be translated
|
#. TRANSLATORS: only text between angle brackets (eg: "<name>") may be translated
|
||||||
msgid "-list|-listfull [<plugin>...]] || <command> || <option>"
|
msgid "-list|-listfull [<plugin>...] || <command> || <option>"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid ""
|
msgid ""
|
||||||
@@ -2019,9 +2208,9 @@ msgid "raw[clear]: clear hotlist"
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid ""
|
msgid ""
|
||||||
"level: \"lowest\" to clear only lowest level in hotlist, highest\" to clear "
|
"level: \"lowest\" to clear only lowest level in hotlist, \"highest\" to "
|
||||||
"only highest level in hotlist, or level mask: integer which is a combination "
|
"clear only highest level in hotlist, or level mask: integer which is a "
|
||||||
"of 1=join/part, 2=message, 4=private, 8=highlight"
|
"combination of 1=join/part, 2=message, 4=private, 8=highlight"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid "raw[remove]: remove current buffer from hotlist"
|
msgid "raw[remove]: remove current buffer from hotlist"
|
||||||
@@ -2833,7 +3022,7 @@ msgstr ""
|
|||||||
|
|
||||||
msgid ""
|
msgid ""
|
||||||
"option: option to change (for options list, look at /set weechat.proxy."
|
"option: option to change (for options list, look at /set weechat.proxy."
|
||||||
"<proxyname>.*)"
|
"<proxy_name>.*)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid " add a http proxy, running on local host, port 8888:"
|
msgid " add a http proxy, running on local host, port 8888:"
|
||||||
@@ -3059,20 +3248,20 @@ msgstr ""
|
|||||||
msgid " encrypt libera SASL password:"
|
msgid " encrypt libera SASL password:"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid " /secure set libera mypassword"
|
msgid " /secure set libera my_password"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid " encrypt oftc password for nickserv:"
|
msgid " encrypt oftc password for nickserv:"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid " /secure set oftc mypassword"
|
msgid " /secure set oftc my_password"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid " alias to ghost the nick \"mynick\":"
|
msgid " alias to ghost the nick \"andrew\":"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid ""
|
msgid ""
|
||||||
" /alias add ghost /eval /msg -server libera nickserv ghost mynick $"
|
" /alias add ghost /eval /msg -server libera nickserv ghost andrew $"
|
||||||
"{sec.data.libera}"
|
"{sec.data.libera}"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@@ -3157,6 +3346,69 @@ msgstr ""
|
|||||||
msgid "number: number of processes to clean"
|
msgid "number: number of processes to clean"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "manage color themes"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. TRANSLATORS: only text between angle brackets (eg: "<name>") may be translated
|
||||||
|
msgid ""
|
||||||
|
"[list [-backups]] || apply <name> || reset || save <name> || rename <old> "
|
||||||
|
"<new> || del <name> || info <name>"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid ""
|
||||||
|
"raw[list]: list registered themes and any *.theme files in the WeeChat "
|
||||||
|
"configuration directory; the active theme (matching weechat.look.theme) is "
|
||||||
|
"marked with \"->\""
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "raw[-backups]: display backup theme files"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid ""
|
||||||
|
"raw[apply]: apply a theme (set every themable option to the value from the "
|
||||||
|
"theme); if a file named <name>.theme exists in directory \"themes\" it "
|
||||||
|
"shadows any built-in theme of the same name"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid ""
|
||||||
|
"raw[reset]: reset every themable option to its default value (restores the "
|
||||||
|
"original look shipped with WeeChat)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid ""
|
||||||
|
"raw[save]: save current themable options to a file <name>.theme in directory "
|
||||||
|
"\"themes\"; every themable option is written, so the file is self-contained; "
|
||||||
|
"the name must not match a built-in theme or start with \"backup-\""
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "raw[rename]: rename a user theme file"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "raw[del]: delete a user theme file"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid ""
|
||||||
|
"raw[info]: display details on a theme (name, description, creation date, "
|
||||||
|
"WeeChat version, number of option overrides)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "name: name of a theme"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid ""
|
||||||
|
"Themes are named bundles of option overrides. Built-in themes are registered "
|
||||||
|
"in memory by core/plugins/scripts; user themes are read from files in "
|
||||||
|
"directory \"themes\" inside the WeeChat configuration directory."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid ""
|
||||||
|
"By default, `/theme apply` command creates a backup of current themable "
|
||||||
|
"values in directory \"themes\" before applying (file name: \"backup-"
|
||||||
|
"<timestamp>.theme\"); the previous state can be restored with: `/theme apply "
|
||||||
|
"backup-<timestamp>`. This is controlled by the option "
|
||||||
|
"weechat.look.theme_backup."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "toggle value of a config option"
|
msgid "toggle value of a config option"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@@ -3303,7 +3555,7 @@ msgstr ""
|
|||||||
msgid "With option \"-quit\", the process is:"
|
msgid "With option \"-quit\", the process is:"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid " 1. close *ALL* connections (irc, xfer, relay, ...)"
|
msgid " 1. close *ALL* connections (irc, xfer, relay, etc.)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid " 2. save session into files (*.upgrade)"
|
msgid " 2. save session into files (*.upgrade)"
|
||||||
@@ -3669,6 +3921,15 @@ msgstr ""
|
|||||||
msgid "names of layouts"
|
msgid "names of layouts"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "names of themes (built-ins + user files + backups)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "names of user theme files (without built-ins and backups)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "names of theme files on disk (user files + backups, no built-ins)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "names of secured data (file sec.conf, section data)"
|
msgid "names of secured data (file sec.conf, section data)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@@ -4468,6 +4729,20 @@ msgstr ""
|
|||||||
msgid "number of spaces used to display tabs in messages"
|
msgid "number of spaces used to display tabs in messages"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
msgid ""
|
||||||
|
"name of the last theme applied with command /theme (set automatically, do "
|
||||||
|
"not change manually); informational only, the theme is not re-applied at "
|
||||||
|
"startup"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid ""
|
||||||
|
"create a backup theme file with the current themable options before applying "
|
||||||
|
"a theme with command /theme; if the backup file cannot be written, the apply "
|
||||||
|
"is aborted (no option is changed); the backup file is written to directory "
|
||||||
|
"\"themes\" inside the WeeChat configuration directory and can be restored "
|
||||||
|
"with the command: `/theme apply backup-<timestamp>`"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid ""
|
msgid ""
|
||||||
"time format for dates converted to strings and displayed in messages (see "
|
"time format for dates converted to strings and displayed in messages (see "
|
||||||
"man strftime for date/time specifiers)"
|
"man strftime for date/time specifiers)"
|
||||||
@@ -5319,6 +5594,100 @@ msgstr ""
|
|||||||
msgid "Resource usage (see \"man getrusage\" for help):"
|
msgid "Resource usage (see \"man getrusage\" for help):"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "WeeChat default theme for light-background terminals"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Automatic backup"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#, c-format
|
||||||
|
msgid "%sTheme: option \"%s\" not found, skipped"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#, c-format
|
||||||
|
msgid "%sTheme: option \"%s\" is not themable, skipped"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#, c-format
|
||||||
|
msgid "%s%s: line %d: malformed section header"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#, c-format
|
||||||
|
msgid "%s%s: line %d: ignoring unknown section \"%s\""
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#, c-format
|
||||||
|
msgid "%s%s: line %d: missing '=' separator"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#, c-format
|
||||||
|
msgid "%s%s: line %d: ignoring unknown [info] key \"%s\""
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#, c-format
|
||||||
|
msgid ""
|
||||||
|
"%sUnable to create theme backup; aborting apply (disable option "
|
||||||
|
"weechat.look.theme_backup to force)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#, c-format
|
||||||
|
msgid "Previous state saved as theme \"%s\"; to restore: /theme apply %s"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#, c-format
|
||||||
|
msgid ""
|
||||||
|
"%sUnable to create theme backup; aborting reset (disable option "
|
||||||
|
"weechat.look.theme_backup to force)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#, c-format
|
||||||
|
msgid "%sName \"%s\" is reserved for automatic backups"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#, c-format
|
||||||
|
msgid "%sName \"%s\" is reserved for a built-in theme"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#, c-format
|
||||||
|
msgid "%sFailed to save theme \"%s\""
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#, c-format
|
||||||
|
msgid "Theme saved to: %s"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#, c-format
|
||||||
|
msgid "%sCannot rename built-in theme \"%s\""
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#, c-format
|
||||||
|
msgid "%sNew name is the same as old name"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#, c-format
|
||||||
|
msgid "%sTheme \"%s\" already exists"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#, c-format
|
||||||
|
msgid "%sFailed to rename theme \"%s\" to \"%s\""
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#, c-format
|
||||||
|
msgid "Theme \"%s\" renamed to \"%s\""
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#, c-format
|
||||||
|
msgid "%sCannot delete built-in theme \"%s\""
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#, c-format
|
||||||
|
msgid "%sFailed to delete theme \"%s\""
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#, c-format
|
||||||
|
msgid "Theme deleted: %s"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%sError upgrading WeeChat with file \"%s\":"
|
msgid "%sError upgrading WeeChat with file \"%s\":"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@@ -5357,7 +5726,7 @@ msgstr ""
|
|||||||
msgid "read - object type"
|
msgid "read - object type"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid "read - bad object type ('object start' expected)"
|
msgid "read - bad object type (\"object start\" expected)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid "read - object id"
|
msgid "read - object id"
|
||||||
@@ -5468,102 +5837,40 @@ msgstr ""
|
|||||||
msgid "End of URL transfer '%s', transfer stopped"
|
msgid "End of URL transfer '%s', transfer stopped"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#. TRANSLATORS: "%s %s" after "compiled on" is date and time
|
|
||||||
#, c-format
|
|
||||||
msgid ""
|
|
||||||
"WeeChat %s Copyright %s, compiled on %s %s\n"
|
|
||||||
"Developed by Sébastien Helleu <flashcode@flashtux.org> - %s"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#, c-format
|
|
||||||
msgid "Usage: %s [option...] [plugin:option...]\n"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
msgid ""
|
|
||||||
" -a, --no-connect disable auto-connect to servers at startup\n"
|
|
||||||
" -c, --colors display default colors in terminal and exit\n"
|
|
||||||
" -d, --dir <path> force a single WeeChat home directory\n"
|
|
||||||
" or 5 different directories separated by colons "
|
|
||||||
"(in this order: config, data, state, cache, runtime)\n"
|
|
||||||
" (environment variable WEECHAT_HOME is read if "
|
|
||||||
"this option is not given)\n"
|
|
||||||
" -t, --temp-dir create a temporary WeeChat home directory and "
|
|
||||||
"delete it on exit\n"
|
|
||||||
" (incompatible with option \"-d\")\n"
|
|
||||||
" -h, --help display this help and exit\n"
|
|
||||||
" -i, --build-info display build information and exit\n"
|
|
||||||
" -l, --license display WeeChat license and exit\n"
|
|
||||||
" -p, --no-plugin don't load any plugin at startup\n"
|
|
||||||
" -P, --plugins <plugins> load only these plugins at startup\n"
|
|
||||||
" (see /help weechat.plugin.autoload)\n"
|
|
||||||
" -r, --run-command <cmd> run command(s) after startup;\n"
|
|
||||||
" many commands can be separated by semicolons and "
|
|
||||||
"are evaluated,\n"
|
|
||||||
" this option can be given multiple times\n"
|
|
||||||
" -s, --no-script don't load any script at startup\n"
|
|
||||||
" --upgrade upgrade WeeChat using session files (see /help "
|
|
||||||
"upgrade in WeeChat)\n"
|
|
||||||
" -v, --version display WeeChat version and exit\n"
|
|
||||||
" plugin:option option for plugin (see man weechat)\n"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
msgid "Extra options in headless mode:\n"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
msgid ""
|
|
||||||
" --doc-gen <path> generate files to build documentation and exit\n"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
msgid ""
|
|
||||||
" --daemon run WeeChat as a daemon (fork, new process group, "
|
|
||||||
"file descriptors closed);\n"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
msgid ""
|
|
||||||
" (by default in headless mode WeeChat is blocking "
|
|
||||||
"and does not run in background)\n"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
msgid ""
|
|
||||||
" --stdout display log messages on standard output instead "
|
|
||||||
"of writing them in log file\n"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
msgid ""
|
|
||||||
" (option ignored if option \"--daemon\" is given)\n"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
msgid ""
|
|
||||||
"Debug options (for tools like valgrind, DO NOT USE IN PRODUCTION):\n"
|
|
||||||
" --no-dlclose do not call function dlclose after plugins are "
|
|
||||||
"unloaded\n"
|
|
||||||
" --no-gnutls disable init/deinit of gnutls\n"
|
|
||||||
" --no-gcrypt disable init/deinit of gcrypt\n"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#, c-format
|
|
||||||
msgid "Error: missing argument for \"%s\" option\n"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
msgid "WeeChat is running in headless mode (ctrl-c to quit)."
|
msgid "WeeChat is running in headless mode (ctrl-c to quit)."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Welcome to WeeChat!"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid ""
|
msgid ""
|
||||||
"Welcome to WeeChat!\n"
|
|
||||||
"\n"
|
|
||||||
"If you are discovering WeeChat, it is recommended to read at least the "
|
"If you are discovering WeeChat, it is recommended to read at least the "
|
||||||
"quickstart guide, and the user's guide if you have some time; they explain "
|
"quickstart guide, and the user's guide if you have some time; they explain "
|
||||||
"main WeeChat concepts.\n"
|
"main WeeChat concepts."
|
||||||
"All WeeChat docs are available at: https://weechat.org/doc/\n"
|
msgstr ""
|
||||||
"\n"
|
|
||||||
|
#, c-format
|
||||||
|
msgid "All WeeChat docs are available at: %s"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid ""
|
||||||
"Moreover, there is inline help with /help on all commands and options (use "
|
"Moreover, there is inline help with /help on all commands and options (use "
|
||||||
"Tab key to complete the name).\n"
|
"Tab key to complete the name)."
|
||||||
"The command /fset can help to customize WeeChat.\n"
|
msgstr ""
|
||||||
"\n"
|
|
||||||
|
msgid "The command /fset can help to customize WeeChat."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid ""
|
||||||
"You can add and connect to an IRC server with /server and /connect commands "
|
"You can add and connect to an IRC server with /server and /connect commands "
|
||||||
"(see /help server)."
|
"(see /help server)."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
msgid ""
|
||||||
|
"The \"light\" theme will be automatically applied. Use /theme reset to "
|
||||||
|
"switch back to the default dark theme."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#. TRANSLATORS: the "under %s" can be "under screen" or "under tmux"
|
#. TRANSLATORS: the "under %s" can be "under screen" or "under tmux"
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
@@ -6212,7 +6519,7 @@ msgstr ""
|
|||||||
msgid ""
|
msgid ""
|
||||||
" - ${index_displayed}: index of line displayed in the bar item (starts at "
|
" - ${index_displayed}: index of line displayed in the bar item (starts at "
|
||||||
"0, only buffers displayed increment this index, see option "
|
"0, only buffers displayed increment this index, see option "
|
||||||
"buflist.look.display_conditions"
|
"buflist.look.display_conditions)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid "buflist bar items"
|
msgid "buflist bar items"
|
||||||
@@ -6981,7 +7288,8 @@ msgstr ""
|
|||||||
|
|
||||||
msgid ""
|
msgid ""
|
||||||
"> `t:xxx`: show only type \"xxx\" (bool/int/str/col/enum or boolean/integer/"
|
"> `t:xxx`: show only type \"xxx\" (bool/int/str/col/enum or boolean/integer/"
|
||||||
"string/color/enum)"
|
"string/color/enum); the special value \"themable\" can be used to show all "
|
||||||
|
"options that can be used in themes, regardless of type"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid "> `d`: show only changed options"
|
msgid "> `d`: show only changed options"
|
||||||
@@ -7642,7 +7950,7 @@ msgid "%s%s: not connected to server \"%s\"!"
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%s: auto-reconnection is cancelled"
|
msgid "%s: auto-reconnection is canceled"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#, c-format
|
#, c-format
|
||||||
@@ -7801,6 +8109,11 @@ msgid_plural "seconds"
|
|||||||
msgstr[0] ""
|
msgstr[0] ""
|
||||||
msgstr[1] ""
|
msgstr[1] ""
|
||||||
|
|
||||||
|
msgid "millisecond"
|
||||||
|
msgid_plural "milliseconds"
|
||||||
|
msgstr[0] ""
|
||||||
|
msgstr[1] ""
|
||||||
|
|
||||||
msgid "minute"
|
msgid "minute"
|
||||||
msgid_plural "minutes"
|
msgid_plural "minutes"
|
||||||
msgstr[0] ""
|
msgstr[0] ""
|
||||||
@@ -7933,7 +8246,7 @@ msgstr ""
|
|||||||
#. TRANSLATORS: only text between angle brackets (eg: "<name>") may be translated
|
#. TRANSLATORS: only text between angle brackets (eg: "<name>") may be translated
|
||||||
msgid ""
|
msgid ""
|
||||||
"[-current] [-parted|-all] [-exclude=<channel>[,<channel>...]] <command> || [-"
|
"[-current] [-parted|-all] [-exclude=<channel>[,<channel>...]] <command> || [-"
|
||||||
"current] [-parted|-all] -include=<channel>[,<channel>...] <command>"
|
"current] [-parted|-all] [-include=<channel>[,<channel>...]] <command>"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid "raw[-current]: execute command for channels of current server only"
|
msgid "raw[-current]: execute command for channels of current server only"
|
||||||
@@ -8007,8 +8320,8 @@ msgstr ""
|
|||||||
|
|
||||||
#. TRANSLATORS: only text between angle brackets (eg: "<name>") may be translated
|
#. TRANSLATORS: only text between angle brackets (eg: "<name>") may be translated
|
||||||
msgid ""
|
msgid ""
|
||||||
"[-current] [-exclude=<nick>[,<nick>...]] <command> || [-current] "
|
"[-current] [-exclude=<nick>[,<nick>...]] <command> || [-current] [-"
|
||||||
"-include=<nick>[,<nick>...] <command>"
|
"include=<nick>[,<nick>...]] <command>"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid ""
|
msgid ""
|
||||||
@@ -8054,8 +8367,8 @@ msgstr ""
|
|||||||
|
|
||||||
#. TRANSLATORS: only text between angle brackets (eg: "<name>") may be translated
|
#. TRANSLATORS: only text between angle brackets (eg: "<name>") may be translated
|
||||||
msgid ""
|
msgid ""
|
||||||
"[-exclude=<server>[,<server>...]] <command> || -include=<server>[,"
|
"[-exclude=<server>[,<server>...]] <command> || [-include=<server>[,"
|
||||||
"<server>...] <command>"
|
"<server>...]] <command>"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid "raw[-exclude]: exclude some servers (wildcard \"*\" is allowed)"
|
msgid "raw[-exclude]: exclude some servers (wildcard \"*\" is allowed)"
|
||||||
@@ -8179,7 +8492,7 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid ""
|
msgid ""
|
||||||
"raw[ack]: acknowledge capabilities which require client-side acknowledgement"
|
"raw[ack]: acknowledge capabilities which require client-side acknowledgment"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid "raw[end]: end the capability negotiation"
|
msgid "raw[end]: end the capability negotiation"
|
||||||
@@ -9793,8 +10106,9 @@ msgstr ""
|
|||||||
msgid ""
|
msgid ""
|
||||||
"comma-separated list of fields to sort channels (see /help list for a list "
|
"comma-separated list of fields to sort channels (see /help list for a list "
|
||||||
"of fields); char \"-\" can be used before field to reverse order, char \"~\" "
|
"of fields); char \"-\" can be used before field to reverse order, char \"~\" "
|
||||||
"can be used to do a case-insensitive comparison; example: \"-users,~name\" "
|
"can be used to do a case-insensitive comparison; example: \"-users,~name2\" "
|
||||||
"for biggest channels first then case-insensitive sort on name"
|
"for biggest channels first then case-insensitive sort on channel name "
|
||||||
|
"without prefix"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid "strip channel topic colors in /list buffer"
|
msgid "strip channel topic colors in /list buffer"
|
||||||
@@ -10200,7 +10514,7 @@ msgstr ""
|
|||||||
msgid "get nick from IRC host"
|
msgid "get nick from IRC host"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid "IRC host (like `:nick!name@server.com`)"
|
msgid "IRC host (like `:nick!name@server`)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid ""
|
msgid ""
|
||||||
@@ -10404,8 +10718,8 @@ msgstr ""
|
|||||||
|
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"%d channels (total: %d) | Filter: %s | Sort: %s | Key(input): ctrl+j=join "
|
"%d channels (total: %d) | Filter: %s | Sort: %s | Keys: ctrl+j=join channel "
|
||||||
"channel, ($)=refresh, (q)=close buffer"
|
"| Input: $=refresh, s:x,y=sort, words=filter, *=reset filter, q=close buffer"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid "Empty list of channels, try \"$\" to refresh list"
|
msgid "Empty list of channels, try \"$\" to refresh list"
|
||||||
@@ -11495,7 +11809,7 @@ msgid ""
|
|||||||
"and the current file is renamed with extension .1; an integer number with a "
|
"and the current file is renamed with extension .1; an integer number with a "
|
||||||
"suffix is allowed: b = bytes (default if no unit given), k = kilobytes, m = "
|
"suffix is allowed: b = bytes (default if no unit given), k = kilobytes, m = "
|
||||||
"megabytes, g = gigabytes, t = terabytes; example: \"2g\" causes a rotation "
|
"megabytes, g = gigabytes, t = terabytes; example: \"2g\" causes a rotation "
|
||||||
"if the file size is > 2,000,000,000 bytes; if set to \"0\", no rotation is "
|
"if the file size is greater than 2 GB; if set to \"0\", no rotation is "
|
||||||
"performed (unlimited log size); WARNING: before changing this option, you "
|
"performed (unlimited log size); WARNING: before changing this option, you "
|
||||||
"should first set the compression type via option "
|
"should first set the compression type via option "
|
||||||
"logger.file.rotation_compression_type"
|
"logger.file.rotation_compression_type"
|
||||||
@@ -12716,7 +13030,7 @@ msgid "%s%s: no connection to remote relay \"%s\""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "remote[%s]: auto-reconnection is cancelled"
|
msgid "remote[%s]: auto-reconnection is canceled"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#, c-format
|
#, c-format
|
||||||
@@ -13100,18 +13414,18 @@ msgstr ""
|
|||||||
|
|
||||||
msgid ""
|
msgid ""
|
||||||
"comma separated list of hash algorithms used for password authentication in "
|
"comma separated list of hash algorithms used for password authentication in "
|
||||||
"weechat protocol, among these values: \"plain\" (password in plain text, not "
|
"\"api\" and \"weechat\" protocols, among these values: \"plain\" (password "
|
||||||
"hashed), \"sha256\", \"sha512\", \"pbkdf2+sha256\", \"pbkdf2+sha512\"), "
|
"in plain text, not hashed), \"sha256\", \"sha512\", \"pbkdf2+sha256\", "
|
||||||
"\"*\" means all algorithms, a name beginning with \"!\" is a negative value "
|
"\"pbkdf2+sha512\"), \"*\" means all algorithms, a name beginning with \"!\" "
|
||||||
"to prevent an algorithm from being used, wildcard \"*\" is allowed in names "
|
"is a negative value to prevent an algorithm from being used, wildcard \"*\" "
|
||||||
"(examples: \"*\", \"pbkdf2*\", \"*,!plain\")"
|
"is allowed in names (examples: \"*\", \"pbkdf2*\", \"*,!plain\")"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid ""
|
msgid ""
|
||||||
"number of iterations asked to the client in weechat protocol when a hashed "
|
"number of iterations asked to the client in \"api\" and \"weechat\" "
|
||||||
"password with algorithm PBKDF2 is used for authentication; more iterations "
|
"protocols when a hashed password with algorithm PBKDF2 is used for "
|
||||||
"is better in term of security but is slower to compute; this number should "
|
"authentication; more iterations is better in term of security but is slower "
|
||||||
"not be too high if your CPU is slow"
|
"to compute; this number should not be too high if your CPU is slow"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid ""
|
msgid ""
|
||||||
@@ -13141,6 +13455,11 @@ msgid ""
|
|||||||
"1 are recommended values)"
|
"1 are recommended values)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
msgid ""
|
||||||
|
"permissions for the Unix socket, as octal value (see man chmod); it must be "
|
||||||
|
"a number with 3 digits, each between 0 and 7"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid ""
|
msgid ""
|
||||||
"POSIX extended regular expression with origins allowed in websockets (case-"
|
"POSIX extended regular expression with origins allowed in websockets (case-"
|
||||||
"insensitive, use \"(?-i)\" at beginning to make it case-sensitive), example: "
|
"insensitive, use \"(?-i)\" at beginning to make it case-sensitive), example: "
|
||||||
@@ -13232,7 +13551,7 @@ msgstr ""
|
|||||||
#. TRANSLATORS: please do not translate the status names, they must be used in English
|
#. TRANSLATORS: please do not translate the status names, they must be used in English
|
||||||
msgid ""
|
msgid ""
|
||||||
"protocol,status (both are optional, for each argument \"*\" means all; "
|
"protocol,status (both are optional, for each argument \"*\" means all; "
|
||||||
"protocols: irc, weechat; statuses: connecting, waiting_auth, connected, "
|
"protocols: api, irc, weechat; statuses: connecting, waiting_auth, connected, "
|
||||||
"auth_failed, disconnected)"
|
"auth_failed, disconnected)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@@ -13351,6 +13670,10 @@ msgstr ""
|
|||||||
msgid "%s%s: cannot \"bind\" on port %d (%s): error %d %s"
|
msgid "%s%s: cannot \"bind\" on port %d (%s): error %d %s"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#, c-format
|
||||||
|
msgid "%s%s: warning: failed to set permissions on path %s (%s): error %d %s"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%s%s: cannot \"listen\" on path %s (%s): error %d %s"
|
msgid "%s%s: cannot \"listen\" on path %s (%s): error %d %s"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@@ -13387,7 +13710,7 @@ msgstr ""
|
|||||||
msgid "%s%s: not enough memory for listening on new port"
|
msgid "%s%s: not enough memory for listening on new port"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid "Relay WeeChat data to remote application (irc/weechat protocols)"
|
msgid "Relay WeeChat data to remote applications"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid "connecting"
|
msgid "connecting"
|
||||||
@@ -13612,9 +13935,9 @@ msgstr ""
|
|||||||
|
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"%d/%d scripts (filter: %s) | Sort: %s | Alt+key/input: i=install, r=remove, "
|
"%d/%d scripts | Filter: %s | Sort: %s | Alt+key/input: i=install, r=remove, "
|
||||||
"l=load, L=reload, u=unload, A=autoload, h=(un)hold, v=view script | Input: "
|
"l=load, L=reload, u=unload, A=autoload, h=(un)hold, v=view script | Input: "
|
||||||
"q=close, $=refresh, s:x,y=sort, words=filter, *=reset filter | Mouse: "
|
"$=refresh, s:x,y=sort, words=filter, *=reset filter, q=close buffer | Mouse: "
|
||||||
"left=select, right=install/remove"
|
"left=select, right=install/remove"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@@ -13932,6 +14255,9 @@ msgstr ""
|
|||||||
msgid "script name with extension"
|
msgid "script name with extension"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "comma-separated list of plugin:extension with supported languages"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "script name with extension (wildcard \"*\" is allowed) (optional)"
|
msgid "script name with extension (wildcard \"*\" is allowed) (optional)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@@ -14490,7 +14816,9 @@ msgstr ""
|
|||||||
msgid "> type `command_run`: command(s) (required)"
|
msgid "> type `command_run`: command(s) (required)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid "> type `timer`: interval (required), align on second, max calls"
|
msgid ""
|
||||||
|
"> type `timer`: interval (required, in milliseconds), align on second, max "
|
||||||
|
"calls"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid "> type `config`: name(s) of option (required)"
|
msgid "> type `config`: name(s) of option (required)"
|
||||||
@@ -14815,6 +15143,11 @@ msgid ""
|
|||||||
"truncate content)"
|
"truncate content)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
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 ""
|
||||||
|
|
||||||
msgid "Typing status of users"
|
msgid "Typing status of users"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@@ -14942,8 +15275,9 @@ msgid "does not wait for ACK when sending file"
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid ""
|
msgid ""
|
||||||
"IP or DNS address used for sending and passively receiving files/chats (if "
|
"IP or DNS address used for sending and passively receiving files/chats; if "
|
||||||
"empty, local interface IP is used)"
|
"empty, local interface IP is used (note: content is evaluated, see /help "
|
||||||
|
"eval)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid ""
|
msgid ""
|
||||||
|
|||||||
@@ -0,0 +1,15 @@
|
|||||||
|
# SPDX-FileCopyrightText: 2025-2026 Sébastien Helleu <flashcode@flashtux.org>
|
||||||
|
#
|
||||||
|
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
|
|
||||||
|
line-length = 120
|
||||||
|
|
||||||
|
[lint]
|
||||||
|
select = ["ALL"]
|
||||||
|
ignore = [
|
||||||
|
"D203", # incorrect-blank-line-before-class
|
||||||
|
"D213", # multi-line-summary-second-line
|
||||||
|
]
|
||||||
|
|
||||||
|
[lint.pylint]
|
||||||
|
max-args = 10
|
||||||
+3
-16
@@ -23,6 +23,7 @@
|
|||||||
|
|
||||||
set(LIB_CORE_SRC
|
set(LIB_CORE_SRC
|
||||||
weechat.c weechat.h
|
weechat.c weechat.h
|
||||||
|
core-args.c core-args.h
|
||||||
core-arraylist.c core-arraylist.h
|
core-arraylist.c core-arraylist.h
|
||||||
core-backtrace.c core-backtrace.h
|
core-backtrace.c core-backtrace.h
|
||||||
core-calc.c core-calc.h
|
core-calc.c core-calc.h
|
||||||
@@ -50,6 +51,8 @@ set(LIB_CORE_SRC
|
|||||||
core-signal.c core-signal.h
|
core-signal.c core-signal.h
|
||||||
core-string.c core-string.h
|
core-string.c core-string.h
|
||||||
core-sys.c core-sys.h
|
core-sys.c core-sys.h
|
||||||
|
core-theme.c core-theme.h
|
||||||
|
core-theme-builtin.c
|
||||||
core-upgrade.c core-upgrade.h
|
core-upgrade.c core-upgrade.h
|
||||||
core-upgrade-file.c core-upgrade-file.h
|
core-upgrade-file.c core-upgrade-file.h
|
||||||
core-url.c core-url.h
|
core-url.c core-url.h
|
||||||
@@ -81,22 +84,6 @@ set(LIB_CORE_SRC
|
|||||||
include(CheckSymbolExists)
|
include(CheckSymbolExists)
|
||||||
check_symbol_exists(flock "sys/file.h" HAVE_FLOCK)
|
check_symbol_exists(flock "sys/file.h" HAVE_FLOCK)
|
||||||
|
|
||||||
if(${CMAKE_SYSTEM_NAME} STREQUAL "FreeBSD")
|
|
||||||
find_library(EXECINFO_LIB_PATH execinfo /usr/local/lib)
|
|
||||||
set(CMAKE_REQUIRED_LIBRARIES "${EXECINFO_LIB_PATH}")
|
|
||||||
check_function_exists(backtrace HAVE_BACKTRACE)
|
|
||||||
else()
|
|
||||||
check_symbol_exists(backtrace "execinfo.h" HAVE_BACKTRACE)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
if(ENABLE_ZSTD)
|
|
||||||
include_directories(${LIBZSTD_INCLUDE_DIRS})
|
|
||||||
endif()
|
|
||||||
|
|
||||||
if(ENABLE_CJSON)
|
|
||||||
include_directories(${LIBCJSON_INCLUDE_DIRS})
|
|
||||||
endif()
|
|
||||||
|
|
||||||
include_directories("${CMAKE_BINARY_DIR}")
|
include_directories("${CMAKE_BINARY_DIR}")
|
||||||
add_library(weechat_core OBJECT ${LIB_CORE_SRC})
|
add_library(weechat_core OBJECT ${LIB_CORE_SRC})
|
||||||
target_link_libraries(weechat_core coverage_config)
|
target_link_libraries(weechat_core coverage_config)
|
||||||
|
|||||||
@@ -0,0 +1,416 @@
|
|||||||
|
/*
|
||||||
|
* SPDX-FileCopyrightText: 2003-2026 Sébastien Helleu <flashcode@flashtux.org>
|
||||||
|
*
|
||||||
|
* SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
|
*
|
||||||
|
* This file is part of WeeChat, the extensible chat client.
|
||||||
|
*
|
||||||
|
* WeeChat is free software; you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation; either version 3 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* WeeChat is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with WeeChat. If not, see <https://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/* Function for command-line arguments */
|
||||||
|
|
||||||
|
#ifdef HAVE_CONFIG_H
|
||||||
|
#include "config.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <string.h>
|
||||||
|
#include <getopt.h>
|
||||||
|
|
||||||
|
#include "weechat.h"
|
||||||
|
#include "core-debug.h"
|
||||||
|
#include "core-list.h"
|
||||||
|
#include "core-string.h"
|
||||||
|
#include "core-utf8.h"
|
||||||
|
#include "core-version.h"
|
||||||
|
#include "../gui/gui-color.h"
|
||||||
|
#include "../plugins/plugin.h"
|
||||||
|
|
||||||
|
/* some command line options */
|
||||||
|
#define OPTION_DOCGEN 1000
|
||||||
|
#define OPTION_NO_DLCLOSE 1001
|
||||||
|
#define OPTION_NO_GNUTLS 1002
|
||||||
|
#define OPTION_NO_GCRYPT 1003
|
||||||
|
|
||||||
|
char *weechat_args_common[][2] = {
|
||||||
|
{
|
||||||
|
"-a, --no-connect",
|
||||||
|
/* TRANSLATORS: command line option "-a", "--no-connect" */
|
||||||
|
N_("disable auto-connect to servers at startup"),
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"-c, --colors",
|
||||||
|
/* TRANSLATORS: command line option "-c", "--colors" */
|
||||||
|
N_("display default colors in terminal and exit"),
|
||||||
|
},
|
||||||
|
{
|
||||||
|
/* TRANSLATORS: only "<path>" may be translated */
|
||||||
|
N_("-d, --dir <path>"),
|
||||||
|
/* TRANSLATORS: command line option "-d", "--dir <path>" */
|
||||||
|
N_("force a single WeeChat home directory or 5 different directories "
|
||||||
|
"separated by colons (in this order: config, data, state, cache, runtime) "
|
||||||
|
"(environment variable WEECHAT_HOME is read if this option is not given)"),
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"-t, --temp-dir",
|
||||||
|
/* TRANSLATORS: command line option "-t", "--temp-dir" */
|
||||||
|
N_("create a temporary WeeChat home directory and delete it on exit "
|
||||||
|
"(incompatible with option \"-d\")"),
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"-h, --help",
|
||||||
|
/* TRANSLATORS: command line option "-h", "--help" */
|
||||||
|
N_("display this help and exit"),
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"-i, --build-info",
|
||||||
|
/* TRANSLATORS: command line option "-i", "--build-info" */
|
||||||
|
N_("display build information and exit"),
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"-l, --license",
|
||||||
|
/* TRANSLATORS: command line option "-l", "--license" */
|
||||||
|
N_("display WeeChat license and exit"),
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"-p, --no-plugin",
|
||||||
|
/* TRANSLATORS: command line option "-p", "--no-plugin" */
|
||||||
|
N_("don't load any plugin at startup"),
|
||||||
|
},
|
||||||
|
{
|
||||||
|
/* TRANSLATORS: only "<plugins>" may be translated */
|
||||||
|
N_("-P, --plugins <plugins>"),
|
||||||
|
/* TRANSLATORS: command line option "-P", "--plugins <plugins>" */
|
||||||
|
N_("load only these plugins at startup (see /help weechat.plugin.autoload)"),
|
||||||
|
},
|
||||||
|
{
|
||||||
|
/* TRANSLATORS: only "<cmd>" may be translated (please keep it short) */
|
||||||
|
N_("-r, --run-command <cmd>"),
|
||||||
|
/* TRANSLATORS: command line option "-r", "--run-command <cmd>" */
|
||||||
|
N_("run command(s) after startup; many commands can be separated "
|
||||||
|
"by semicolons and are evaluated, this option can be given multiple times"),
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"-s, --no-script",
|
||||||
|
/* TRANSLATORS: command line option "-s", "--no-script" */
|
||||||
|
N_("don't load any script at startup"),
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"--upgrade",
|
||||||
|
/* TRANSLATORS: command line option "--upgrade" */
|
||||||
|
N_("upgrade WeeChat using session files (see /help upgrade in WeeChat)"),
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"-v, --version",
|
||||||
|
/* TRANSLATORS: command line option "-v", "--version" */
|
||||||
|
N_("display WeeChat version and exit"),
|
||||||
|
},
|
||||||
|
{
|
||||||
|
/* TRANSLATORS: command line option: "plugin" and "option" may be translated */
|
||||||
|
N_("plugin:option"),
|
||||||
|
/* TRANSLATORS: command line option "plugin:option" */
|
||||||
|
N_("option for plugin (see man weechat)"),
|
||||||
|
},
|
||||||
|
{ NULL, NULL },
|
||||||
|
};
|
||||||
|
char *weechat_args_headless[][2] = {
|
||||||
|
{
|
||||||
|
/* TRANSLATORS: only "<path>" may be translated */
|
||||||
|
N_("--doc-gen <path>"),
|
||||||
|
/* TRANSLATORS: command line option "--doc-gen <path>" */
|
||||||
|
N_("generate files to build documentation and exit"),
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"--daemon",
|
||||||
|
/* TRANSLATORS: command line option "--daemon" */
|
||||||
|
N_("run WeeChat as a daemon (fork, new process group, file descriptors closed); "
|
||||||
|
"by default in headless mode WeeChat is blocking and does not run in background"),
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"--stdout",
|
||||||
|
/* TRANSLATORS: command line option "--stdout" */
|
||||||
|
N_("display log messages on standard output instead of writing them in log file "
|
||||||
|
"(option ignored if option \"--daemon\" is given)"),
|
||||||
|
},
|
||||||
|
{ NULL, NULL },
|
||||||
|
};
|
||||||
|
char *weechat_args_debug[][2] = {
|
||||||
|
{
|
||||||
|
"--no-dlclose",
|
||||||
|
/* TRANSLATORS: command line option "--no-dlclose" */
|
||||||
|
N_("do not call function dlclose after plugins are unloaded"),
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"--no-gnutls",
|
||||||
|
/* TRANSLATORS: command line option "--no-gnutls" */
|
||||||
|
N_("disable init/deinit of gnutls"),
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"--no-gcrypt",
|
||||||
|
/* TRANSLATORS: command line option "--no-gcrypt" */
|
||||||
|
N_("disable init/deinit of gcrypt"),
|
||||||
|
},
|
||||||
|
{ NULL, NULL },
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Display WeeChat copyright on standard output.
|
||||||
|
*/
|
||||||
|
|
||||||
|
void
|
||||||
|
args_display_copyright (void)
|
||||||
|
{
|
||||||
|
string_fprintf (stdout, "\n");
|
||||||
|
string_fprintf (
|
||||||
|
stdout,
|
||||||
|
/* TRANSLATORS: "%s %s" after "compiled on" is date and time */
|
||||||
|
_("WeeChat %s Copyright %s, compiled on %s %s\n"
|
||||||
|
"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");
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
args_display_list_args (char *args[][2])
|
||||||
|
{
|
||||||
|
int i, j, length, length_fill, max_length_screen;
|
||||||
|
const char *ptr_text;
|
||||||
|
|
||||||
|
max_length_screen = 0;
|
||||||
|
for (i = 0; args[i][0]; i++)
|
||||||
|
{
|
||||||
|
length = utf8_strlen_screen (_(args[i][0]));
|
||||||
|
if (length > max_length_screen)
|
||||||
|
max_length_screen = length;
|
||||||
|
}
|
||||||
|
|
||||||
|
for (i = 0; args[i][0]; i++)
|
||||||
|
{
|
||||||
|
ptr_text = _(args[i][0]);
|
||||||
|
length = utf8_strlen_screen (ptr_text);
|
||||||
|
length_fill = max_length_screen - length;
|
||||||
|
string_fprintf (stdout, " %s", ptr_text);
|
||||||
|
for (j = 0; j < length_fill; j++)
|
||||||
|
{
|
||||||
|
string_fprintf (stdout, " ");
|
||||||
|
}
|
||||||
|
string_fprintf (stdout, " %s\n", _(args[i][1]));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Display WeeChat help on standard output.
|
||||||
|
*/
|
||||||
|
|
||||||
|
void
|
||||||
|
args_display_help (void)
|
||||||
|
{
|
||||||
|
args_display_copyright ();
|
||||||
|
string_fprintf (stdout, "\n");
|
||||||
|
string_fprintf (stdout,
|
||||||
|
"%s %s %s\n\n",
|
||||||
|
_("Usage:"),
|
||||||
|
weechat_argv0,
|
||||||
|
_("[option...] [plugin:option...]"));
|
||||||
|
args_display_list_args (weechat_args_common);
|
||||||
|
string_fprintf (stdout, "\n");
|
||||||
|
|
||||||
|
/* extra options in headless mode */
|
||||||
|
if (weechat_headless)
|
||||||
|
{
|
||||||
|
string_fprintf (stdout, "%s\n",
|
||||||
|
_("Extra options in headless mode:"));
|
||||||
|
args_display_list_args (weechat_args_headless);
|
||||||
|
string_fprintf (stdout, "\n");
|
||||||
|
}
|
||||||
|
|
||||||
|
/* debug options */
|
||||||
|
string_fprintf (stdout, "%s\n",
|
||||||
|
_("Debug options (for tools like valgrind, "
|
||||||
|
"DO NOT USE IN PRODUCTION):"));
|
||||||
|
args_display_list_args (weechat_args_debug);
|
||||||
|
string_fprintf (stdout, "\n");
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Parse command line arguments.
|
||||||
|
*
|
||||||
|
* Arguments argc and argv come from main() function.
|
||||||
|
*/
|
||||||
|
|
||||||
|
void
|
||||||
|
args_parse (int argc, char *argv[])
|
||||||
|
{
|
||||||
|
int opt;
|
||||||
|
struct option long_options[] = {
|
||||||
|
/* standard options */
|
||||||
|
{ "no-connect", no_argument, NULL, 'a' },
|
||||||
|
{ "colors", no_argument, NULL, 'c' },
|
||||||
|
{ "dir", required_argument, NULL, 'd' },
|
||||||
|
{ "temp-dir", no_argument, NULL, 't' },
|
||||||
|
{ "help", no_argument, NULL, 'h' },
|
||||||
|
{ "build-info", no_argument, NULL, 'i' },
|
||||||
|
{ "license", no_argument, NULL, 'l' },
|
||||||
|
{ "no-plugin", no_argument, NULL, 'p' },
|
||||||
|
{ "plugins", required_argument, NULL, 'P' },
|
||||||
|
{ "run-command", required_argument, NULL, 'r' },
|
||||||
|
{ "no-script", no_argument, NULL, 's' },
|
||||||
|
{ "upgrade", no_argument, NULL, 'u' },
|
||||||
|
{ "doc-gen", required_argument, NULL, OPTION_DOCGEN },
|
||||||
|
{ "version", no_argument, NULL, 'v' },
|
||||||
|
/* debug options */
|
||||||
|
{ "no-dlclose", no_argument, NULL, OPTION_NO_DLCLOSE },
|
||||||
|
{ "no-gnutls", no_argument, NULL, OPTION_NO_GNUTLS },
|
||||||
|
{ "no-gcrypt", no_argument, NULL, OPTION_NO_GCRYPT },
|
||||||
|
{ NULL, 0, NULL, 0 },
|
||||||
|
};
|
||||||
|
|
||||||
|
weechat_argv0 = (argv[0]) ? strdup (argv[0]) : NULL;
|
||||||
|
weechat_upgrading = 0;
|
||||||
|
weechat_home_force = NULL;
|
||||||
|
weechat_home_temp = 0;
|
||||||
|
weechat_home_delete_on_exit = 0;
|
||||||
|
weechat_server_cmd_line = 0;
|
||||||
|
weechat_force_plugin_autoload = NULL;
|
||||||
|
weechat_doc_gen = 0;
|
||||||
|
weechat_plugin_no_dlclose = 0;
|
||||||
|
|
||||||
|
optind = 0;
|
||||||
|
opterr = 0;
|
||||||
|
|
||||||
|
while ((opt = getopt_long (argc, argv,
|
||||||
|
":acd:thilpP:r:sv",
|
||||||
|
long_options, NULL)) != -1)
|
||||||
|
{
|
||||||
|
switch (opt)
|
||||||
|
{
|
||||||
|
case 'a': /* -a / --no-connect */
|
||||||
|
/* option ignored, it will be used by plugins/scripts */
|
||||||
|
break;
|
||||||
|
case 'c': /* -c / --colors */
|
||||||
|
gui_color_display_terminal_colors ();
|
||||||
|
weechat_shutdown (EXIT_SUCCESS, 0);
|
||||||
|
break;
|
||||||
|
case 'd': /* -d / --dir */
|
||||||
|
weechat_home_temp = 0;
|
||||||
|
free (weechat_home_force);
|
||||||
|
weechat_home_force = strdup (optarg);
|
||||||
|
break;
|
||||||
|
case 't': /* -t / --temp-dir */
|
||||||
|
weechat_home_temp = 1;
|
||||||
|
if (weechat_home_force)
|
||||||
|
{
|
||||||
|
free (weechat_home_force);
|
||||||
|
weechat_home_force = NULL;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case 'h': /* -h / --help */
|
||||||
|
args_display_help ();
|
||||||
|
weechat_shutdown (EXIT_SUCCESS, 0);
|
||||||
|
break;
|
||||||
|
case 'i': /* -i / --build-info */
|
||||||
|
debug_build_info ();
|
||||||
|
weechat_shutdown (EXIT_SUCCESS, 0);
|
||||||
|
break;
|
||||||
|
case 'l': /* -l / --license */
|
||||||
|
args_display_copyright ();
|
||||||
|
string_fprintf (stdout, "\n");
|
||||||
|
string_fprintf (stdout, "%s%s", WEECHAT_LICENSE_TEXT);
|
||||||
|
weechat_shutdown (EXIT_SUCCESS, 0);
|
||||||
|
break;
|
||||||
|
case 'p': /* -p / --no-plugin */
|
||||||
|
free (weechat_force_plugin_autoload);
|
||||||
|
weechat_force_plugin_autoload = strdup ("!*");
|
||||||
|
break;
|
||||||
|
case 'P': /* -P / --plugins */
|
||||||
|
free (weechat_force_plugin_autoload);
|
||||||
|
weechat_force_plugin_autoload = strdup (optarg);
|
||||||
|
break;
|
||||||
|
case 'r': /* -r / --run-command */
|
||||||
|
if (!weechat_startup_commands)
|
||||||
|
weechat_startup_commands = weelist_new ();
|
||||||
|
weelist_add (weechat_startup_commands, optarg,
|
||||||
|
WEECHAT_LIST_POS_END, NULL);
|
||||||
|
break;
|
||||||
|
case 's': /* -s / --no-script */
|
||||||
|
/* option ignored, it will be used by the scripting plugins */
|
||||||
|
break;
|
||||||
|
case 'u': /* --upgrade */
|
||||||
|
weechat_upgrading = 1;
|
||||||
|
break;
|
||||||
|
case OPTION_DOCGEN: /* --doc-gen */
|
||||||
|
if (weechat_headless)
|
||||||
|
{
|
||||||
|
weechat_doc_gen = 1;
|
||||||
|
weechat_doc_gen_path = strdup (optarg);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case 'v': /* -v / --version */
|
||||||
|
string_fprintf (stdout, version_get_version ());
|
||||||
|
fprintf (stdout, "\n");
|
||||||
|
weechat_shutdown (EXIT_SUCCESS, 0);
|
||||||
|
break;
|
||||||
|
case OPTION_NO_DLCLOSE: /* --no-dlclose */
|
||||||
|
/*
|
||||||
|
* Valgrind works better when dlclose() is not done after
|
||||||
|
* plugins are unloaded, it can display stack for plugins,*
|
||||||
|
* otherwise you'll see "???" in stack for functions of
|
||||||
|
* unloaded plugins.
|
||||||
|
* This option disables the call to dlclose(),
|
||||||
|
* it must NOT be used for other purposes!
|
||||||
|
*/
|
||||||
|
weechat_plugin_no_dlclose = 1;
|
||||||
|
break;
|
||||||
|
case OPTION_NO_GNUTLS: /* --no-gnutls */
|
||||||
|
/*
|
||||||
|
* Electric-fence is not working fine when gnutls loads
|
||||||
|
* certificates and Valgrind reports many memory errors with
|
||||||
|
* gnutls.
|
||||||
|
* This option disables the init/deinit of gnutls,
|
||||||
|
* it must NOT be used for other purposes!
|
||||||
|
*/
|
||||||
|
weechat_no_gnutls = 1;
|
||||||
|
break;
|
||||||
|
case OPTION_NO_GCRYPT: /* --no-gcrypt */
|
||||||
|
/*
|
||||||
|
* Valgrind reports many memory errors with gcrypt.
|
||||||
|
* This option disables the init/deinit of gcrypt,
|
||||||
|
* it must NOT be used for other purposes!
|
||||||
|
*/
|
||||||
|
weechat_no_gcrypt = 1;
|
||||||
|
break;
|
||||||
|
case ':':
|
||||||
|
string_fprintf (stderr,
|
||||||
|
_("Error: missing argument for \"%s\" option\n"),
|
||||||
|
argv[optind - 1]);
|
||||||
|
weechat_shutdown (EXIT_FAILURE, 0);
|
||||||
|
break;
|
||||||
|
case '?':
|
||||||
|
/* ignore any unknown option; plugins can use them */
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
/* ignore any other error */
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,28 @@
|
|||||||
|
/*
|
||||||
|
* SPDX-FileCopyrightText: 2026 Sébastien Helleu <flashcode@flashtux.org>
|
||||||
|
*
|
||||||
|
* SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
|
*
|
||||||
|
* This file is part of WeeChat, the extensible chat client.
|
||||||
|
*
|
||||||
|
* WeeChat is free software; you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation; either version 3 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* WeeChat is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with WeeChat. If not, see <https://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef WEECHAT_ARGS_H
|
||||||
|
#define WEECHAT_ARGS_H
|
||||||
|
|
||||||
|
extern void args_display_help (void);
|
||||||
|
extern void args_parse (int argc, char *argv[]);
|
||||||
|
|
||||||
|
#endif /* WEECHAT_ARGS_H */
|
||||||
+26
-27
@@ -35,10 +35,9 @@
|
|||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Compares two arraylist entries (default comparator).
|
* Compare two arraylist entries (default comparator: compare pointers only).
|
||||||
* It just compares pointers.
|
|
||||||
*
|
*
|
||||||
* Returns:
|
* Return:
|
||||||
* -1: pointer1 < pointer2
|
* -1: pointer1 < pointer2
|
||||||
* 0: pointer1 == pointer2
|
* 0: pointer1 == pointer2
|
||||||
* 1: pointer1 > pointer2
|
* 1: pointer1 > pointer2
|
||||||
@@ -60,9 +59,9 @@ arraylist_cmp_default_cb (void *data, struct t_arraylist *arraylist,
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Creates a new arraylist.
|
* Create a new arraylist.
|
||||||
*
|
*
|
||||||
* Returns pointer to arraylist, NULL if error.
|
* Return pointer to arraylist, NULL if error.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
struct t_arraylist *
|
struct t_arraylist *
|
||||||
@@ -114,7 +113,7 @@ arraylist_new (int initial_size,
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Returns the size of an arraylist (number of elements).
|
* Return the size of an arraylist (number of elements).
|
||||||
*/
|
*/
|
||||||
|
|
||||||
int
|
int
|
||||||
@@ -127,7 +126,7 @@ arraylist_size (struct t_arraylist *arraylist)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Returns the pointer to an arraylist element, by index.
|
* Return the pointer to an arraylist element, by index.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void *
|
void *
|
||||||
@@ -140,11 +139,11 @@ arraylist_get (struct t_arraylist *arraylist, int index)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Adjusts the allocated size of arraylist to add one element (if needed),
|
* Adjust the allocated size of arraylist to add one element (if needed),
|
||||||
* so that the list has enough allocated data to store (current_size + 1)
|
* so that the list has enough allocated data to store (current_size + 1)
|
||||||
* elements.
|
* elements.
|
||||||
*
|
*
|
||||||
* Returns:
|
* Return:
|
||||||
* 1: OK
|
* 1: OK
|
||||||
* 0: error
|
* 0: error
|
||||||
*/
|
*/
|
||||||
@@ -180,11 +179,11 @@ arraylist_grow (struct t_arraylist *arraylist)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Adjusts the allocated size of arraylist to remove one element (if needed),
|
* Adjust the allocated size of arraylist to remove one element (if needed),
|
||||||
* so that the list has enough allocated data to store (current size - 1)
|
* so that the list has enough allocated data to store (current size - 1)
|
||||||
* elements.
|
* elements.
|
||||||
*
|
*
|
||||||
* Returns:
|
* Return:
|
||||||
* 1: OK
|
* 1: OK
|
||||||
* 0: error
|
* 0: error
|
||||||
*/
|
*/
|
||||||
@@ -230,7 +229,7 @@ arraylist_shrink (struct t_arraylist *arraylist)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Performs a binary search in the arraylist to find an element
|
* Perform a binary search in the arraylist to find an element
|
||||||
* (this function must be called only if the arraylist is sorted).
|
* (this function must be called only if the arraylist is sorted).
|
||||||
*
|
*
|
||||||
* If "index" is not NULL, it is set with the index of element found (or -1 if
|
* If "index" is not NULL, it is set with the index of element found (or -1 if
|
||||||
@@ -239,7 +238,7 @@ arraylist_shrink (struct t_arraylist *arraylist)
|
|||||||
* If "index_insert" is not NULL, it is set with the index that must be used to
|
* If "index_insert" is not NULL, it is set with the index that must be used to
|
||||||
* insert the element in the arraylist (to keep arraylist sorted).
|
* insert the element in the arraylist (to keep arraylist sorted).
|
||||||
*
|
*
|
||||||
* Returns pointer to element found, NULL if not found.
|
* Return pointer to element found, NULL if not found.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void *
|
void *
|
||||||
@@ -398,7 +397,7 @@ end:
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Performs a standard search in the arraylist to find an element
|
* Perform a standard search in the arraylist to find an element
|
||||||
* (this function must be called only if the arraylist is NOT sorted).
|
* (this function must be called only if the arraylist is NOT sorted).
|
||||||
*
|
*
|
||||||
* If "index" is not NULL, it is set with the index of element found (or -1 if
|
* If "index" is not NULL, it is set with the index of element found (or -1 if
|
||||||
@@ -407,7 +406,7 @@ end:
|
|||||||
* If "index_insert" is not NULL, it is set to -1 (elements are always added
|
* If "index_insert" is not NULL, it is set to -1 (elements are always added
|
||||||
* at the end of list when it is not sorted).
|
* at the end of list when it is not sorted).
|
||||||
*
|
*
|
||||||
* Returns pointer to element found, NULL if not found.
|
* Return pointer to element found, NULL if not found.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void *
|
void *
|
||||||
@@ -442,7 +441,7 @@ end:
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Searches an element in the arraylist.
|
* Search an element in the arraylist.
|
||||||
*
|
*
|
||||||
* If "index" is not NULL, it is set with the index of element found (or -1 if
|
* If "index" is not NULL, it is set with the index of element found (or -1 if
|
||||||
* element was not found).
|
* element was not found).
|
||||||
@@ -450,7 +449,7 @@ end:
|
|||||||
* If "index_insert" is not NULL, it is set with the index that must be used to
|
* If "index_insert" is not NULL, it is set with the index that must be used to
|
||||||
* insert the element in the arraylist (to keep arraylist sorted).
|
* insert the element in the arraylist (to keep arraylist sorted).
|
||||||
*
|
*
|
||||||
* Returns pointer to element found, NULL if not found.
|
* Return pointer to element found, NULL if not found.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void *
|
void *
|
||||||
@@ -478,7 +477,7 @@ arraylist_search (struct t_arraylist *arraylist, void *pointer,
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Inserts an element at a given index (and shifts next elements by one
|
* Insert an element at a given index (and shifts next elements by one
|
||||||
* position), or at automatic index if the arraylist is sorted.
|
* position), or at automatic index if the arraylist is sorted.
|
||||||
*
|
*
|
||||||
* If the index is negative and that the arraylist is not sorted, the element
|
* If the index is negative and that the arraylist is not sorted, the element
|
||||||
@@ -487,7 +486,7 @@ arraylist_search (struct t_arraylist *arraylist, void *pointer,
|
|||||||
* If the arraylist is sorted, the argument "index" is ignored (the element
|
* If the arraylist is sorted, the argument "index" is ignored (the element
|
||||||
* will be inserted at appropriate position, to keep arraylist sorted).
|
* will be inserted at appropriate position, to keep arraylist sorted).
|
||||||
*
|
*
|
||||||
* Returns the index of the new element (>= 0) or -1 if error.
|
* Return the index of the new element (>= 0) or -1 if error.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
int
|
int
|
||||||
@@ -559,10 +558,10 @@ arraylist_insert (struct t_arraylist *arraylist, int index, void *pointer)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Adds an element at the end of arraylist (or in the middle if the arraylist
|
* Add an element at the end of arraylist (or in the middle if the arraylist
|
||||||
* is sorted).
|
* is sorted).
|
||||||
*
|
*
|
||||||
* Returns the index of the new element (>= 0) or -1 if error.
|
* Return the index of the new element (>= 0) or -1 if error.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
int
|
int
|
||||||
@@ -575,9 +574,9 @@ arraylist_add (struct t_arraylist *arraylist, void *pointer)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Removes one element from the arraylist.
|
* Remove one element from the arraylist.
|
||||||
*
|
*
|
||||||
* Returns the index removed or -1 if error.
|
* Return the index removed or -1 if error.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
int
|
int
|
||||||
@@ -614,9 +613,9 @@ arraylist_remove (struct t_arraylist *arraylist, int index)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Removes all elements in the arraylist.
|
* Remove all elements in the arraylist.
|
||||||
*
|
*
|
||||||
* Returns:
|
* Return:
|
||||||
* 1: OK
|
* 1: OK
|
||||||
* 0: error
|
* 0: error
|
||||||
*/
|
*/
|
||||||
@@ -669,7 +668,7 @@ arraylist_clear (struct t_arraylist *arraylist)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Frees an arraylist.
|
* Free an arraylist.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void
|
void
|
||||||
@@ -694,7 +693,7 @@ arraylist_free (struct t_arraylist *arraylist)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Prints an arraylist in WeeChat log file (usually for crash dump).
|
* Print an arraylist in WeeChat log file (usually for crash dump).
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void
|
void
|
||||||
|
|||||||
@@ -49,7 +49,7 @@
|
|||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Displays a backtrace line on standard error output and in WeeChat log.
|
* Display a backtrace line on standard error output and in WeeChat log.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void
|
void
|
||||||
@@ -65,7 +65,7 @@ weechat_backtrace_printf (const char *message, ...)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Displays function name and line with a backtrace address.
|
* Display function name and line with a backtrace address.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void
|
void
|
||||||
@@ -147,7 +147,7 @@ weechat_backtrace_addr2line (int number, void *address, const char *symbol)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Displays backtrace (function called when a SIGSEGV is received).
|
* Display backtrace (function called when a SIGSEGV is received).
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void
|
void
|
||||||
|
|||||||
@@ -60,7 +60,7 @@ calc_list_free_cb (void *data, struct t_arraylist *arraylist, void *pointer)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Returns the precedence of an operator:
|
* Return the precedence of an operator:
|
||||||
* - '*' and '/': 2
|
* - '*' and '/': 2
|
||||||
* - '+' and '-': 1
|
* - '+' and '-': 1
|
||||||
* - any other: 0
|
* - any other: 0
|
||||||
@@ -91,7 +91,7 @@ calc_operator_precedence (const char *oper)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Pops an integer value from the stack of values.
|
* Pop an integer value from the stack of values.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
double
|
double
|
||||||
@@ -117,7 +117,7 @@ calc_pop_value (struct t_arraylist *list_values)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Calculates result of an operation using an operator and two values.
|
* Calculate result of an operation using an operator and two values.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
double
|
double
|
||||||
@@ -151,7 +151,7 @@ calc_operation (const char *oper, double value1, double value2)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Calculates result of an operation using the operator on the operators stack
|
* Calculate result of an operation using the operator on the operators stack
|
||||||
* and the two values on the values stack.
|
* and the two values on the values stack.
|
||||||
*
|
*
|
||||||
* The result is pushed on values stack.
|
* The result is pushed on values stack.
|
||||||
@@ -187,7 +187,7 @@ calc_operation_stacks (struct t_arraylist *list_values,
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Sanitizes a decimal number: removes any thousands separator and replaces
|
* Sanitize a decimal number: remove any thousands separator and replace
|
||||||
* the decimal separator by a dot.
|
* the decimal separator by a dot.
|
||||||
*
|
*
|
||||||
* The string is updated in-place, the result has always a length shorter or
|
* The string is updated in-place, the result has always a length shorter or
|
||||||
@@ -203,7 +203,7 @@ calc_operation_stacks (struct t_arraylist *list_values,
|
|||||||
* 1,234,567.89 --> 1234567.89
|
* 1,234,567.89 --> 1234567.89
|
||||||
* -2.345,67 --> -2345.67
|
* -2.345,67 --> -2345.67
|
||||||
*
|
*
|
||||||
* Returns:
|
* Return:
|
||||||
* 1: the number has decimal part
|
* 1: the number has decimal part
|
||||||
* 0: the number has no decimal part
|
* 0: the number has no decimal part
|
||||||
*/
|
*/
|
||||||
@@ -279,7 +279,7 @@ calc_sanitize_decimal_number (char *string)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Formats the result as a decimal number (locale independent): remove any
|
* Format the result as a decimal number (locale independent): remove any
|
||||||
* extra "0" at the and the decimal point if needed.
|
* extra "0" at the and the decimal point if needed.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
@@ -314,7 +314,7 @@ calc_format_result (double value, char *result, int max_size)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Calculates an expression, which can contain:
|
* Calculate an expression, which can contain:
|
||||||
* - integer and decimal numbers (ie 2 or 2.5)
|
* - integer and decimal numbers (ie 2 or 2.5)
|
||||||
* - operators:
|
* - operators:
|
||||||
* +: addition
|
* +: addition
|
||||||
|
|||||||
+565
-273
File diff suppressed because it is too large
Load Diff
+209
-53
@@ -46,6 +46,7 @@
|
|||||||
#include "core-proxy.h"
|
#include "core-proxy.h"
|
||||||
#include "core-secure.h"
|
#include "core-secure.h"
|
||||||
#include "core-string.h"
|
#include "core-string.h"
|
||||||
|
#include "core-theme.h"
|
||||||
#include "../gui/gui-completion.h"
|
#include "../gui/gui-completion.h"
|
||||||
#include "../gui/gui-bar.h"
|
#include "../gui/gui-bar.h"
|
||||||
#include "../gui/gui-bar-item.h"
|
#include "../gui/gui-bar-item.h"
|
||||||
@@ -63,9 +64,15 @@
|
|||||||
|
|
||||||
extern char **environ;
|
extern char **environ;
|
||||||
|
|
||||||
|
struct t_completion_theme_dir
|
||||||
|
{
|
||||||
|
struct t_gui_completion *completion;
|
||||||
|
int show_backups;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Adds a word with quotes around to completion list.
|
* Add a word with quotes around to completion list.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void
|
void
|
||||||
@@ -82,7 +89,7 @@ completion_list_add_quoted_word (struct t_gui_completion *completion,
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Adds bar names to completion list.
|
* Add bar names to completion list.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
int
|
int
|
||||||
@@ -109,7 +116,7 @@ completion_list_add_bars_names_cb (const void *pointer, void *data,
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Adds bar items to completion list.
|
* Add bar items to completion list.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
int
|
int
|
||||||
@@ -137,7 +144,7 @@ completion_list_add_bars_items_cb (const void *pointer, void *data,
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Adds custom bar items names to completion list.
|
* Add custom bar items names to completion list.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
int
|
int
|
||||||
@@ -165,7 +172,7 @@ completion_list_add_custom_bar_items_names_cb (const void *pointer, void *data,
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Adds custom bar item conditions to completion list.
|
* Add custom bar item conditions to completion list.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
int
|
int
|
||||||
@@ -190,7 +197,7 @@ completion_list_add_custom_bar_item_conditions_cb (const void *pointer, void *da
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Adds custom bar item contents to completion list.
|
* Add custom bar item contents to completion list.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
int
|
int
|
||||||
@@ -215,7 +222,7 @@ completion_list_add_custom_bar_item_contents_cb (const void *pointer, void *data
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Adds arguments for commands that add a custom bar item.
|
* Add arguments for commands that add a custom bar item.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
int
|
int
|
||||||
@@ -283,7 +290,7 @@ completion_list_add_custom_bar_item_add_arguments_cb (const void *pointer, void
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Adds bar options to completion list.
|
* Add bar options to completion list.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
int
|
int
|
||||||
@@ -310,7 +317,7 @@ completion_list_add_bars_options_cb (const void *pointer, void *data,
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Adds buffer names to completion list.
|
* Add buffer names to completion list.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
int
|
int
|
||||||
@@ -338,7 +345,7 @@ completion_list_add_buffers_names_cb (const void *pointer, void *data,
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Adds buffer numbers to completion list.
|
* Add buffer numbers to completion list.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
int
|
int
|
||||||
@@ -368,7 +375,7 @@ completion_list_add_buffers_numbers_cb (const void *pointer, void *data,
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Adds plugin+buffer names to completion list.
|
* Add plugin+buffer names to completion list.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
int
|
int
|
||||||
@@ -396,7 +403,7 @@ completion_list_add_buffers_plugins_names_cb (const void *pointer, void *data,
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Adds a buffer local variable to completions list.
|
* Add a buffer local variable to completions list.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void
|
void
|
||||||
@@ -414,7 +421,7 @@ completion_list_map_buffer_local_variable_cb (void *data,
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Adds buffer local variables to completion list.
|
* Add buffer local variables to completion list.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
int
|
int
|
||||||
@@ -437,7 +444,7 @@ completion_list_add_buffer_local_variables_cb (const void *pointer, void *data,
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Adds buffer local variable value to completion list.
|
* Add buffer local variable value to completion list.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
int
|
int
|
||||||
@@ -487,7 +494,7 @@ completion_list_add_buffer_local_variable_value_cb (const void *pointer, void *d
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Adds buffer properties (that can be set) to completion list.
|
* Add buffer properties (that can be set) to completion list.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
int
|
int
|
||||||
@@ -515,7 +522,7 @@ completion_list_add_buffer_properties_set_cb (const void *pointer, void *data,
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Adds a buffer local variable to completions list (for `/buffer setauto`).
|
* Add a buffer local variable to completions list (for `/buffer setauto`).
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void
|
void
|
||||||
@@ -538,7 +545,7 @@ completion_list_map_buffer_local_variable_setauto_cb (void *data,
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Adds buffer properties (that can be set), local variables and key bindings
|
* Add buffer properties (that can be set), local variables and key bindings
|
||||||
* to completion list.
|
* to completion list.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
@@ -585,7 +592,7 @@ completion_list_add_buffer_properties_setauto_cb (const void *pointer, void *dat
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Adds buffer properties (that can be read) to completion list.
|
* Add buffer properties (that can be read) to completion list.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
int
|
int
|
||||||
@@ -625,7 +632,7 @@ completion_list_add_buffer_properties_get_cb (const void *pointer, void *data,
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Adds window numbers to completion list.
|
* Add window numbers to completion list.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
int
|
int
|
||||||
@@ -654,7 +661,7 @@ completion_list_add_windows_numbers_cb (const void *pointer, void *data,
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Adds colors to completion list.
|
* Add colors to completion list.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
int
|
int
|
||||||
@@ -711,7 +718,7 @@ completion_list_add_colors_cb (const void *pointer, void *data,
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Adds a palette color to completion list.
|
* Add a palette color to completion list.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void
|
void
|
||||||
@@ -729,7 +736,7 @@ completion_list_map_add_palette_color_cb (void *data,
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Adds palette colors to completion list.
|
* Add palette colors to completion list.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
int
|
int
|
||||||
@@ -752,7 +759,7 @@ completion_list_add_palette_colors_cb (const void *pointer, void *data,
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Adds configuration files to completion list.
|
* Add configuration files to completion list.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
int
|
int
|
||||||
@@ -780,7 +787,7 @@ completion_list_add_config_files_cb (const void *pointer, void *data,
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Adds path/filename to completion list.
|
* Add path/filename to completion list.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
int
|
int
|
||||||
@@ -923,7 +930,7 @@ end:
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Adds filter names to completion list.
|
* Add filter names to completion list.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
int
|
int
|
||||||
@@ -951,7 +958,7 @@ completion_list_add_filters_cb (const void *pointer, void *data,
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Adds disabled filter names to completion list.
|
* Add disabled filter names to completion list.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
int
|
int
|
||||||
@@ -982,7 +989,7 @@ completion_list_add_filters_disabled_cb (const void *pointer, void *data,
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Adds enabled filter names to completion list.
|
* Add enabled filter names to completion list.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
int
|
int
|
||||||
@@ -1013,7 +1020,7 @@ completion_list_add_filters_enabled_cb (const void *pointer, void *data,
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Adds command hook types to completion list.
|
* Add command hook types to completion list.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
int
|
int
|
||||||
@@ -1040,7 +1047,7 @@ completion_list_add_hook_types_cb (const void *pointer, void *data,
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Adds command hooks to completion list.
|
* Add command hooks to completion list.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
int
|
int
|
||||||
@@ -1091,7 +1098,7 @@ completion_list_add_commands_cb (const void *pointer, void *data,
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Adds info hooks to completion list.
|
* Add info hooks to completion list.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
int
|
int
|
||||||
@@ -1123,7 +1130,7 @@ completion_list_add_infos_cb (const void *pointer, void *data,
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Adds infolist hooks to completion list.
|
* Add infolist hooks to completion list.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
int
|
int
|
||||||
@@ -1155,7 +1162,7 @@ completion_list_add_infolists_cb (const void *pointer, void *data,
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Adds nicks to completion list.
|
* Add nicks to completion list.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
int
|
int
|
||||||
@@ -1206,7 +1213,7 @@ completion_list_add_nicks_cb (const void *pointer, void *data,
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Adds configuration options to completion list.
|
* Add configuration options to completion list.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
int
|
int
|
||||||
@@ -1254,7 +1261,7 @@ completion_list_add_config_options_cb (const void *pointer, void *data,
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Adds plugin names to completion list.
|
* Add plugin names to completion list.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
int
|
int
|
||||||
@@ -1282,7 +1289,7 @@ completion_list_add_plugins_cb (const void *pointer, void *data,
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Adds a plugin installed to completion list.
|
* Add a plugin installed to completion list.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void
|
void
|
||||||
@@ -1317,7 +1324,7 @@ completion_list_add_plugins_installed_exec_cb (void *data,
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Adds plugins installed to completion list.
|
* Add plugins installed to completion list.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
int
|
int
|
||||||
@@ -1384,7 +1391,7 @@ completion_list_add_plugins_installed_cb (const void *pointer, void *data,
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Adds plugin commands to completion list.
|
* Add plugin commands to completion list.
|
||||||
*
|
*
|
||||||
* The plugin name is read in previous argument.
|
* The plugin name is read in previous argument.
|
||||||
*/
|
*/
|
||||||
@@ -1472,7 +1479,7 @@ completion_list_add_plugins_commands_cb (const void *pointer, void *data,
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Adds value of option to completion list.
|
* Add value of option to completion list.
|
||||||
*
|
*
|
||||||
* The option name is read in previous argument.
|
* The option name is read in previous argument.
|
||||||
*/
|
*/
|
||||||
@@ -1688,7 +1695,7 @@ completion_list_add_config_option_values_cb (const void *pointer, void *data,
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Adds WeeChat commands to completion list.
|
* Add WeeChat commands to completion list.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
int
|
int
|
||||||
@@ -1740,7 +1747,7 @@ completion_list_add_weechat_commands_cb (const void *pointer, void *data,
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Adds proxy names to completion list.
|
* Add proxy names to completion list.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
int
|
int
|
||||||
@@ -1768,7 +1775,7 @@ completion_list_add_proxies_names_cb (const void *pointer, void *data,
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Adds proxy options to completion list.
|
* Add proxy options to completion list.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
int
|
int
|
||||||
@@ -1795,7 +1802,7 @@ completion_list_add_proxies_options_cb (const void *pointer, void *data,
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Adds key contexts to completion list.
|
* Add key contexts to completion list.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
int
|
int
|
||||||
@@ -1822,7 +1829,7 @@ completion_list_add_keys_contexts_cb (const void *pointer, void *data,
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Adds keys to completion list.
|
* Add keys to completion list.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
int
|
int
|
||||||
@@ -1853,7 +1860,7 @@ completion_list_add_keys_codes_cb (const void *pointer, void *data,
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Adds keys that can be reset (keys added, redefined or removed) to completion
|
* Add keys that can be reset (keys added, redefined or removed) to completion
|
||||||
* list.
|
* list.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
@@ -1905,7 +1912,7 @@ completion_list_add_keys_codes_for_reset_cb (const void *pointer, void *data,
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Adds areas for free cursor movement ("chat" and bar names) to completion
|
* Add areas for free cursor movement ("chat" and bar names) to completion
|
||||||
* list.
|
* list.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
@@ -1947,7 +1954,7 @@ completion_list_add_cursor_areas_cb (const void *pointer, void *data,
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Adds layout names to completion list.
|
* Add layout names to completion list.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
int
|
int
|
||||||
@@ -1975,7 +1982,146 @@ completion_list_add_layouts_names_cb (const void *pointer, void *data,
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Adds a secured data to completion list.
|
* Add filename (without ".theme" suffix) to completion list if it ends
|
||||||
|
* with ".theme"; skips "backup-*.theme" entries unless data is non-NULL.
|
||||||
|
*
|
||||||
|
* Callback for dir_exec_on_files; "data" carries a pair of pointers:
|
||||||
|
* data[0] = struct t_gui_completion *completion (target)
|
||||||
|
* data[1] = int *show_backups
|
||||||
|
*/
|
||||||
|
|
||||||
|
void
|
||||||
|
completion_theme_add_file_cb (void *data, const char *filename)
|
||||||
|
{
|
||||||
|
struct t_completion_theme_dir *ctx;
|
||||||
|
const char *base;
|
||||||
|
char *name;
|
||||||
|
size_t len;
|
||||||
|
|
||||||
|
ctx = (struct t_completion_theme_dir *)data;
|
||||||
|
base = strrchr (filename, '/');
|
||||||
|
base = (base) ? base + 1 : filename;
|
||||||
|
len = strlen (base);
|
||||||
|
if ((len < 7) || (strcmp (base + len - 6, ".theme") != 0))
|
||||||
|
return;
|
||||||
|
if (!ctx->show_backups && (strncmp (base, "backup-", 7) == 0))
|
||||||
|
return;
|
||||||
|
name = string_strndup (base, len - 6);
|
||||||
|
if (!name)
|
||||||
|
return;
|
||||||
|
gui_completion_list_add (ctx->completion, name, 0, WEECHAT_LIST_POS_SORT);
|
||||||
|
free (name);
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Add theme names to completion list: in-memory built-ins plus any
|
||||||
|
* "*.theme" files in <weechat_config_dir>/themes/ (including backups).
|
||||||
|
*/
|
||||||
|
|
||||||
|
int
|
||||||
|
completion_list_add_theme_themes_all_cb (const void *pointer, void *data,
|
||||||
|
const char *completion_item,
|
||||||
|
struct t_gui_buffer *buffer,
|
||||||
|
struct t_gui_completion *completion)
|
||||||
|
{
|
||||||
|
struct t_theme *ptr_theme;
|
||||||
|
struct t_completion_theme_dir ctx;
|
||||||
|
char *dir;
|
||||||
|
|
||||||
|
/* make C compiler happy */
|
||||||
|
(void) pointer;
|
||||||
|
(void) data;
|
||||||
|
(void) completion_item;
|
||||||
|
(void) buffer;
|
||||||
|
|
||||||
|
for (ptr_theme = themes; ptr_theme; ptr_theme = ptr_theme->next_theme)
|
||||||
|
{
|
||||||
|
gui_completion_list_add (completion, ptr_theme->name,
|
||||||
|
0, WEECHAT_LIST_POS_SORT);
|
||||||
|
}
|
||||||
|
|
||||||
|
dir = NULL;
|
||||||
|
string_asprintf (&dir, "%s/themes", weechat_config_dir);
|
||||||
|
if (dir)
|
||||||
|
{
|
||||||
|
ctx.completion = completion;
|
||||||
|
ctx.show_backups = 1;
|
||||||
|
dir_exec_on_files (dir, 0, 0, &completion_theme_add_file_cb, &ctx);
|
||||||
|
free (dir);
|
||||||
|
}
|
||||||
|
|
||||||
|
return WEECHAT_RC_OK;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Add user theme file names (excluding built-ins and backups) to the
|
||||||
|
* completion list; suitable for /theme save and /theme del.
|
||||||
|
*/
|
||||||
|
|
||||||
|
int
|
||||||
|
completion_list_add_theme_themes_user_cb (const void *pointer, void *data,
|
||||||
|
const char *completion_item,
|
||||||
|
struct t_gui_buffer *buffer,
|
||||||
|
struct t_gui_completion *completion)
|
||||||
|
{
|
||||||
|
struct t_completion_theme_dir ctx;
|
||||||
|
char *dir;
|
||||||
|
|
||||||
|
/* make C compiler happy */
|
||||||
|
(void) pointer;
|
||||||
|
(void) data;
|
||||||
|
(void) completion_item;
|
||||||
|
(void) buffer;
|
||||||
|
|
||||||
|
dir = NULL;
|
||||||
|
string_asprintf (&dir, "%s/themes", weechat_config_dir);
|
||||||
|
if (dir)
|
||||||
|
{
|
||||||
|
ctx.completion = completion;
|
||||||
|
ctx.show_backups = 0;
|
||||||
|
dir_exec_on_files (dir, 0, 0, &completion_theme_add_file_cb, &ctx);
|
||||||
|
free (dir);
|
||||||
|
}
|
||||||
|
|
||||||
|
return WEECHAT_RC_OK;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Add every on-disk theme file (user files + backups, no built-ins)
|
||||||
|
* to the completion list; suitable for /theme rename which can take a
|
||||||
|
* backup as its source.
|
||||||
|
*/
|
||||||
|
|
||||||
|
int
|
||||||
|
completion_list_add_theme_themes_files_cb (const void *pointer, void *data,
|
||||||
|
const char *completion_item,
|
||||||
|
struct t_gui_buffer *buffer,
|
||||||
|
struct t_gui_completion *completion)
|
||||||
|
{
|
||||||
|
struct t_completion_theme_dir ctx;
|
||||||
|
char *dir;
|
||||||
|
|
||||||
|
/* make C compiler happy */
|
||||||
|
(void) pointer;
|
||||||
|
(void) data;
|
||||||
|
(void) completion_item;
|
||||||
|
(void) buffer;
|
||||||
|
|
||||||
|
dir = NULL;
|
||||||
|
string_asprintf (&dir, "%s/themes", weechat_config_dir);
|
||||||
|
if (dir)
|
||||||
|
{
|
||||||
|
ctx.completion = completion;
|
||||||
|
ctx.show_backups = 1;
|
||||||
|
dir_exec_on_files (dir, 0, 0, &completion_theme_add_file_cb, &ctx);
|
||||||
|
free (dir);
|
||||||
|
}
|
||||||
|
|
||||||
|
return WEECHAT_RC_OK;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Add a secured data to completion list.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void
|
void
|
||||||
@@ -1993,7 +2139,7 @@ completion_list_map_add_secured_data_cb (void *data,
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Adds secured data to completion list.
|
* Add secured data to completion list.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
int
|
int
|
||||||
@@ -2016,7 +2162,7 @@ completion_list_add_secured_data_cb (const void *pointer, void *data,
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Adds environment variables to completion list.
|
* Add environment variables to completion list.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
int
|
int
|
||||||
@@ -2052,7 +2198,7 @@ completion_list_add_env_vars_cb (const void *pointer, void *data,
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Adds value of an environment variable to completion list.
|
* Add value of an environment variable to completion list.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
int
|
int
|
||||||
@@ -2099,7 +2245,7 @@ completion_list_add_env_value_cb (const void *pointer, void *data,
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Adds a buffer local variable for /eval to completions list.
|
* Add a buffer local variable for /eval to completions list.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void
|
void
|
||||||
@@ -2122,7 +2268,7 @@ completion_list_map_eval_buffer_local_variable_cb (void *data,
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Adds /eval variables to completion list.
|
* Add /eval variables to completion list.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
int
|
int
|
||||||
@@ -2225,7 +2371,7 @@ completion_list_add_eval_variables_cb (const void *pointer, void *data,
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Adds hooks for completions done by WeeChat core.
|
* Add hooks for completions done by WeeChat core.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void
|
void
|
||||||
@@ -2365,6 +2511,16 @@ completion_init (void)
|
|||||||
hook_completion (NULL, "layouts_names",
|
hook_completion (NULL, "layouts_names",
|
||||||
N_("names of layouts"),
|
N_("names of layouts"),
|
||||||
&completion_list_add_layouts_names_cb, NULL, NULL);
|
&completion_list_add_layouts_names_cb, NULL, NULL);
|
||||||
|
hook_completion (NULL, "theme_themes_all",
|
||||||
|
N_("names of themes (built-ins + user files + backups)"),
|
||||||
|
&completion_list_add_theme_themes_all_cb, NULL, NULL);
|
||||||
|
hook_completion (NULL, "theme_themes_user",
|
||||||
|
N_("names of user theme files (without built-ins and backups)"),
|
||||||
|
&completion_list_add_theme_themes_user_cb, NULL, NULL);
|
||||||
|
hook_completion (NULL, "theme_themes_files",
|
||||||
|
N_("names of theme files on disk (user files + backups, "
|
||||||
|
"no built-ins)"),
|
||||||
|
&completion_list_add_theme_themes_files_cb, NULL, NULL);
|
||||||
hook_completion (NULL, "secured_data",
|
hook_completion (NULL, "secured_data",
|
||||||
N_("names of secured data (file sec.conf, section data)"),
|
N_("names of secured data (file sec.conf, section data)"),
|
||||||
&completion_list_add_secured_data_cb, NULL, NULL);
|
&completion_list_add_secured_data_cb, NULL, NULL);
|
||||||
|
|||||||
+201
-216
File diff suppressed because it is too large
Load Diff
@@ -154,6 +154,8 @@ struct t_config_option
|
|||||||
char *parent_name; /* parent name (to inherit the */
|
char *parent_name; /* parent name (to inherit the */
|
||||||
/* value from another option) */
|
/* value from another option) */
|
||||||
enum t_config_option_type type; /* type */
|
enum t_config_option_type type; /* type */
|
||||||
|
int themable; /* 1 if option is themable */
|
||||||
|
/* (color, or string with color) */
|
||||||
char *description; /* description */
|
char *description; /* description */
|
||||||
char **string_values; /* allowed string values */
|
char **string_values; /* allowed string values */
|
||||||
int min, max; /* min and max for value */
|
int min, max; /* min and max for value */
|
||||||
@@ -286,7 +288,7 @@ extern void config_file_search_with_string (const char *option_name,
|
|||||||
struct t_config_file **config_file,
|
struct t_config_file **config_file,
|
||||||
struct t_config_section **section,
|
struct t_config_section **section,
|
||||||
struct t_config_option **option,
|
struct t_config_option **option,
|
||||||
char **pos_option_name);
|
const char **pos_option_name);
|
||||||
extern int config_file_string_to_boolean (const char *text);
|
extern int config_file_string_to_boolean (const char *text);
|
||||||
extern int config_file_option_reset (struct t_config_option *option,
|
extern int config_file_option_reset (struct t_config_option *option,
|
||||||
int run_callback);
|
int run_callback);
|
||||||
|
|||||||
+105
-99
@@ -50,6 +50,8 @@
|
|||||||
#include "core-proxy.h"
|
#include "core-proxy.h"
|
||||||
#include "core-string.h"
|
#include "core-string.h"
|
||||||
#include "core-sys.h"
|
#include "core-sys.h"
|
||||||
|
#include "core-theme.h"
|
||||||
|
#include "core-util.h"
|
||||||
#include "core-version.h"
|
#include "core-version.h"
|
||||||
#include "../gui/gui-bar.h"
|
#include "../gui/gui-bar.h"
|
||||||
#include "../gui/gui-bar-item.h"
|
#include "../gui/gui-bar-item.h"
|
||||||
@@ -221,6 +223,8 @@ struct t_config_option *config_look_separator_horizontal = NULL;
|
|||||||
struct t_config_option *config_look_separator_vertical = NULL;
|
struct t_config_option *config_look_separator_vertical = NULL;
|
||||||
struct t_config_option *config_look_tab_whitespace_char = NULL;
|
struct t_config_option *config_look_tab_whitespace_char = NULL;
|
||||||
struct t_config_option *config_look_tab_width = NULL;
|
struct t_config_option *config_look_tab_width = NULL;
|
||||||
|
struct t_config_option *config_look_theme = NULL;
|
||||||
|
struct t_config_option *config_look_theme_backup = NULL;
|
||||||
struct t_config_option *config_look_time_format = NULL;
|
struct t_config_option *config_look_time_format = NULL;
|
||||||
struct t_config_option *config_look_whitespace_char = NULL;
|
struct t_config_option *config_look_whitespace_char = NULL;
|
||||||
struct t_config_option *config_look_window_auto_zoom = NULL;
|
struct t_config_option *config_look_window_auto_zoom = NULL;
|
||||||
@@ -404,7 +408,7 @@ config_change_sys_rlimit (const void *pointer, void *data,
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Checks option "weechat.look.config_permissions".
|
* Check option "weechat.look.config_permissions".
|
||||||
*/
|
*/
|
||||||
|
|
||||||
int
|
int
|
||||||
@@ -507,7 +511,7 @@ config_change_window_title (const void *pointer, void *data,
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Sets word chars array with a word chars option.
|
* Set word chars array with a word chars option.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void
|
void
|
||||||
@@ -762,7 +766,7 @@ config_change_buffer_time_same (const void *pointer, void *data,
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Computes the "prefix_max_length" on all buffers.
|
* Compute the "prefix_max_length" on all buffers.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void
|
void
|
||||||
@@ -781,7 +785,7 @@ config_compute_prefix_max_length_all_buffers (void)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Sets nick colors using option "weechat.color.chat_nick_colors".
|
* Set nick colors using option "weechat.color.chat_nick_colors".
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void
|
void
|
||||||
@@ -859,8 +863,7 @@ config_change_look_nick_color_force (const void *pointer, void *data,
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Sets eval syntax highlighting colors using option
|
* Set eval syntax highlighting colors using option "weechat.color.eval_syntax_colors".
|
||||||
* "weechat.color.eval_syntax_colors".
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void
|
void
|
||||||
@@ -1176,7 +1179,7 @@ config_change_item_time_format (const void *pointer, void *data,
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Gets the current time formatted for the bar item status.
|
* Get the current time formatted for the bar item status.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void
|
void
|
||||||
@@ -1265,7 +1268,7 @@ config_change_prefix_align_min (const void *pointer, void *data,
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Checks option "weechat.look.prefix_align_more".
|
* Check option "weechat.look.prefix_align_more".
|
||||||
*/
|
*/
|
||||||
|
|
||||||
int
|
int
|
||||||
@@ -1282,7 +1285,7 @@ config_check_prefix_align_more (const void *pointer, void *data,
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Checks option "weechat.look.prefix_buffer_align_more".
|
* Check option "weechat.look.prefix_buffer_align_more".
|
||||||
*/
|
*/
|
||||||
|
|
||||||
int
|
int
|
||||||
@@ -1299,7 +1302,7 @@ config_check_prefix_buffer_align_more (const void *pointer, void *data,
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Checks options "weechat.look.separator_{horizontal|vertical}".
|
* Check options "weechat.look.separator_{horizontal|vertical}".
|
||||||
*/
|
*/
|
||||||
|
|
||||||
int
|
int
|
||||||
@@ -1316,7 +1319,7 @@ config_check_separator (const void *pointer, void *data,
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Checks options "weechat.look.whitespace_char" and
|
* Check options "weechat.look.whitespace_char" and
|
||||||
* "weechat.look.tab_whitespace_char".
|
* "weechat.look.tab_whitespace_char".
|
||||||
*/
|
*/
|
||||||
|
|
||||||
@@ -1381,7 +1384,7 @@ config_change_color (const void *pointer, void *data,
|
|||||||
(void) data;
|
(void) data;
|
||||||
(void) option;
|
(void) option;
|
||||||
|
|
||||||
if (gui_init_ok)
|
if (gui_init_ok && !theme_applying)
|
||||||
{
|
{
|
||||||
gui_color_init_weechat ();
|
gui_color_init_weechat ();
|
||||||
gui_window_ask_refresh (1);
|
gui_window_ask_refresh (1);
|
||||||
@@ -1473,8 +1476,7 @@ config_change_completion_nick_ignore_words (const void *pointer,
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Callback for changes on option
|
* Callback for changes on option "weechat.completion.partial_completion_templates".
|
||||||
* "weechat.completion.partial_completion_templates".
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void
|
void
|
||||||
@@ -1542,7 +1544,7 @@ config_change_network_gnutls_ca (const void *pointer, void *data,
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Checks option "weechat.network.proxy_curl".
|
* Check option "weechat.network.proxy_curl".
|
||||||
*/
|
*/
|
||||||
|
|
||||||
int
|
int
|
||||||
@@ -1602,9 +1604,9 @@ config_change_plugin_extension (const void *pointer, void *data,
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Timer called each minute: checks if the day has changed, and if yes:
|
* Timer called each minute: check if the day has changed, and if yes:
|
||||||
* - refreshes screen (if needed)
|
* - refresh screen (if needed)
|
||||||
* - sends signal "day_changed"
|
* - send signal "day_changed"
|
||||||
*/
|
*/
|
||||||
|
|
||||||
int
|
int
|
||||||
@@ -1652,7 +1654,7 @@ config_day_change_timer_cb (const void *pointer, void *data,
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Initializes some things after reading/reloading WeeChat configuration file.
|
* Initialize some things after reading/reloading WeeChat configuration file.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void
|
void
|
||||||
@@ -1701,7 +1703,7 @@ config_weechat_init_after_read (void)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Updates options in configuration file while reading the file.
|
* Update options in configuration file while reading the file.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
struct t_hashtable *
|
struct t_hashtable *
|
||||||
@@ -1710,7 +1712,7 @@ config_weechat_update_cb (const void *pointer, void *data,
|
|||||||
int version_read,
|
int version_read,
|
||||||
struct t_hashtable *data_read)
|
struct t_hashtable *data_read)
|
||||||
{
|
{
|
||||||
const char *ptr_config, *ptr_section, *ptr_option, *ptr_value;
|
const char *ptr_config, *ptr_section, *ptr_option, *ptr_value, *pos_option;
|
||||||
char *new_commands[][2] = {
|
char *new_commands[][2] = {
|
||||||
/* old command, new command */
|
/* old command, new command */
|
||||||
{ "/input jump_smart", "/buffer jump smart" },
|
{ "/input jump_smart", "/buffer jump smart" },
|
||||||
@@ -1740,7 +1742,7 @@ config_weechat_update_cb (const void *pointer, void *data,
|
|||||||
{ "number_desc" "-buffer.number" },
|
{ "number_desc" "-buffer.number" },
|
||||||
{ NULL, NULL },
|
{ NULL, NULL },
|
||||||
};
|
};
|
||||||
char *new_option, *new_value, *pos_option;
|
char *new_option, *new_value;
|
||||||
int changes, i;
|
int changes, i;
|
||||||
|
|
||||||
/* make C compiler happy */
|
/* make C compiler happy */
|
||||||
@@ -1939,9 +1941,9 @@ config_weechat_update_cb (const void *pointer, void *data,
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Reloads WeeChat configuration file.
|
* Reload WeeChat configuration file.
|
||||||
*
|
*
|
||||||
* Returns:
|
* Return:
|
||||||
* WEECHAT_CONFIG_READ_OK: OK
|
* WEECHAT_CONFIG_READ_OK: OK
|
||||||
* WEECHAT_CONFIG_READ_MEMORY_ERROR: not enough memory
|
* WEECHAT_CONFIG_READ_MEMORY_ERROR: not enough memory
|
||||||
* WEECHAT_CONFIG_READ_FILE_NOT_FOUND: file not found
|
* WEECHAT_CONFIG_READ_FILE_NOT_FOUND: file not found
|
||||||
@@ -1994,7 +1996,7 @@ config_weechat_reload_cb (const void *pointer, void *data,
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Gets debug level for a plugin (or "core").
|
* Get debug level for a plugin (or "core").
|
||||||
*/
|
*/
|
||||||
|
|
||||||
struct t_config_option *
|
struct t_config_option *
|
||||||
@@ -2006,8 +2008,7 @@ config_weechat_debug_get (const char *plugin_name)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Sets debug level for "core" and all plugins, using values from section
|
* Set debug level for "core" and all plugins, using values from section "debug".
|
||||||
* "debug".
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void
|
void
|
||||||
@@ -2129,7 +2130,7 @@ config_weechat_debug_delete_option_cb (const void *pointer, void *data,
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Sets debug level for a plugin (or "core").
|
* Set debug level for a plugin (or "core").
|
||||||
*/
|
*/
|
||||||
|
|
||||||
int
|
int
|
||||||
@@ -2150,20 +2151,15 @@ void
|
|||||||
config_weechat_palette_change_cb (const void *pointer, void *data,
|
config_weechat_palette_change_cb (const void *pointer, void *data,
|
||||||
struct t_config_option *option)
|
struct t_config_option *option)
|
||||||
{
|
{
|
||||||
char *error;
|
|
||||||
int number;
|
int number;
|
||||||
|
|
||||||
/* make C compiler happy */
|
/* make C compiler happy */
|
||||||
(void) pointer;
|
(void) pointer;
|
||||||
(void) data;
|
(void) data;
|
||||||
|
|
||||||
error = NULL;
|
if (util_parse_int (option->name, 10, &number))
|
||||||
number = (int)strtol (option->name, &error, 10);
|
|
||||||
if (error && !error[0])
|
|
||||||
{
|
|
||||||
gui_color_palette_add (number, CONFIG_STRING(option));
|
gui_color_palette_add (number, CONFIG_STRING(option));
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Callback called when an option is created in section "palette".
|
* Callback called when an option is created in section "palette".
|
||||||
@@ -2177,7 +2173,6 @@ config_weechat_palette_create_option_cb (const void *pointer, void *data,
|
|||||||
const char *value)
|
const char *value)
|
||||||
{
|
{
|
||||||
struct t_config_option *ptr_option;
|
struct t_config_option *ptr_option;
|
||||||
char *error;
|
|
||||||
int rc, number;
|
int rc, number;
|
||||||
|
|
||||||
/* make C compiler happy */
|
/* make C compiler happy */
|
||||||
@@ -2186,9 +2181,7 @@ config_weechat_palette_create_option_cb (const void *pointer, void *data,
|
|||||||
|
|
||||||
rc = WEECHAT_CONFIG_OPTION_SET_ERROR;
|
rc = WEECHAT_CONFIG_OPTION_SET_ERROR;
|
||||||
|
|
||||||
error = NULL;
|
if (util_parse_int (option_name, 10, &number))
|
||||||
number = (int)strtol (option_name, &error, 10);
|
|
||||||
if (error && !error[0])
|
|
||||||
{
|
{
|
||||||
if (option_name)
|
if (option_name)
|
||||||
{
|
{
|
||||||
@@ -2246,7 +2239,6 @@ config_weechat_palette_delete_option_cb (const void *pointer, void *data,
|
|||||||
struct t_config_section *section,
|
struct t_config_section *section,
|
||||||
struct t_config_option *option)
|
struct t_config_option *option)
|
||||||
{
|
{
|
||||||
char *error;
|
|
||||||
int number;
|
int number;
|
||||||
|
|
||||||
/* make C compiler happy */
|
/* make C compiler happy */
|
||||||
@@ -2255,9 +2247,7 @@ config_weechat_palette_delete_option_cb (const void *pointer, void *data,
|
|||||||
(void) config_file;
|
(void) config_file;
|
||||||
(void) section;
|
(void) section;
|
||||||
|
|
||||||
error = NULL;
|
if (util_parse_int (option->name, 10, &number))
|
||||||
number = (int)strtol (option->name, &error, 10);
|
|
||||||
if (error && !error[0])
|
|
||||||
gui_color_palette_remove (number);
|
gui_color_palette_remove (number);
|
||||||
|
|
||||||
config_file_option_free (option, 1);
|
config_file_option_free (option, 1);
|
||||||
@@ -2266,7 +2256,7 @@ config_weechat_palette_delete_option_cb (const void *pointer, void *data,
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Reads a proxy option in WeeChat configuration file.
|
* Read a proxy option in WeeChat configuration file.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
int
|
int
|
||||||
@@ -2275,7 +2265,8 @@ config_weechat_proxy_read_cb (const void *pointer, void *data,
|
|||||||
struct t_config_section *section,
|
struct t_config_section *section,
|
||||||
const char *option_name, const char *value)
|
const char *option_name, const char *value)
|
||||||
{
|
{
|
||||||
char *pos_option, *proxy_name;
|
const char *pos_option;
|
||||||
|
char *proxy_name;
|
||||||
struct t_proxy *ptr_temp_proxy;
|
struct t_proxy *ptr_temp_proxy;
|
||||||
int index_option;
|
int index_option;
|
||||||
|
|
||||||
@@ -2345,7 +2336,7 @@ config_weechat_proxy_read_cb (const void *pointer, void *data,
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Reads a bar option in WeeChat configuration file.
|
* Read a bar option in WeeChat configuration file.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
int
|
int
|
||||||
@@ -2354,7 +2345,8 @@ config_weechat_bar_read_cb (const void *pointer, void *data,
|
|||||||
struct t_config_section *section,
|
struct t_config_section *section,
|
||||||
const char *option_name, const char *value)
|
const char *option_name, const char *value)
|
||||||
{
|
{
|
||||||
char *pos_option, *bar_name;
|
const char *pos_option;
|
||||||
|
char *bar_name;
|
||||||
struct t_gui_bar *ptr_temp_bar;
|
struct t_gui_bar *ptr_temp_bar;
|
||||||
int index_option;
|
int index_option;
|
||||||
|
|
||||||
@@ -2425,7 +2417,7 @@ config_weechat_bar_read_cb (const void *pointer, void *data,
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Reads a custom bar item option in WeeChat configuration file.
|
* Read a custom bar item option in WeeChat configuration file.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
int
|
int
|
||||||
@@ -2434,7 +2426,8 @@ config_weechat_custom_bar_item_read_cb (const void *pointer, void *data,
|
|||||||
struct t_config_section *section,
|
struct t_config_section *section,
|
||||||
const char *option_name, const char *value)
|
const char *option_name, const char *value)
|
||||||
{
|
{
|
||||||
char *pos_option, *item_name;
|
const char *pos_option;
|
||||||
|
char *item_name;
|
||||||
struct t_gui_bar_item_custom *ptr_temp_item;
|
struct t_gui_bar_item_custom *ptr_temp_item;
|
||||||
int index_option;
|
int index_option;
|
||||||
|
|
||||||
@@ -2515,7 +2508,7 @@ config_weechat_custom_bar_item_read_cb (const void *pointer, void *data,
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Reads a layout option in WeeChat configuration file.
|
* Read a layout option in WeeChat configuration file.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
int
|
int
|
||||||
@@ -2524,10 +2517,10 @@ config_weechat_layout_read_cb (const void *pointer, void *data,
|
|||||||
struct t_config_section *section,
|
struct t_config_section *section,
|
||||||
const char *option_name, const char *value)
|
const char *option_name, const char *value)
|
||||||
{
|
{
|
||||||
int argc, force_current_layout;
|
int argc, force_current_layout, number1, number2, number3, number4;
|
||||||
char **argv, *pos, *layout_name, *error1, *error2, *error3, *error4;
|
const char *pos;
|
||||||
|
char **argv, *layout_name;
|
||||||
const char *ptr_option_name;
|
const char *ptr_option_name;
|
||||||
long number1, number2, number3, number4;
|
|
||||||
struct t_gui_layout *ptr_layout;
|
struct t_gui_layout *ptr_layout;
|
||||||
struct t_gui_layout_window *parent;
|
struct t_gui_layout_window *parent;
|
||||||
|
|
||||||
@@ -2585,9 +2578,7 @@ config_weechat_layout_read_cb (const void *pointer, void *data,
|
|||||||
{
|
{
|
||||||
if (argc >= 3)
|
if (argc >= 3)
|
||||||
{
|
{
|
||||||
error1 = NULL;
|
if (util_parse_int (argv[2], 10, &number1))
|
||||||
number1 = strtol (argv[2], &error1, 10);
|
|
||||||
if (error1 && !error1[0])
|
|
||||||
gui_layout_buffer_add (ptr_layout, argv[0], argv[1], number1);
|
gui_layout_buffer_add (ptr_layout, argv[0], argv[1], number1);
|
||||||
}
|
}
|
||||||
string_free_split (argv);
|
string_free_split (argv);
|
||||||
@@ -2604,16 +2595,10 @@ config_weechat_layout_read_cb (const void *pointer, void *data,
|
|||||||
{
|
{
|
||||||
if (argc >= 6)
|
if (argc >= 6)
|
||||||
{
|
{
|
||||||
error1 = NULL;
|
if (util_parse_int (argv[0], 10, &number1)
|
||||||
number1 = strtol (argv[0], &error1, 10);
|
&& util_parse_int (argv[1], 10, &number2)
|
||||||
error2 = NULL;
|
&& util_parse_int (argv[2], 10, &number3)
|
||||||
number2 = strtol (argv[1], &error2, 10);
|
&& util_parse_int (argv[3], 10, &number4))
|
||||||
error3 = NULL;
|
|
||||||
number3 = strtol (argv[2], &error3, 10);
|
|
||||||
error4 = NULL;
|
|
||||||
number4 = strtol (argv[3], &error4, 10);
|
|
||||||
if (error1 && !error1[0] && error2 && !error2[0]
|
|
||||||
&& error3 && !error3[0] && error4 && !error4[0])
|
|
||||||
{
|
{
|
||||||
parent = gui_layout_window_search_by_id (ptr_layout->layout_windows,
|
parent = gui_layout_window_search_by_id (ptr_layout->layout_windows,
|
||||||
number2);
|
number2);
|
||||||
@@ -2646,9 +2631,9 @@ config_weechat_layout_read_cb (const void *pointer, void *data,
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Writes layout of windows in WeeChat configuration file.
|
* Write layout of windows in WeeChat configuration file.
|
||||||
*
|
*
|
||||||
* Returns:
|
* Return:
|
||||||
* 1: OK
|
* 1: OK
|
||||||
* 0: write error
|
* 0: write error
|
||||||
*/
|
*/
|
||||||
@@ -2689,7 +2674,7 @@ config_weechat_layout_write_tree (struct t_config_file *config_file,
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Writes section "layout" in WeeChat configuration file.
|
* Write section "layout" in WeeChat configuration file.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
int
|
int
|
||||||
@@ -2749,7 +2734,7 @@ config_weechat_layout_write_cb (const void *pointer, void *data,
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Applies a buffer option to all matching buffers.
|
* Apply a buffer option to all matching buffers.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void
|
void
|
||||||
@@ -2871,9 +2856,9 @@ config_weechat_buffer_create_option_cb (const void *pointer, void *data,
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Sets a buffer property.
|
* Set a buffer property.
|
||||||
*
|
*
|
||||||
* Returns:
|
* Return:
|
||||||
* 1: OK
|
* 1: OK
|
||||||
* 0: error
|
* 0: error
|
||||||
*/
|
*/
|
||||||
@@ -3024,12 +3009,12 @@ config_weechat_notify_delete_option_cb (const void *pointer, void *data,
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Sets a notify level for a buffer.
|
* Set a notify level for a buffer.
|
||||||
*
|
*
|
||||||
* A negative value resets notify for buffer to its default value (and
|
* A negative value resets notify for buffer to its default value (and
|
||||||
* removes buffer from config file).
|
* removes buffer from config file).
|
||||||
*
|
*
|
||||||
* Returns:
|
* Return:
|
||||||
* 1: OK
|
* 1: OK
|
||||||
* 0: error
|
* 0: error
|
||||||
*/
|
*/
|
||||||
@@ -3054,7 +3039,7 @@ config_weechat_notify_set (struct t_gui_buffer *buffer, const char *notify)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Reads a filter option in WeeChat configuration file.
|
* Read a filter option in WeeChat configuration file.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
int
|
int
|
||||||
@@ -3098,7 +3083,7 @@ config_weechat_filter_read_cb (const void *pointer, void *data,
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Writes section "filter" in WeeChat configuration file.
|
* Write section "filter" in WeeChat configuration file.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
int
|
int
|
||||||
@@ -3132,9 +3117,9 @@ config_weechat_filter_write_cb (const void *pointer, void *data,
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Searches key context with the section pointer.
|
* Search key context with the section pointer.
|
||||||
*
|
*
|
||||||
* Returns key context, -1 if not found.
|
* Return key context, -1 if not found.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
int
|
int
|
||||||
@@ -3223,9 +3208,9 @@ config_weechat_key_delete_option_cb (const void *pointer, void *data,
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Creates options in WeeChat configuration.
|
* Create options in WeeChat configuration.
|
||||||
*
|
*
|
||||||
* Returns:
|
* Return:
|
||||||
* 1: OK
|
* 1: OK
|
||||||
* 0: error
|
* 0: error
|
||||||
*/
|
*/
|
||||||
@@ -3468,7 +3453,7 @@ config_weechat_init_options (void)
|
|||||||
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL);
|
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL);
|
||||||
config_look_buffer_time_format = config_file_new_option (
|
config_look_buffer_time_format = config_file_new_option (
|
||||||
weechat_config_file, weechat_config_section_look,
|
weechat_config_file, weechat_config_section_look,
|
||||||
"buffer_time_format", "string",
|
"buffer_time_format", "string|themable",
|
||||||
/* TRANSLATORS: string "${color:xxx}" must NOT be translated */
|
/* TRANSLATORS: string "${color:xxx}" must NOT be translated */
|
||||||
N_("time format for each line displayed in buffers (see man "
|
N_("time format for each line displayed in buffers (see man "
|
||||||
"strftime for date/time specifiers, extra specifiers are "
|
"strftime for date/time specifiers, extra specifiers are "
|
||||||
@@ -3492,7 +3477,7 @@ config_weechat_init_options (void)
|
|||||||
NULL, NULL, NULL);
|
NULL, NULL, NULL);
|
||||||
config_look_buffer_time_same = config_file_new_option (
|
config_look_buffer_time_same = config_file_new_option (
|
||||||
weechat_config_file, weechat_config_section_look,
|
weechat_config_file, weechat_config_section_look,
|
||||||
"buffer_time_same", "string",
|
"buffer_time_same", "string|themable",
|
||||||
/* TRANSLATORS: string "${color:xxx}" must NOT be translated */
|
/* TRANSLATORS: string "${color:xxx}" must NOT be translated */
|
||||||
N_("time displayed for a message with same time as previous message: "
|
N_("time displayed for a message with same time as previous message: "
|
||||||
"use a space \" \" to hide time, another string to display this "
|
"use a space \" \" to hide time, another string to display this "
|
||||||
@@ -3659,7 +3644,7 @@ config_weechat_init_options (void)
|
|||||||
NULL, NULL, NULL);
|
NULL, NULL, NULL);
|
||||||
config_look_day_change_message_1date = config_file_new_option (
|
config_look_day_change_message_1date = config_file_new_option (
|
||||||
weechat_config_file, weechat_config_section_look,
|
weechat_config_file, weechat_config_section_look,
|
||||||
"day_change_message_1date", "string",
|
"day_change_message_1date", "string|themable",
|
||||||
/* TRANSLATORS: string "${color:xxx}" must NOT be translated */
|
/* TRANSLATORS: string "${color:xxx}" must NOT be translated */
|
||||||
N_("message displayed when the day has changed, with one date "
|
N_("message displayed when the day has changed, with one date "
|
||||||
"displayed (for example at beginning of buffer) (see man "
|
"displayed (for example at beginning of buffer) (see man "
|
||||||
@@ -3672,7 +3657,7 @@ config_weechat_init_options (void)
|
|||||||
NULL, NULL, NULL);
|
NULL, NULL, NULL);
|
||||||
config_look_day_change_message_2dates = config_file_new_option (
|
config_look_day_change_message_2dates = config_file_new_option (
|
||||||
weechat_config_file, weechat_config_section_look,
|
weechat_config_file, weechat_config_section_look,
|
||||||
"day_change_message_2dates", "string",
|
"day_change_message_2dates", "string|themable",
|
||||||
/* TRANSLATORS: string "${color:xxx}" must NOT be translated */
|
/* TRANSLATORS: string "${color:xxx}" must NOT be translated */
|
||||||
N_("message displayed when the day has changed, with two dates "
|
N_("message displayed when the day has changed, with two dates "
|
||||||
"displayed (between two messages); the second date specifiers "
|
"displayed (between two messages); the second date specifiers "
|
||||||
@@ -3784,6 +3769,7 @@ config_weechat_init_options (void)
|
|||||||
NULL, 0, 0,
|
NULL, 0, 0,
|
||||||
"${away} "
|
"${away} "
|
||||||
"|| ${buffer.num_displayed} == 0 "
|
"|| ${buffer.num_displayed} == 0 "
|
||||||
|
"|| ${info:relay_client_count,api,connected} > 0 "
|
||||||
"|| ${info:relay_client_count,weechat,connected} > 0",
|
"|| ${info:relay_client_count,weechat,connected} > 0",
|
||||||
NULL, 0,
|
NULL, 0,
|
||||||
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL);
|
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL);
|
||||||
@@ -3988,7 +3974,7 @@ config_weechat_init_options (void)
|
|||||||
NULL, NULL, NULL);
|
NULL, NULL, NULL);
|
||||||
config_look_item_time_format = config_file_new_option (
|
config_look_item_time_format = config_file_new_option (
|
||||||
weechat_config_file, weechat_config_section_look,
|
weechat_config_file, weechat_config_section_look,
|
||||||
"item_time_format", "string",
|
"item_time_format", "string|themable",
|
||||||
N_("time format for \"time\" bar item (see man strftime for "
|
N_("time format for \"time\" bar item (see man strftime for "
|
||||||
"date/time specifiers) (note: content is evaluated, so you can "
|
"date/time specifiers) (note: content is evaluated, so you can "
|
||||||
"use colors with format \"${color:xxx}\", see /help eval)"),
|
"use colors with format \"${color:xxx}\", see /help eval)"),
|
||||||
@@ -4043,7 +4029,7 @@ config_weechat_init_options (void)
|
|||||||
NULL, NULL, NULL);
|
NULL, NULL, NULL);
|
||||||
config_look_nick_color_force = config_file_new_option (
|
config_look_nick_color_force = config_file_new_option (
|
||||||
weechat_config_file, weechat_config_section_look,
|
weechat_config_file, weechat_config_section_look,
|
||||||
"nick_color_force", "string",
|
"nick_color_force", "string|themable",
|
||||||
N_("force color for some nicks: hash computed with nickname "
|
N_("force color for some nicks: hash computed with nickname "
|
||||||
"to find color will not be used for these nicks (format is: "
|
"to find color will not be used for these nicks (format is: "
|
||||||
"\"nick1:color1;nick2:color2\"); look up for nicks is with "
|
"\"nick1:color1;nick2:color2\"); look up for nicks is with "
|
||||||
@@ -4135,7 +4121,7 @@ config_weechat_init_options (void)
|
|||||||
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL);
|
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL);
|
||||||
config_look_prefix[GUI_CHAT_PREFIX_ERROR] = config_file_new_option (
|
config_look_prefix[GUI_CHAT_PREFIX_ERROR] = config_file_new_option (
|
||||||
weechat_config_file, weechat_config_section_look,
|
weechat_config_file, weechat_config_section_look,
|
||||||
"prefix_error", "string",
|
"prefix_error", "string|themable",
|
||||||
/* TRANSLATORS: string "${color:xxx}" must NOT be translated */
|
/* TRANSLATORS: string "${color:xxx}" must NOT be translated */
|
||||||
N_("prefix for error messages (note: content is evaluated, so you "
|
N_("prefix for error messages (note: content is evaluated, so you "
|
||||||
"can use colors with format \"${color:xxx}\", see /help eval)"),
|
"can use colors with format \"${color:xxx}\", see /help eval)"),
|
||||||
@@ -4145,7 +4131,7 @@ config_weechat_init_options (void)
|
|||||||
NULL, NULL, NULL);
|
NULL, NULL, NULL);
|
||||||
config_look_prefix[GUI_CHAT_PREFIX_NETWORK] = config_file_new_option (
|
config_look_prefix[GUI_CHAT_PREFIX_NETWORK] = config_file_new_option (
|
||||||
weechat_config_file, weechat_config_section_look,
|
weechat_config_file, weechat_config_section_look,
|
||||||
"prefix_network", "string",
|
"prefix_network", "string|themable",
|
||||||
/* TRANSLATORS: string "${color:xxx}" must NOT be translated */
|
/* TRANSLATORS: string "${color:xxx}" must NOT be translated */
|
||||||
N_("prefix for network messages (note: content is evaluated, so you "
|
N_("prefix for network messages (note: content is evaluated, so you "
|
||||||
"can use colors with format \"${color:xxx}\", see /help eval)"),
|
"can use colors with format \"${color:xxx}\", see /help eval)"),
|
||||||
@@ -4155,7 +4141,7 @@ config_weechat_init_options (void)
|
|||||||
NULL, NULL, NULL);
|
NULL, NULL, NULL);
|
||||||
config_look_prefix[GUI_CHAT_PREFIX_ACTION] = config_file_new_option (
|
config_look_prefix[GUI_CHAT_PREFIX_ACTION] = config_file_new_option (
|
||||||
weechat_config_file, weechat_config_section_look,
|
weechat_config_file, weechat_config_section_look,
|
||||||
"prefix_action", "string",
|
"prefix_action", "string|themable",
|
||||||
/* TRANSLATORS: string "${color:xxx}" must NOT be translated */
|
/* TRANSLATORS: string "${color:xxx}" must NOT be translated */
|
||||||
N_("prefix for action messages (note: content is evaluated, so you "
|
N_("prefix for action messages (note: content is evaluated, so you "
|
||||||
"can use colors with format \"${color:xxx}\", see /help eval)"),
|
"can use colors with format \"${color:xxx}\", see /help eval)"),
|
||||||
@@ -4165,7 +4151,7 @@ config_weechat_init_options (void)
|
|||||||
NULL, NULL, NULL);
|
NULL, NULL, NULL);
|
||||||
config_look_prefix[GUI_CHAT_PREFIX_JOIN] = config_file_new_option (
|
config_look_prefix[GUI_CHAT_PREFIX_JOIN] = config_file_new_option (
|
||||||
weechat_config_file, weechat_config_section_look,
|
weechat_config_file, weechat_config_section_look,
|
||||||
"prefix_join", "string",
|
"prefix_join", "string|themable",
|
||||||
/* TRANSLATORS: string "${color:xxx}" must NOT be translated */
|
/* TRANSLATORS: string "${color:xxx}" must NOT be translated */
|
||||||
N_("prefix for join messages (note: content is evaluated, so you "
|
N_("prefix for join messages (note: content is evaluated, so you "
|
||||||
"can use colors with format \"${color:xxx}\", see /help eval)"),
|
"can use colors with format \"${color:xxx}\", see /help eval)"),
|
||||||
@@ -4175,7 +4161,7 @@ config_weechat_init_options (void)
|
|||||||
NULL, NULL, NULL);
|
NULL, NULL, NULL);
|
||||||
config_look_prefix[GUI_CHAT_PREFIX_QUIT] = config_file_new_option (
|
config_look_prefix[GUI_CHAT_PREFIX_QUIT] = config_file_new_option (
|
||||||
weechat_config_file, weechat_config_section_look,
|
weechat_config_file, weechat_config_section_look,
|
||||||
"prefix_quit", "string",
|
"prefix_quit", "string|themable",
|
||||||
/* TRANSLATORS: string "${color:xxx}" must NOT be translated */
|
/* TRANSLATORS: string "${color:xxx}" must NOT be translated */
|
||||||
N_("prefix for quit messages (note: content is evaluated, so you "
|
N_("prefix for quit messages (note: content is evaluated, so you "
|
||||||
"can use colors with format \"${color:xxx}\", see /help eval)"),
|
"can use colors with format \"${color:xxx}\", see /help eval)"),
|
||||||
@@ -4444,6 +4430,26 @@ config_weechat_init_options (void)
|
|||||||
NULL, NULL, NULL,
|
NULL, NULL, NULL,
|
||||||
&config_change_tab, NULL, NULL,
|
&config_change_tab, NULL, NULL,
|
||||||
NULL, NULL, NULL);
|
NULL, NULL, NULL);
|
||||||
|
config_look_theme = config_file_new_option (
|
||||||
|
weechat_config_file, weechat_config_section_look,
|
||||||
|
"theme", "string",
|
||||||
|
N_("name of the last theme applied with command /theme "
|
||||||
|
"(set automatically, do not change manually); informational "
|
||||||
|
"only, the theme is not re-applied at startup"),
|
||||||
|
NULL, 0, 0, "", NULL, 0,
|
||||||
|
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL);
|
||||||
|
config_look_theme_backup = config_file_new_option (
|
||||||
|
weechat_config_file, weechat_config_section_look,
|
||||||
|
"theme_backup", "boolean",
|
||||||
|
N_("create a backup theme file with the current themable "
|
||||||
|
"options before applying a theme with command /theme; if "
|
||||||
|
"the backup file cannot be written, the apply is aborted "
|
||||||
|
"(no option is changed); the backup file is written to "
|
||||||
|
"directory \"themes\" inside the WeeChat configuration "
|
||||||
|
"directory and can be restored with the command: `/theme apply "
|
||||||
|
"backup-<timestamp>`"),
|
||||||
|
NULL, 0, 0, "on", NULL, 0,
|
||||||
|
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL);
|
||||||
config_look_time_format = config_file_new_option (
|
config_look_time_format = config_file_new_option (
|
||||||
weechat_config_file, weechat_config_section_look,
|
weechat_config_file, weechat_config_section_look,
|
||||||
"time_format", "string",
|
"time_format", "string",
|
||||||
@@ -4664,7 +4670,7 @@ config_weechat_init_options (void)
|
|||||||
NULL, NULL, NULL);
|
NULL, NULL, NULL);
|
||||||
config_color_chat_nick_colors = config_file_new_option (
|
config_color_chat_nick_colors = config_file_new_option (
|
||||||
weechat_config_file, weechat_config_section_color,
|
weechat_config_file, weechat_config_section_color,
|
||||||
"chat_nick_colors", "string",
|
"chat_nick_colors", "string|themable",
|
||||||
/* TRANSLATORS: please do not translate "lightred:blue" */
|
/* TRANSLATORS: please do not translate "lightred:blue" */
|
||||||
N_("text color for nicks (comma separated list of colors, "
|
N_("text color for nicks (comma separated list of colors, "
|
||||||
"background is allowed with format: \"fg:bg\", for example: "
|
"background is allowed with format: \"fg:bg\", for example: "
|
||||||
@@ -4935,7 +4941,7 @@ config_weechat_init_options (void)
|
|||||||
/* eval syntax highlighting colors (for "${raw_hl:xxx}" and "${hl:xxx}") */
|
/* eval syntax highlighting colors (for "${raw_hl:xxx}" and "${hl:xxx}") */
|
||||||
config_color_eval_syntax_colors = config_file_new_option (
|
config_color_eval_syntax_colors = config_file_new_option (
|
||||||
weechat_config_file, weechat_config_section_color,
|
weechat_config_file, weechat_config_section_color,
|
||||||
"eval_syntax_colors", "string",
|
"eval_syntax_colors", "string|themable",
|
||||||
/* TRANSLATORS: please do not translate "lightred:blue" */
|
/* TRANSLATORS: please do not translate "lightred:blue" */
|
||||||
N_("text color for syntax highlighting in evaluated strings, "
|
N_("text color for syntax highlighting in evaluated strings, "
|
||||||
"with \"${raw_hl:...}\" and \"${hl:...}\" (comma separated "
|
"with \"${raw_hl:...}\" and \"${hl:...}\" (comma separated "
|
||||||
@@ -5599,9 +5605,9 @@ config_weechat_init_options (void)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Initializes WeeChat configuration.
|
* Initialize WeeChat configuration.
|
||||||
*
|
*
|
||||||
* Returns:
|
* Return:
|
||||||
* 1: OK
|
* 1: OK
|
||||||
* 0: error
|
* 0: error
|
||||||
*/
|
*/
|
||||||
@@ -5661,9 +5667,9 @@ config_weechat_init (void)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Reads WeeChat configuration file.
|
* Read WeeChat configuration file.
|
||||||
*
|
*
|
||||||
* Returns:
|
* Return:
|
||||||
* WEECHAT_CONFIG_READ_OK: OK
|
* WEECHAT_CONFIG_READ_OK: OK
|
||||||
* WEECHAT_CONFIG_READ_MEMORY_ERROR: not enough memory
|
* WEECHAT_CONFIG_READ_MEMORY_ERROR: not enough memory
|
||||||
* WEECHAT_CONFIG_READ_FILE_NOT_FOUND: file not found
|
* WEECHAT_CONFIG_READ_FILE_NOT_FOUND: file not found
|
||||||
@@ -5684,9 +5690,9 @@ config_weechat_read (void)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Writes WeeChat configuration file.
|
* Write WeeChat configuration file.
|
||||||
*
|
*
|
||||||
* Returns:
|
* Return:
|
||||||
* WEECHAT_CONFIG_WRITE_OK: OK
|
* WEECHAT_CONFIG_WRITE_OK: OK
|
||||||
* WEECHAT_CONFIG_WRITE_ERROR: error
|
* WEECHAT_CONFIG_WRITE_ERROR: error
|
||||||
* WEECHAT_CONFIG_WRITE_MEMORY_ERROR: not enough memory
|
* WEECHAT_CONFIG_WRITE_MEMORY_ERROR: not enough memory
|
||||||
@@ -5699,7 +5705,7 @@ config_weechat_write (void)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Frees WeeChat configuration file and variables.
|
* Free WeeChat configuration file and variables.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void
|
void
|
||||||
|
|||||||
@@ -277,6 +277,8 @@ extern struct t_config_option *config_look_separator_horizontal;
|
|||||||
extern struct t_config_option *config_look_separator_vertical;
|
extern struct t_config_option *config_look_separator_vertical;
|
||||||
extern struct t_config_option *config_look_tab_whitespace_char;
|
extern struct t_config_option *config_look_tab_whitespace_char;
|
||||||
extern struct t_config_option *config_look_tab_width;
|
extern struct t_config_option *config_look_tab_width;
|
||||||
|
extern struct t_config_option *config_look_theme;
|
||||||
|
extern struct t_config_option *config_look_theme_backup;
|
||||||
extern struct t_config_option *config_look_time_format;
|
extern struct t_config_option *config_look_time_format;
|
||||||
extern struct t_config_option *config_look_whitespace_char;
|
extern struct t_config_option *config_look_whitespace_char;
|
||||||
extern struct t_config_option *config_look_window_auto_zoom;
|
extern struct t_config_option *config_look_window_auto_zoom;
|
||||||
|
|||||||
+26
-20
@@ -46,6 +46,9 @@
|
|||||||
#include <netinet/in.h>
|
#include <netinet/in.h>
|
||||||
#include <inttypes.h>
|
#include <inttypes.h>
|
||||||
#define BE_INT64 htonll
|
#define BE_INT64 htonll
|
||||||
|
#elif defined(__HAIKU__)
|
||||||
|
#include <ByteOrder.h>
|
||||||
|
#define BE_INT64 B_HOST_TO_BENDIAN_INT64
|
||||||
#else
|
#else
|
||||||
#define BE_INT64 htobe64
|
#define BE_INT64 htobe64
|
||||||
#endif
|
#endif
|
||||||
@@ -123,7 +126,7 @@ int weecrypto_cipher[] = {
|
|||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Returns the hash algorithm with the name, or GCRY_MD_NONE if not found.
|
* Return the hash algorithm with the name, or GCRY_MD_NONE if not found.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
int
|
int
|
||||||
@@ -144,7 +147,7 @@ weecrypto_get_hash_algo (const char *hash_algo)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Returns the cipher with the name, or GCRY_CIPHER_NONE if not found.
|
* Return the cipher with the name, or GCRY_CIPHER_NONE if not found.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
int
|
int
|
||||||
@@ -165,7 +168,7 @@ weecrypto_get_cipher (const char *cipher)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Computes hash of data using the given hash algorithm.
|
* Compute hash of data using the given hash algorithm.
|
||||||
*
|
*
|
||||||
* The hash size depends on the algorithm, common ones are:
|
* The hash size depends on the algorithm, common ones are:
|
||||||
*
|
*
|
||||||
@@ -196,7 +199,7 @@ weecrypto_get_cipher (const char *cipher)
|
|||||||
* If hash_size is not NULL, the length of hash is stored in *hash_size
|
* If hash_size is not NULL, the length of hash is stored in *hash_size
|
||||||
* (in bytes).
|
* (in bytes).
|
||||||
*
|
*
|
||||||
* Returns:
|
* Return:
|
||||||
* 1: OK
|
* 1: OK
|
||||||
* 0: error
|
* 0: error
|
||||||
*/
|
*/
|
||||||
@@ -255,7 +258,7 @@ hash_end:
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Computes hash of file using the given hash algorithm.
|
* Compute hash of file using the given hash algorithm.
|
||||||
*
|
*
|
||||||
* The hash size depends on the algorithm, common ones are:
|
* The hash size depends on the algorithm, common ones are:
|
||||||
*
|
*
|
||||||
@@ -286,7 +289,7 @@ hash_end:
|
|||||||
* If hash_size is not NULL, the length of hash is stored in *hash_size
|
* If hash_size is not NULL, the length of hash is stored in *hash_size
|
||||||
* (in bytes).
|
* (in bytes).
|
||||||
*
|
*
|
||||||
* Returns:
|
* Return:
|
||||||
* 1: OK
|
* 1: OK
|
||||||
* 0: error
|
* 0: error
|
||||||
*/
|
*/
|
||||||
@@ -361,7 +364,7 @@ hash_end:
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Computes PKCS#5 Passphrase Based Key Derivation Function number 2 (PBKDF2)
|
* Compute PKCS#5 Passphrase Based Key Derivation Function number 2 (PBKDF2)
|
||||||
* hash of data.
|
* hash of data.
|
||||||
*
|
*
|
||||||
* The hash size depends on the algorithm, common ones are:
|
* The hash size depends on the algorithm, common ones are:
|
||||||
@@ -375,7 +378,7 @@ hash_end:
|
|||||||
* If hash_size is not NULL, the length of hash is stored in *hash_size
|
* If hash_size is not NULL, the length of hash is stored in *hash_size
|
||||||
* (in bytes).
|
* (in bytes).
|
||||||
*
|
*
|
||||||
* Returns:
|
* Return:
|
||||||
* 1: OK
|
* 1: OK
|
||||||
* 0: error
|
* 0: error
|
||||||
*/
|
*/
|
||||||
@@ -419,7 +422,7 @@ hash_pbkdf2_end:
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Computes keyed-hash message authentication code (HMAC).
|
* Compute keyed-hash message authentication code (HMAC).
|
||||||
*
|
*
|
||||||
* The hash size depends on the algorithm, common ones are:
|
* The hash size depends on the algorithm, common ones are:
|
||||||
*
|
*
|
||||||
@@ -450,7 +453,7 @@ hash_pbkdf2_end:
|
|||||||
* If hash_size is not NULL, the length of hash is stored in *hash_size
|
* If hash_size is not NULL, the length of hash is stored in *hash_size
|
||||||
* (in bytes).
|
* (in bytes).
|
||||||
*
|
*
|
||||||
* Returns:
|
* Return:
|
||||||
* 1: OK
|
* 1: OK
|
||||||
* 0: error
|
* 0: error
|
||||||
*/
|
*/
|
||||||
@@ -514,10 +517,10 @@ hmac_end:
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Generates a Time-based One-Time Password (TOTP), as described
|
* Generate a Time-based One-Time Password (TOTP), as described
|
||||||
* in the RFC 6238.
|
* in the RFC 6238.
|
||||||
*
|
*
|
||||||
* Returns:
|
* Return:
|
||||||
* 1: OK
|
* 1: OK
|
||||||
* 0: error
|
* 0: error
|
||||||
*/
|
*/
|
||||||
@@ -556,10 +559,10 @@ weecrypto_totp_generate_internal (const char *secret, int length_secret,
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Generates a Time-based One-Time Password (TOTP), as described
|
* Generate a Time-based One-Time Password (TOTP), as described
|
||||||
* in the RFC 6238.
|
* in the RFC 6238.
|
||||||
*
|
*
|
||||||
* Returns the password as string, NULL if error.
|
* Return the password as string, NULL if error.
|
||||||
*
|
*
|
||||||
* Note: result must be freed after use.
|
* Note: result must be freed after use.
|
||||||
*/
|
*/
|
||||||
@@ -615,9 +618,9 @@ error:
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Validates a Time-based One-Time Password (TOTP).
|
* Validate a Time-based One-Time Password (TOTP).
|
||||||
*
|
*
|
||||||
* Returns:
|
* Return:
|
||||||
* 1: OTP is OK
|
* 1: OTP is OK
|
||||||
* 0: OTP is invalid
|
* 0: OTP is invalid
|
||||||
*/
|
*/
|
||||||
@@ -657,15 +660,18 @@ weecrypto_totp_validate (const char *secret_base32, time_t totp_time,
|
|||||||
|
|
||||||
otp_ok = 0;
|
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++)
|
for (i = moving_factor - window; i <= moving_factor + window; i++)
|
||||||
{
|
{
|
||||||
rc = weecrypto_totp_generate_internal (secret, length_secret,
|
rc = weecrypto_totp_generate_internal (secret, length_secret,
|
||||||
i, digits, str_otp);
|
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;
|
otp_ok = 1;
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
free (secret);
|
free (secret);
|
||||||
|
|||||||
+15
-16
@@ -91,7 +91,7 @@ long long debug_long_callbacks = 0; /* callbacks taking more than */
|
|||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Displays build information on stdout.
|
* Display build information on stdout.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void
|
void
|
||||||
@@ -149,7 +149,7 @@ debug_build_info (void)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Writes dump of data to WeeChat log file.
|
* Write dump of data to WeeChat log file.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void
|
void
|
||||||
@@ -226,7 +226,7 @@ debug_dump_cb (const void *pointer, void *data,
|
|||||||
/*
|
/*
|
||||||
* Callback for system signal SIGSEGV handler.
|
* Callback for system signal SIGSEGV handler.
|
||||||
*
|
*
|
||||||
* Writes dump of data and backtrace to WeeChat log file, then exit.
|
* Write dump of data and backtrace to WeeChat log file, then exit.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void
|
void
|
||||||
@@ -271,7 +271,7 @@ debug_sigsegv_cb (int signo)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Displays tree of windows (this function must not be called directly).
|
* Display tree of windows (this function must not be called directly).
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void
|
void
|
||||||
@@ -341,7 +341,7 @@ debug_windows_tree_display (struct t_gui_window_tree *tree, int indent)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Displays tree of windows.
|
* Display tree of windows.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void
|
void
|
||||||
@@ -353,7 +353,7 @@ debug_windows_tree (void)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Displays information about dynamic memory allocation.
|
* Display information about dynamic memory allocation.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void
|
void
|
||||||
@@ -499,7 +499,7 @@ debug_hdata_map_cb (void *data,
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Displays a list of hdata in memory.
|
* Display a list of hdata in memory.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void
|
void
|
||||||
@@ -517,7 +517,7 @@ debug_hdata (void)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Displays info about hooks.
|
* Display info about hooks.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void
|
void
|
||||||
@@ -538,7 +538,7 @@ debug_hooks (void)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Displays info about hooks for one or multiple plugins matching a mask.
|
* Display info about hooks for one or multiple plugins matching a mask.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void
|
void
|
||||||
@@ -657,7 +657,7 @@ debug_hooks_plugin_types (const char *plugin_mask, const char **hook_types)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Displays a list of infolists in memory.
|
* Display a list of infolists in memory.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void
|
void
|
||||||
@@ -748,7 +748,7 @@ debug_infolists (void)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Callback for signal "debug_libs": displays infos about external libraries
|
* Callback for signal "debug_libs": display infos about external libraries
|
||||||
* used (called when command "/debug libs" is issued).
|
* used (called when command "/debug libs" is issued).
|
||||||
*
|
*
|
||||||
* Note: this function displays libraries for WeeChat core only: plugins can
|
* Note: this function displays libraries for WeeChat core only: plugins can
|
||||||
@@ -821,7 +821,7 @@ debug_libs_cb (const void *pointer, void *data,
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Displays WeeChat directories.
|
* Display WeeChat directories.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void
|
void
|
||||||
@@ -859,8 +859,7 @@ debug_directories (void)
|
|||||||
/*
|
/*
|
||||||
* Display time elapsed between two times.
|
* Display time elapsed between two times.
|
||||||
*
|
*
|
||||||
* If display is 1, the message is displayed in core buffer, otherwise it's
|
* If display is 1, display message in core buffer, otherwise write in log file.
|
||||||
* written in log file.
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void
|
void
|
||||||
@@ -1032,7 +1031,7 @@ debug_unicode (const char *string)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Initializes debug.
|
* Initialize debug.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void
|
void
|
||||||
@@ -1048,7 +1047,7 @@ debug_init (void)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Ends debug.
|
* End debug.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void
|
void
|
||||||
|
|||||||
+41
-103
@@ -57,7 +57,7 @@
|
|||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Returns the path to a temporary directory, the first valid directory in
|
* Return the path to a temporary directory, the first valid directory in
|
||||||
* this list:
|
* this list:
|
||||||
* - content of environment variable "TMPDIR"
|
* - content of environment variable "TMPDIR"
|
||||||
* - P_tmpdir (from stdio.h)
|
* - P_tmpdir (from stdio.h)
|
||||||
@@ -100,9 +100,9 @@ dir_get_temp_dir (void)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Creates a directory in WeeChat home.
|
* Create a directory in WeeChat home.
|
||||||
*
|
*
|
||||||
* Returns:
|
* Return:
|
||||||
* 1: OK
|
* 1: OK
|
||||||
* 0: error
|
* 0: error
|
||||||
*/
|
*/
|
||||||
@@ -175,9 +175,9 @@ end:
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Creates a directory.
|
* Create a directory.
|
||||||
*
|
*
|
||||||
* Returns:
|
* Return:
|
||||||
* 1: OK
|
* 1: OK
|
||||||
* 0: error
|
* 0: error
|
||||||
*/
|
*/
|
||||||
@@ -198,9 +198,9 @@ dir_mkdir (const char *directory, int mode)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Creates a directory and makes parent directories as needed.
|
* Create a directory and make parent directories as needed.
|
||||||
*
|
*
|
||||||
* Returns:
|
* Return:
|
||||||
* 1: OK
|
* 1: OK
|
||||||
* 0: error
|
* 0: error
|
||||||
*/
|
*/
|
||||||
@@ -257,9 +257,9 @@ dir_mkdir_parents (const char *directory, int mode)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Unlinks a file or directory; callback called by function dir_rmtree().
|
* Unlink a file or directory; callback called by function dir_rmtree().
|
||||||
*
|
*
|
||||||
* Returns the return code of remove():
|
* Return the return code of remove():
|
||||||
* 0: OK
|
* 0: OK
|
||||||
* -1: error
|
* -1: error
|
||||||
*/
|
*/
|
||||||
@@ -277,9 +277,9 @@ dir_unlink_cb (const char *fpath, const struct stat *sb, int typeflag,
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Removes a directory and all files inside recursively.
|
* Remove a directory and all files inside recursively.
|
||||||
*
|
*
|
||||||
* Returns:
|
* Return:
|
||||||
* 1: OK
|
* 1: OK
|
||||||
* 0: error
|
* 0: error
|
||||||
*/
|
*/
|
||||||
@@ -298,12 +298,12 @@ dir_rmtree (const char *directory)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Uses one or four different paths for WeeChat home directories.
|
* Use one or four different paths for WeeChat home directories.
|
||||||
*
|
*
|
||||||
* If 4 paths are given, they must be separated by colons and given in this
|
* If 4 paths are given, they must be separated by colons and given in this
|
||||||
* order: config, data, cache, runtime.
|
* order: config, data, cache, runtime.
|
||||||
*
|
*
|
||||||
* Returns:
|
* Return:
|
||||||
* 1: OK
|
* 1: OK
|
||||||
* 0: error
|
* 0: error
|
||||||
*/
|
*/
|
||||||
@@ -374,9 +374,9 @@ end:
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Creates WeeChat temporary home directory (deleted on exit).
|
* Create WeeChat temporary home directory (deleted on exit).
|
||||||
*
|
*
|
||||||
* Returns:
|
* Return:
|
||||||
* 1: OK
|
* 1: OK
|
||||||
* 0: error
|
* 0: error
|
||||||
*/
|
*/
|
||||||
@@ -435,9 +435,9 @@ end:
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Finds XDG directories.
|
* Find XDG directories.
|
||||||
*
|
*
|
||||||
* Returns:
|
* Return:
|
||||||
* 1: OK
|
* 1: OK
|
||||||
* 0: error
|
* 0: error
|
||||||
*/
|
*/
|
||||||
@@ -592,10 +592,10 @@ error:
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Finds WeeChat home directories: it can be either XDG directories or the
|
* Find WeeChat home directories: it can be either XDG directories or the
|
||||||
* same directory for all files (like the legacy directory ~/.weechat).
|
* same directory for all files (like the legacy directory ~/.weechat).
|
||||||
*
|
*
|
||||||
* Returns:
|
* Return:
|
||||||
* 1: OK
|
* 1: OK
|
||||||
* 0: error
|
* 0: error
|
||||||
*/
|
*/
|
||||||
@@ -673,7 +673,7 @@ use_xdg:
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Removes trailing separators in path, which is modified in place
|
* Remove trailing separators in path, which is modified in place
|
||||||
* (each trailing separator is replaced by NUL char).
|
* (each trailing separator is replaced by NUL char).
|
||||||
*
|
*
|
||||||
* Example on Linux: "/home/xxx/" => "/home/xxx".
|
* Example on Linux: "/home/xxx/" => "/home/xxx".
|
||||||
@@ -696,9 +696,9 @@ dir_remove_trailing_separators (char *path)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Creates a home directory.
|
* Create a home directory.
|
||||||
*
|
*
|
||||||
* Returns:
|
* Return:
|
||||||
* 1: OK
|
* 1: OK
|
||||||
* 0: error
|
* 0: error
|
||||||
*/
|
*/
|
||||||
@@ -733,7 +733,7 @@ dir_create_home_dir (char *path)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Creates WeeChat home directories.
|
* Create WeeChat home directories.
|
||||||
*
|
*
|
||||||
* Any error in this function (or a sub function called) is fatal: WeeChat
|
* Any error in this function (or a sub function called) is fatal: WeeChat
|
||||||
* cannot run at all without the home directories.
|
* cannot run at all without the home directories.
|
||||||
@@ -770,7 +770,7 @@ error:
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Removes WeeChat home directories (called when -t / --temp-dir is given).
|
* Remove WeeChat home directories (called when -t / --temp-dir is given).
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void
|
void
|
||||||
@@ -788,7 +788,7 @@ dir_remove_home_dirs (void)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Returns a string with home directories separated by colons, in this order:
|
* Return a string with home directories separated by colons, in this order:
|
||||||
* config_dir, data_dir, state_dir, cache_dir, runtime_dir.
|
* config_dir, data_dir, state_dir, cache_dir, runtime_dir.
|
||||||
*
|
*
|
||||||
* Example of value returned:
|
* Example of value returned:
|
||||||
@@ -815,7 +815,7 @@ dir_get_string_home_dirs (void)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Finds files in a directory and executes a function on each file.
|
* Find files in a directory and execute a function on each file.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void
|
void
|
||||||
@@ -863,10 +863,10 @@ dir_exec_on_files (const char *directory, int recurse_subdirs,
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Searches for the full name of a WeeChat library with name and extension
|
* Search for the full name of a WeeChat library with name and extension
|
||||||
* (searches first in WeeChat user's dir, then WeeChat global lib directory).
|
* (searches first in WeeChat user's dir, then WeeChat global lib directory).
|
||||||
*
|
*
|
||||||
* Returns name of library found, NULL if not found.
|
* Return name of library found, NULL if not found.
|
||||||
*
|
*
|
||||||
* Note: result must be freed after use (if not NULL).
|
* Note: result must be freed after use (if not NULL).
|
||||||
*/
|
*/
|
||||||
@@ -933,7 +933,7 @@ dir_search_full_lib_name_ext (const char *filename, const char *extension,
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Searches for the full name of a WeeChat library with name.
|
* Search for the full name of a WeeChat library with name.
|
||||||
*
|
*
|
||||||
* All extensions listed in option "weechat.plugin.extension" are tested.
|
* All extensions listed in option "weechat.plugin.extension" are tested.
|
||||||
*
|
*
|
||||||
@@ -986,9 +986,9 @@ dir_search_full_lib_name (const char *filename, const char *plugins_dir)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Reads content of a file.
|
* Read content of a file.
|
||||||
*
|
*
|
||||||
* Returns an allocated buffer with the content of file, NULL if error.
|
* Return an allocated buffer with the content of file, NULL if error.
|
||||||
*
|
*
|
||||||
* Note: result must be freed after use.
|
* Note: result must be freed after use.
|
||||||
*/
|
*/
|
||||||
@@ -1042,9 +1042,9 @@ error:
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Copies a file to another location.
|
* Copy a file to another location.
|
||||||
*
|
*
|
||||||
* Returns:
|
* Return:
|
||||||
* 1: OK
|
* 1: OK
|
||||||
* 0: error
|
* 0: error
|
||||||
*/
|
*/
|
||||||
@@ -1097,13 +1097,13 @@ end:
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Compresses a file with gzip.
|
* Compress a file with gzip.
|
||||||
*
|
*
|
||||||
* Notes:
|
* Notes:
|
||||||
* - the output file must not exist
|
* - the output file must not exist
|
||||||
* - compression_level is an integer between 1 and 9
|
* - compression_level is an integer between 1 and 9
|
||||||
*
|
*
|
||||||
* Returns:
|
* Return:
|
||||||
* 1: OK
|
* 1: OK
|
||||||
* 0: error
|
* 0: error
|
||||||
*/
|
*/
|
||||||
@@ -1203,13 +1203,13 @@ end:
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Compresses a file with zstandard.
|
* Compress a file with zstandard.
|
||||||
*
|
*
|
||||||
* Notes:
|
* Notes:
|
||||||
* - the output file must not exist
|
* - the output file must not exist
|
||||||
* - compression_level is an integer between 1 and 19
|
* - compression_level is an integer between 1 and 19
|
||||||
*
|
*
|
||||||
* Returns:
|
* Return:
|
||||||
* 1: OK
|
* 1: OK
|
||||||
* 0: error
|
* 0: error
|
||||||
*/
|
*/
|
||||||
@@ -1223,14 +1223,9 @@ dir_file_compress_zstd (const char *from, const char *to,
|
|||||||
void *buffer_in, *buffer_out;
|
void *buffer_in, *buffer_out;
|
||||||
size_t buffer_in_size, buffer_out_size, num_read, remaining;
|
size_t buffer_in_size, buffer_out_size, num_read, remaining;
|
||||||
int rc;
|
int rc;
|
||||||
#if ZSTD_VERSION_NUMBER >= 10400 /* zstd ≥ 1.4.0 */
|
|
||||||
ZSTD_CCtx *cctx = NULL;
|
ZSTD_CCtx *cctx = NULL;
|
||||||
ZSTD_EndDirective mode;
|
ZSTD_EndDirective mode;
|
||||||
int finished, last_chunk;
|
int finished, last_chunk;
|
||||||
#else /* zstd < 1.4.0 */
|
|
||||||
ZSTD_CStream *cstream = NULL;
|
|
||||||
size_t result, to_read;
|
|
||||||
#endif
|
|
||||||
ZSTD_inBuffer input;
|
ZSTD_inBuffer input;
|
||||||
ZSTD_outBuffer output;
|
ZSTD_outBuffer output;
|
||||||
|
|
||||||
@@ -1259,7 +1254,6 @@ dir_file_compress_zstd (const char *from, const char *to,
|
|||||||
if (!dest)
|
if (!dest)
|
||||||
goto end;
|
goto end;
|
||||||
|
|
||||||
#if ZSTD_VERSION_NUMBER >= 10400 /* zstd ≥ 1.4.0 */
|
|
||||||
cctx = ZSTD_createCCtx ();
|
cctx = ZSTD_createCCtx ();
|
||||||
if (!cctx)
|
if (!cctx)
|
||||||
goto error;
|
goto error;
|
||||||
@@ -1296,77 +1290,21 @@ dir_file_compress_zstd (const char *from, const char *to,
|
|||||||
if (last_chunk)
|
if (last_chunk)
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
#else /* zstd < 1.4.0 */
|
|
||||||
cstream = ZSTD_createCStream ();
|
|
||||||
if (!cstream)
|
|
||||||
goto error;
|
|
||||||
result = ZSTD_initCStream (cstream, compression_level);
|
|
||||||
if (ZSTD_isError (result))
|
|
||||||
goto error;
|
|
||||||
to_read = buffer_in_size;
|
|
||||||
while ((num_read = fread (buffer_in, 1, buffer_in_size, source)))
|
|
||||||
{
|
|
||||||
input.src = buffer_in;
|
|
||||||
input.size = num_read;
|
|
||||||
input.pos = 0;
|
|
||||||
while (input.pos < input.size)
|
|
||||||
{
|
|
||||||
output.dst = buffer_out;
|
|
||||||
output.size = buffer_out_size;
|
|
||||||
output.pos = 0;
|
|
||||||
to_read = ZSTD_compressStream (cstream, &output , &input);
|
|
||||||
if (ZSTD_isError (to_read))
|
|
||||||
goto error;
|
|
||||||
if (to_read > buffer_in_size)
|
|
||||||
to_read = buffer_in_size;
|
|
||||||
if ((fwrite (buffer_out, 1, output.pos, dest) != output.pos)
|
|
||||||
|| ferror (dest))
|
|
||||||
{
|
|
||||||
goto error;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
output.dst = buffer_out;
|
|
||||||
output.size = buffer_out_size;
|
|
||||||
output.pos = 0;
|
|
||||||
remaining = ZSTD_endStream (cstream, &output);
|
|
||||||
if (remaining)
|
|
||||||
goto error;
|
|
||||||
if ((fwrite (buffer_out, 1, output.pos, dest) != output.pos)
|
|
||||||
|| ferror (dest))
|
|
||||||
{
|
|
||||||
goto error;
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
rc = 1;
|
rc = 1;
|
||||||
goto end;
|
goto end;
|
||||||
|
|
||||||
error:
|
error:
|
||||||
#if ZSTD_VERSION_NUMBER >= 10400 /* zstd ≥ 1.4.0 */
|
|
||||||
if (cctx)
|
if (cctx)
|
||||||
{
|
{
|
||||||
ZSTD_freeCCtx (cctx);
|
ZSTD_freeCCtx (cctx);
|
||||||
cctx = NULL;
|
cctx = NULL;
|
||||||
}
|
}
|
||||||
#else /* zstd < 1.4.0 */
|
|
||||||
if (cstream)
|
|
||||||
{
|
|
||||||
ZSTD_freeCStream (cstream);
|
|
||||||
cstream = NULL;
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
unlink (to);
|
unlink (to);
|
||||||
|
|
||||||
end:
|
end:
|
||||||
#if ZSTD_VERSION_NUMBER >= 10400 /* zstd ≥ 1.4.0 */
|
|
||||||
if (cctx)
|
if (cctx)
|
||||||
ZSTD_freeCCtx (cctx);
|
ZSTD_freeCCtx (cctx);
|
||||||
#else /* zstd < 1.4.0 */
|
|
||||||
if (cstream)
|
|
||||||
ZSTD_freeCStream (cstream);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
free (buffer_in);
|
free (buffer_in);
|
||||||
free (buffer_out);
|
free (buffer_out);
|
||||||
@@ -1387,7 +1325,7 @@ end:
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Compresses a file with gzip or zstandard.
|
* Compress a file with gzip or zstandard.
|
||||||
*
|
*
|
||||||
* The output file must not exist.
|
* The output file must not exist.
|
||||||
*
|
*
|
||||||
@@ -1398,7 +1336,7 @@ end:
|
|||||||
* Parameter "compression_level" is the compression level as percentage:
|
* Parameter "compression_level" is the compression level as percentage:
|
||||||
* from 1 (fast, low compression) to 100 (slow, best compression).
|
* from 1 (fast, low compression) to 100 (slow, best compression).
|
||||||
*
|
*
|
||||||
* Returns:
|
* Return:
|
||||||
* 1: OK
|
* 1: OK
|
||||||
* 0: error
|
* 0: error
|
||||||
*/
|
*/
|
||||||
@@ -1433,14 +1371,14 @@ dir_file_compress (const char *filename_input,
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Compares the content of two files (the attributes of the files like the
|
* Compare the content of two files (the attributes of the files like the
|
||||||
* permissions or timestamp are ignored).
|
* permissions or timestamp are ignored).
|
||||||
*
|
*
|
||||||
* Comparison is done like this:
|
* Comparison is done like this:
|
||||||
* 1. if sizes are different, return 1 (different content)
|
* 1. if sizes are different, return 1 (different content)
|
||||||
* 2. if sizes are the same, read both files until a difference is found
|
* 2. if sizes are the same, read both files until a difference is found
|
||||||
*
|
*
|
||||||
* Returns:
|
* Return:
|
||||||
* 0: both files exist and their content is exactly the same
|
* 0: both files exist and their content is exactly the same
|
||||||
* 1: content is different
|
* 1: content is different
|
||||||
* 2: other error (file not found, read error)
|
* 2: other error (file not found, read error)
|
||||||
|
|||||||
+52
-52
@@ -61,7 +61,7 @@ char *string_escaped[32];
|
|||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Escapes a string to display in a table: replace "|" by "\|".
|
* Escape a string to display in a table: replace "|" by "\|".
|
||||||
*/
|
*/
|
||||||
|
|
||||||
char *
|
char *
|
||||||
@@ -74,7 +74,7 @@ doc_gen_escape_table (const char *message)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Escapes a string to be used as anchor link: replace ",", "@" and "*" by "-".
|
* Escape a string to be used as anchor link: replace ",", "@" and "*" by "-".
|
||||||
*/
|
*/
|
||||||
|
|
||||||
char *
|
char *
|
||||||
@@ -94,13 +94,13 @@ doc_gen_escape_anchor_link (const char *message)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Opens a file for write using:
|
* Open a file for write using:
|
||||||
* - path
|
* - path
|
||||||
* - doc: "api" or "user"
|
* - doc: "api" or "user"
|
||||||
* - name
|
* - name
|
||||||
* - language (eg: "fr")
|
* - language (eg: "fr")
|
||||||
*
|
*
|
||||||
* Returns the file opened, NULL if error.
|
* Return the file opened, NULL if error.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
FILE *
|
FILE *
|
||||||
@@ -135,13 +135,13 @@ doc_gen_open_file (const char *path, const char *doc, const char *name,
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Closes the file and renames it without ".temp" suffix, if the target name
|
* Close the file and rename it without ".temp" suffix, if the target name
|
||||||
* does not exist or if it exists with a different (obsolete) content.
|
* does not exist or if it exists with a different (obsolete) content.
|
||||||
*
|
*
|
||||||
* If the target name exists with same content it's kept as-is (so the
|
* If the target name exists with same content, keep it as-is (so the
|
||||||
* timestamp does not change) and the temporary file is just deleted.
|
* timestamp does not change) and just delete the temporary file.
|
||||||
*
|
*
|
||||||
* Returns:
|
* Return:
|
||||||
* 1: target file has been updated
|
* 1: target file has been updated
|
||||||
* 0: target file unchanged
|
* 0: target file unchanged
|
||||||
* -1: error
|
* -1: error
|
||||||
@@ -183,7 +183,7 @@ doc_gen_close_file (const char *path, const char *doc, const char *name,
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Checks if a command must be documented or not: all commands are documented
|
* Check if a command must be documented or not: all commands are documented
|
||||||
* except the default aliases (that create commands).
|
* except the default aliases (that create commands).
|
||||||
*/
|
*/
|
||||||
|
|
||||||
@@ -195,7 +195,7 @@ doc_gen_check_command (const char *plugin, const char *command)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Compares two hooks "command" to sort by plugin / command.
|
* Compare two hooks "command" to sort by plugin / command.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
int
|
int
|
||||||
@@ -221,9 +221,9 @@ doc_gen_hook_command_cmp_cb (void *data, struct t_arraylist *arraylist,
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Generates files with commands.
|
* Generate files with commands.
|
||||||
*
|
*
|
||||||
* Returns:
|
* Return:
|
||||||
* 1: OK, target file updated
|
* 1: OK, target file updated
|
||||||
* 0: OK, target file unchanged
|
* 0: OK, target file unchanged
|
||||||
* -1: error
|
* -1: error
|
||||||
@@ -366,7 +366,7 @@ doc_gen_user_commands (const char *path, const char *lang)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Checks if an option must be documented or not.
|
* Check if an option must be documented or not.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
int
|
int
|
||||||
@@ -395,7 +395,7 @@ doc_gen_check_option (struct t_config_option *option)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Compares two options to sort by plugin / command.
|
* Compare two options to sort by plugin / command.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
int
|
int
|
||||||
@@ -425,9 +425,9 @@ doc_gen_option_cmp_cb (void *data, struct t_arraylist *arraylist,
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Generates files with commands.
|
* Generate files with commands.
|
||||||
*
|
*
|
||||||
* Returns:
|
* Return:
|
||||||
* 1: OK, target file updated
|
* 1: OK, target file updated
|
||||||
* 0: OK, target file unchanged
|
* 0: OK, target file unchanged
|
||||||
* -1: error
|
* -1: error
|
||||||
@@ -588,9 +588,9 @@ doc_gen_user_options (const char *path, const char *lang)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Generates files with default aliases.
|
* Generate files with default aliases.
|
||||||
*
|
*
|
||||||
* Returns:
|
* Return:
|
||||||
* 1: OK, target file updated
|
* 1: OK, target file updated
|
||||||
* 0: OK, target file unchanged
|
* 0: OK, target file unchanged
|
||||||
* -1: error
|
* -1: error
|
||||||
@@ -638,9 +638,9 @@ doc_gen_user_default_aliases (const char *path, const char *lang)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Generates files with IRC colors.
|
* Generate files with IRC colors.
|
||||||
*
|
*
|
||||||
* Returns:
|
* Return:
|
||||||
* 1: OK, target file updated
|
* 1: OK, target file updated
|
||||||
* 0: OK, target file unchanged
|
* 0: OK, target file unchanged
|
||||||
* -1: error
|
* -1: error
|
||||||
@@ -684,7 +684,7 @@ doc_gen_user_irc_colors (const char *path, const char *lang)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Compares two hooks "info" to sort by plugin / info.
|
* Compare two hooks "info" to sort by plugin / info.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
int
|
int
|
||||||
@@ -710,9 +710,9 @@ doc_gen_hook_info_cmp_cb (void *data, struct t_arraylist *arraylist,
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Generates files with infos.
|
* Generate files with infos.
|
||||||
*
|
*
|
||||||
* Returns:
|
* Return:
|
||||||
* 1: OK, target file updated
|
* 1: OK, target file updated
|
||||||
* 0: OK, target file unchanged
|
* 0: OK, target file unchanged
|
||||||
* -1: error
|
* -1: error
|
||||||
@@ -773,7 +773,7 @@ doc_gen_api_infos (const char *path, const char *lang)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Compares two hooks "info_hashtable" to sort by plugin / info.
|
* Compare two hooks "info_hashtable" to sort by plugin / info.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
int
|
int
|
||||||
@@ -799,9 +799,9 @@ doc_gen_hook_info_hashtable_cmp_cb (void *data, struct t_arraylist *arraylist,
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Generates files with infos_hashtable.
|
* Generate files with infos_hashtable.
|
||||||
*
|
*
|
||||||
* Returns:
|
* Return:
|
||||||
* 1: OK, target file updated
|
* 1: OK, target file updated
|
||||||
* 0: OK, target file unchanged
|
* 0: OK, target file unchanged
|
||||||
* -1: error
|
* -1: error
|
||||||
@@ -864,7 +864,7 @@ doc_gen_api_infos_hashtable (const char *path, const char *lang)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Compares two hooks "infolist" to sort by plugin / infolist.
|
* Compare two hooks "infolist" to sort by plugin / infolist.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
int
|
int
|
||||||
@@ -890,9 +890,9 @@ doc_gen_hook_infolist_cmp_cb (void *data, struct t_arraylist *arraylist,
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Generates files with infolists.
|
* Generate files with infolists.
|
||||||
*
|
*
|
||||||
* Returns:
|
* Return:
|
||||||
* 1: OK, target file updated
|
* 1: OK, target file updated
|
||||||
* 0: OK, target file unchanged
|
* 0: OK, target file unchanged
|
||||||
* -1: error
|
* -1: error
|
||||||
@@ -955,7 +955,7 @@ doc_gen_api_infolists (const char *path, const char *lang)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Compares two hooks "hdata" to sort by plugin / hdata.
|
* Compare two hooks "hdata" to sort by plugin / hdata.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
int
|
int
|
||||||
@@ -981,7 +981,7 @@ doc_gen_hook_hdata_cmp_cb (void *data, struct t_arraylist *arraylist,
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Compares two hooks lists to sort by name (and lists beginning with "last_"
|
* Compare two hooks lists to sort by name (and lists beginning with "last_"
|
||||||
* at the end).
|
* at the end).
|
||||||
*/
|
*/
|
||||||
|
|
||||||
@@ -1009,7 +1009,7 @@ doc_gen_hdata_list_cmp_cb (void *data, struct t_arraylist *arraylist,
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Compares two hooks hdata keys to sort by offset.
|
* Compare two hooks hdata keys to sort by offset.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
int
|
int
|
||||||
@@ -1030,7 +1030,7 @@ doc_gen_hdata_key_cmp_cb (void *data, struct t_arraylist *arraylist,
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Generates content of a hdata.
|
* Generate content of a hdata.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void
|
void
|
||||||
@@ -1172,9 +1172,9 @@ doc_gen_api_hdata_content (FILE *file, struct t_hdata *hdata)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Generates files with hdata.
|
* Generate files with hdata.
|
||||||
*
|
*
|
||||||
* Returns:
|
* Return:
|
||||||
* 1: OK, target file updated
|
* 1: OK, target file updated
|
||||||
* 0: OK, target file unchanged
|
* 0: OK, target file unchanged
|
||||||
* -1: error
|
* -1: error
|
||||||
@@ -1250,7 +1250,7 @@ doc_gen_api_hdata (const char *path, const char *lang)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Compares two hooks "completion" to sort by plugin / completion.
|
* Compare two hooks "completion" to sort by plugin / completion.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
int
|
int
|
||||||
@@ -1276,9 +1276,9 @@ doc_gen_hook_completion_cmp_cb (void *data, struct t_arraylist *arraylist,
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Generates files with completions.
|
* Generate files with completions.
|
||||||
*
|
*
|
||||||
* Returns:
|
* Return:
|
||||||
* 1: OK, target file updated
|
* 1: OK, target file updated
|
||||||
* 0: OK, target file unchanged
|
* 0: OK, target file unchanged
|
||||||
* -1: error
|
* -1: error
|
||||||
@@ -1337,9 +1337,9 @@ doc_gen_api_completions (const char *path, const char *lang)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Generates files with URL options.
|
* Generate files with URL options.
|
||||||
*
|
*
|
||||||
* Returns:
|
* Return:
|
||||||
* 1: OK, target file updated
|
* 1: OK, target file updated
|
||||||
* 0: OK, target file unchanged
|
* 0: OK, target file unchanged
|
||||||
* -1: error
|
* -1: error
|
||||||
@@ -1397,7 +1397,7 @@ doc_gen_api_url_options (const char *path, const char *lang)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Compares two plugins to sort by priority (descending).
|
* Compare two plugins to sort by priority (descending).
|
||||||
*/
|
*/
|
||||||
|
|
||||||
int
|
int
|
||||||
@@ -1421,9 +1421,9 @@ doc_gen_plugin_cmp_cb (void *data, struct t_arraylist *arraylist,
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Generates files with plugins priority.
|
* Generate files with plugins priority.
|
||||||
*
|
*
|
||||||
* Returns:
|
* Return:
|
||||||
* 1: OK, target file updated
|
* 1: OK, target file updated
|
||||||
* 0: OK, target file unchanged
|
* 0: OK, target file unchanged
|
||||||
* -1: error
|
* -1: error
|
||||||
@@ -1483,7 +1483,7 @@ doc_gen_api_plugins_priority (const char *path, const char *lang)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Compares two configurations to sort by priority (descending).
|
* Compare two configurations to sort by priority (descending).
|
||||||
*/
|
*/
|
||||||
|
|
||||||
int
|
int
|
||||||
@@ -1507,9 +1507,9 @@ doc_gen_config_cmp_cb (void *data, struct t_arraylist *arraylist,
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Generates files with config priority.
|
* Generate files with config priority.
|
||||||
*
|
*
|
||||||
* Returns:
|
* Return:
|
||||||
* 1: OK, target file updated
|
* 1: OK, target file updated
|
||||||
* 0: OK, target file unchanged
|
* 0: OK, target file unchanged
|
||||||
* -1: error
|
* -1: error
|
||||||
@@ -1569,9 +1569,9 @@ doc_gen_api_config_priority (const char *path, const char *lang)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Generates files with scripting API functions.
|
* Generate files with scripting API functions.
|
||||||
*
|
*
|
||||||
* Returns:
|
* Return:
|
||||||
* 1: OK, target file updated
|
* 1: OK, target file updated
|
||||||
* 0: OK, target file unchanged
|
* 0: OK, target file unchanged
|
||||||
* -1: error
|
* -1: error
|
||||||
@@ -1602,9 +1602,9 @@ doc_gen_scripting_functions (const char *path, const char *lang)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Generates files with scripting API constants.
|
* Generate files with scripting API constants.
|
||||||
*
|
*
|
||||||
* Returns:
|
* Return:
|
||||||
* 1: OK, target file updated
|
* 1: OK, target file updated
|
||||||
* 0: OK, target file unchanged
|
* 0: OK, target file unchanged
|
||||||
* -1: error
|
* -1: error
|
||||||
@@ -1664,9 +1664,9 @@ doc_gen_scripting_constants (const char *path, const char *lang)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Generates WeeChat files used to build documentation.
|
* Generate WeeChat files used to build documentation.
|
||||||
*
|
*
|
||||||
* Returns:
|
* Return:
|
||||||
* 1: OK
|
* 1: OK
|
||||||
* 0: error
|
* 0: error
|
||||||
*/
|
*/
|
||||||
|
|||||||
+89
-100
@@ -28,6 +28,7 @@
|
|||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
#include <stdarg.h>
|
#include <stdarg.h>
|
||||||
|
#include <errno.h>
|
||||||
#include <regex.h>
|
#include <regex.h>
|
||||||
#include <time.h>
|
#include <time.h>
|
||||||
#include <sys/time.h>
|
#include <sys/time.h>
|
||||||
@@ -96,7 +97,7 @@ char *eval_expression_condition (const char *expr,
|
|||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Adds a debug message in the debug output.
|
* Add a debug message in the debug output.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void
|
void
|
||||||
@@ -142,7 +143,7 @@ eval_debug_message (struct t_eval_context *eval_context, int debug_id,
|
|||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Adds a debug message in the debug output, with variable arguments.
|
* Add a debug message in the debug output, with variable arguments.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void
|
void
|
||||||
@@ -159,10 +160,10 @@ eval_debug_message_vargs (struct t_eval_context *eval_context, int debug_id,
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Checks if a value is true: a value is true if string is non-NULL, non-empty
|
* Check if a value is true: a value is true if string is non-NULL, non-empty
|
||||||
* and different from "0".
|
* and different from "0".
|
||||||
*
|
*
|
||||||
* Returns:
|
* Return:
|
||||||
* 1: value is true
|
* 1: value is true
|
||||||
* 0: value is false
|
* 0: value is false
|
||||||
*/
|
*/
|
||||||
@@ -174,7 +175,7 @@ eval_is_true (const char *value)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Searches a string in another at same level (skip sub-expressions between
|
* Search a string in another at same level (skip sub-expressions between
|
||||||
* prefix/suffix).
|
* prefix/suffix).
|
||||||
*
|
*
|
||||||
* If escape is 1, the prefix can be escaped with '\' (and then is ignored).
|
* If escape is 1, the prefix can be escaped with '\' (and then is ignored).
|
||||||
@@ -184,7 +185,7 @@ eval_is_true (const char *value)
|
|||||||
* will return a pointer on "|| z" (because the first "||" is
|
* will return a pointer on "|| z" (because the first "||" is
|
||||||
* in a sub-expression, which is skipped).
|
* in a sub-expression, which is skipped).
|
||||||
*
|
*
|
||||||
* Returns pointer to string found, or NULL if not found.
|
* Return pointer to string found, or NULL if not found.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
const char *
|
const char *
|
||||||
@@ -267,7 +268,7 @@ end:
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Evaluates a condition and returns boolean result:
|
* Evaluate a condition and return boolean result:
|
||||||
* "0" if false
|
* "0" if false
|
||||||
* "1" if true
|
* "1" if true
|
||||||
*
|
*
|
||||||
@@ -287,7 +288,7 @@ eval_string_eval_cond (const char *text, struct t_eval_context *eval_context)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Adds range of chars.
|
* Add range of chars.
|
||||||
*
|
*
|
||||||
* Note: result must be freed after use.
|
* Note: result must be freed after use.
|
||||||
*/
|
*/
|
||||||
@@ -314,8 +315,6 @@ eval_string_range_chars (const char *range)
|
|||||||
char1 = utf8_char_int (range);
|
char1 = utf8_char_int (range);
|
||||||
|
|
||||||
/* next char must be '-' */
|
/* next char must be '-' */
|
||||||
if (!range[0])
|
|
||||||
goto end;
|
|
||||||
ptr_char = utf8_next_char (range);
|
ptr_char = utf8_next_char (range);
|
||||||
if (!ptr_char || !ptr_char[0] || (ptr_char[0] != '-'))
|
if (!ptr_char || !ptr_char[0] || (ptr_char[0] != '-'))
|
||||||
goto end;
|
goto end;
|
||||||
@@ -350,7 +349,7 @@ end:
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Hides chars in a string.
|
* Hide chars in a string.
|
||||||
*
|
*
|
||||||
* Note: result must be freed after use.
|
* Note: result must be freed after use.
|
||||||
*/
|
*/
|
||||||
@@ -391,7 +390,7 @@ eval_string_hide (const char *text)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Cuts string.
|
* Cut string.
|
||||||
*
|
*
|
||||||
* Note: result must be freed after use.
|
* Note: result must be freed after use.
|
||||||
*/
|
*/
|
||||||
@@ -400,9 +399,8 @@ char *
|
|||||||
eval_string_cut (const char *text, int screen)
|
eval_string_cut (const char *text, int screen)
|
||||||
{
|
{
|
||||||
const char *pos, *pos2;
|
const char *pos, *pos2;
|
||||||
char *tmp, *error, *value;
|
char *tmp, *value;
|
||||||
int count_suffix;
|
int count_suffix, number;
|
||||||
long number;
|
|
||||||
|
|
||||||
count_suffix = 0;
|
count_suffix = 0;
|
||||||
if (text[0] == '+')
|
if (text[0] == '+')
|
||||||
@@ -423,9 +421,7 @@ eval_string_cut (const char *text, int screen)
|
|||||||
if (!tmp)
|
if (!tmp)
|
||||||
return strdup ("");
|
return strdup ("");
|
||||||
|
|
||||||
error = NULL;
|
if (!util_parse_int (tmp, 10, &number) || (number < 0))
|
||||||
number = strtol (tmp, &error, 10);
|
|
||||||
if (!error || error[0] || (number < 0))
|
|
||||||
{
|
{
|
||||||
free (tmp);
|
free (tmp);
|
||||||
return strdup ("");
|
return strdup ("");
|
||||||
@@ -444,7 +440,7 @@ eval_string_cut (const char *text, int screen)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Repeats string.
|
* Repeat string.
|
||||||
*
|
*
|
||||||
* Note: result must be freed after use.
|
* Note: result must be freed after use.
|
||||||
*/
|
*/
|
||||||
@@ -453,8 +449,8 @@ char *
|
|||||||
eval_string_repeat (const char *text)
|
eval_string_repeat (const char *text)
|
||||||
{
|
{
|
||||||
const char *pos;
|
const char *pos;
|
||||||
char *tmp, *error;
|
char *tmp;
|
||||||
long number;
|
int number;
|
||||||
|
|
||||||
pos = strchr (text, ',');
|
pos = strchr (text, ',');
|
||||||
if (!pos)
|
if (!pos)
|
||||||
@@ -464,9 +460,7 @@ eval_string_repeat (const char *text)
|
|||||||
if (!tmp)
|
if (!tmp)
|
||||||
return strdup ("");
|
return strdup ("");
|
||||||
|
|
||||||
error = NULL;
|
if (!util_parse_int (tmp, 10, &number) || (number < 0))
|
||||||
number = strtol (tmp, &error, 10);
|
|
||||||
if (!error || error[0] || (number < 0))
|
|
||||||
{
|
{
|
||||||
free (tmp);
|
free (tmp);
|
||||||
return strdup ("");
|
return strdup ("");
|
||||||
@@ -477,12 +471,12 @@ eval_string_repeat (const char *text)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Splits string.
|
* Split string.
|
||||||
*
|
*
|
||||||
* Format: number,separators,flags,string
|
* Format: number,separators,flags,string
|
||||||
*
|
*
|
||||||
* If number == "count", returns the number of items after split.
|
* If number == "count", return the number of items after split.
|
||||||
* If number == "random", returns a random item.
|
* If number == "random", return a random item.
|
||||||
* If number > 0, return this index (empty string if not enough items).
|
* If number > 0, return this index (empty string if not enough items).
|
||||||
* If number < 0, return this index starting from the end (-1 = last item,
|
* If number < 0, return this index starting from the end (-1 = last item,
|
||||||
* -2 = penultimate item, etc.).
|
* -2 = penultimate item, etc.).
|
||||||
@@ -514,10 +508,11 @@ eval_string_repeat (const char *text)
|
|||||||
char *
|
char *
|
||||||
eval_string_split (const char *text)
|
eval_string_split (const char *text)
|
||||||
{
|
{
|
||||||
char *pos, *pos2, *pos3, *str_number, *separators, **items, *value, *error;
|
const char *pos, *pos2, *pos3;
|
||||||
|
char *str_number, *separators, **items, *value;
|
||||||
char str_value[32], *str_flags, **list_flags, *strip_items, **ptr_flag;
|
char str_value[32], *str_flags, **list_flags, *strip_items, **ptr_flag;
|
||||||
int num_items, count_items, random_item, flags;
|
int num_items, count_items, random_item, flags, max_items;
|
||||||
long number, max_items;
|
long number;
|
||||||
|
|
||||||
str_number = NULL;
|
str_number = NULL;
|
||||||
separators = NULL;
|
separators = NULL;
|
||||||
@@ -550,9 +545,7 @@ eval_string_split (const char *text)
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
error = NULL;
|
if (!util_parse_long (str_number, 10, &number) || (number == 0))
|
||||||
number = strtol (str_number, &error, 10);
|
|
||||||
if (!error || error[0] || (number == 0))
|
|
||||||
goto end;
|
goto end;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -590,9 +583,8 @@ eval_string_split (const char *text)
|
|||||||
}
|
}
|
||||||
else if (strncmp (*ptr_flag, "max_items=", 10) == 0)
|
else if (strncmp (*ptr_flag, "max_items=", 10) == 0)
|
||||||
{
|
{
|
||||||
error = NULL;
|
if (!util_parse_int (*ptr_flag + 10, 10, &max_items)
|
||||||
max_items = strtol (*ptr_flag + 10, &error, 10);
|
|| (max_items < 0))
|
||||||
if (!error || error[0] || (max_items < 0))
|
|
||||||
goto end;
|
goto end;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -642,12 +634,12 @@ end:
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Splits shell arguments.
|
* Split shell arguments.
|
||||||
*
|
*
|
||||||
* Format: number,string
|
* Format: number,string
|
||||||
*
|
*
|
||||||
* If number == "count", returns the number of arguments.
|
* If number == "count", return the number of arguments.
|
||||||
* If number == "random", returns a random argument.
|
* If number == "random", return a random argument.
|
||||||
* If number > 0, return this index (empty string if not enough arguments).
|
* If number > 0, return this index (empty string if not enough arguments).
|
||||||
* If number < 0, return this index starting from the end (-1 = last argument,
|
* If number < 0, return this index starting from the end (-1 = last argument,
|
||||||
* -2 = penultimate argument, etc.).
|
* -2 = penultimate argument, etc.).
|
||||||
@@ -664,7 +656,8 @@ end:
|
|||||||
char *
|
char *
|
||||||
eval_string_split_shell (const char *text)
|
eval_string_split_shell (const char *text)
|
||||||
{
|
{
|
||||||
char *pos, *str_number, **items, *value, *error, str_value[32];
|
const char *pos;
|
||||||
|
char *str_number, **items, *value, str_value[32];
|
||||||
int num_items, count_items, random_item;
|
int num_items, count_items, random_item;
|
||||||
long number;
|
long number;
|
||||||
|
|
||||||
@@ -693,9 +686,7 @@ eval_string_split_shell (const char *text)
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
error = NULL;
|
if (!util_parse_long (str_number, 10, &number) || (number == 0))
|
||||||
number = strtol (str_number, &error, 10);
|
|
||||||
if (!error || error[0] || (number == 0))
|
|
||||||
goto end;
|
goto end;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -738,7 +729,7 @@ end:
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Returns a regex group captured.
|
* Return a regex group captured.
|
||||||
*
|
*
|
||||||
* Note: result must be freed after use.
|
* Note: result must be freed after use.
|
||||||
*/
|
*/
|
||||||
@@ -746,11 +737,11 @@ end:
|
|||||||
char *
|
char *
|
||||||
eval_string_regex_group (const char *text, struct t_eval_context *eval_context)
|
eval_string_regex_group (const char *text, struct t_eval_context *eval_context)
|
||||||
{
|
{
|
||||||
char str_value[64], *error;
|
char str_value[64];
|
||||||
long number;
|
long number;
|
||||||
|
|
||||||
if (!eval_context->regex || !eval_context->regex->result)
|
if (!eval_context->regex || !eval_context->regex->result)
|
||||||
return strdup ("");
|
goto end;
|
||||||
|
|
||||||
if (strcmp (text, "#") == 0)
|
if (strcmp (text, "#") == 0)
|
||||||
{
|
{
|
||||||
@@ -772,10 +763,8 @@ eval_string_regex_group (const char *text, struct t_eval_context *eval_context)
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
error = NULL;
|
if (!util_parse_long (text, 10, &number))
|
||||||
number = strtol (text, &error, 10);
|
goto end;
|
||||||
if (!error || error[0])
|
|
||||||
number = -1;
|
|
||||||
}
|
}
|
||||||
if ((number >= 0) && (number <= eval_context->regex->last_match))
|
if ((number >= 0) && (number <= eval_context->regex->last_match))
|
||||||
{
|
{
|
||||||
@@ -786,11 +775,12 @@ eval_string_regex_group (const char *text, struct t_eval_context *eval_context)
|
|||||||
eval_context->regex->match[number].rm_so);
|
eval_context->regex->match[number].rm_so);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
end:
|
||||||
return strdup ("");
|
return strdup ("");
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Returns a string with color code.
|
* Return a string with color code.
|
||||||
*
|
*
|
||||||
* Note: result must be freed after use.
|
* Note: result must be freed after use.
|
||||||
*/
|
*/
|
||||||
@@ -809,7 +799,7 @@ eval_string_color (const char *text)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Returns a string modified by a modifier.
|
* Return a string modified by a modifier.
|
||||||
*
|
*
|
||||||
* Note: result must be freed after use.
|
* Note: result must be freed after use.
|
||||||
*/
|
*/
|
||||||
@@ -844,7 +834,7 @@ eval_string_modifier (const char *text)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Returns an info.
|
* Return an info.
|
||||||
*
|
*
|
||||||
* Note: result must be freed after use.
|
* Note: result must be freed after use.
|
||||||
*/
|
*/
|
||||||
@@ -878,7 +868,7 @@ eval_string_info (const char *text)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Encodes a string in base 16, 32, or 64.
|
* Encode a string in base 16, 32, or 64.
|
||||||
*
|
*
|
||||||
* Note: result must be freed after use.
|
* Note: result must be freed after use.
|
||||||
*/
|
*/
|
||||||
@@ -921,7 +911,7 @@ end:
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Decodes a string encoded in base 16, 32, or 64.
|
* Decode a string encoded in base 16, 32, or 64.
|
||||||
*
|
*
|
||||||
* Note: result must be freed after use.
|
* Note: result must be freed after use.
|
||||||
*/
|
*/
|
||||||
@@ -962,7 +952,7 @@ end:
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Returns a date.
|
* Return a date.
|
||||||
*
|
*
|
||||||
* Note: result must be freed after use.
|
* Note: result must be freed after use.
|
||||||
*/
|
*/
|
||||||
@@ -982,7 +972,7 @@ eval_string_date (const char *text)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Evaluates a condition and returns evaluated if/else clause.
|
* Evaluate a condition and return evaluated if/else clause.
|
||||||
*
|
*
|
||||||
* Note: result must be freed after use.
|
* Note: result must be freed after use.
|
||||||
*/
|
*/
|
||||||
@@ -1050,7 +1040,7 @@ eval_string_if (const char *text, struct t_eval_context *eval_context)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Returns a random integer number.
|
* Return a random integer number.
|
||||||
*
|
*
|
||||||
* Note: result must be freed after use.
|
* Note: result must be freed after use.
|
||||||
*/
|
*/
|
||||||
@@ -1058,7 +1048,8 @@ eval_string_if (const char *text, struct t_eval_context *eval_context)
|
|||||||
char *
|
char *
|
||||||
eval_string_random (const char *text)
|
eval_string_random (const char *text)
|
||||||
{
|
{
|
||||||
char *pos, *error, *tmp, result[128];
|
const char *pos;
|
||||||
|
char *tmp, result[128];
|
||||||
long long min_number, max_number;
|
long long min_number, max_number;
|
||||||
|
|
||||||
if (!text || !text[0])
|
if (!text || !text[0])
|
||||||
@@ -1071,18 +1062,14 @@ eval_string_random (const char *text)
|
|||||||
tmp = string_strndup (text, pos - text);
|
tmp = string_strndup (text, pos - text);
|
||||||
if (!tmp)
|
if (!tmp)
|
||||||
goto error;
|
goto error;
|
||||||
error = NULL;
|
if (!util_parse_longlong (tmp, 10, &min_number))
|
||||||
min_number = strtoll (tmp, &error, 10);
|
|
||||||
if (!error || error[0])
|
|
||||||
{
|
{
|
||||||
free (tmp);
|
free (tmp);
|
||||||
goto error;
|
goto error;
|
||||||
}
|
}
|
||||||
free (tmp);
|
free (tmp);
|
||||||
|
|
||||||
error = NULL;
|
if (!util_parse_longlong (pos + 1, 10, &max_number))
|
||||||
max_number = strtoll (pos + 1, &error, 10);
|
|
||||||
if (!error || error[0])
|
|
||||||
goto error;
|
goto error;
|
||||||
|
|
||||||
if (min_number > max_number)
|
if (min_number > max_number)
|
||||||
@@ -1103,7 +1090,7 @@ error:
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Translates text.
|
* Translate text.
|
||||||
*
|
*
|
||||||
* Note: result must be freed after use.
|
* Note: result must be freed after use.
|
||||||
*/
|
*/
|
||||||
@@ -1122,13 +1109,14 @@ eval_string_translate (const char *text)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Defines a variable.
|
* Define a variable.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void
|
void
|
||||||
eval_string_define (const char *text, struct t_eval_context *eval_context)
|
eval_string_define (const char *text, struct t_eval_context *eval_context)
|
||||||
{
|
{
|
||||||
char *pos, *name;
|
const char *pos;
|
||||||
|
char *name;
|
||||||
|
|
||||||
pos = strchr (text, ',');
|
pos = strchr (text, ',');
|
||||||
if (!pos)
|
if (!pos)
|
||||||
@@ -1144,7 +1132,7 @@ eval_string_define (const char *text, struct t_eval_context *eval_context)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Returns count of items in a hdata, as a string.
|
* Return count of items in a hdata, as a string.
|
||||||
*
|
*
|
||||||
* Note: result must be freed after use.
|
* Note: result must be freed after use.
|
||||||
*/
|
*/
|
||||||
@@ -1155,7 +1143,8 @@ eval_hdata_count (const char *text, struct t_eval_context *eval_context)
|
|||||||
struct t_hdata *hdata;
|
struct t_hdata *hdata;
|
||||||
unsigned long ptr_value;
|
unsigned long ptr_value;
|
||||||
void *pointer;
|
void *pointer;
|
||||||
char *pos1, *pos2, *value, *hdata_name, *pointer_name, str_count[64];
|
const char *pos1, *pos2;
|
||||||
|
char *value, *hdata_name, *pointer_name, str_count[64];
|
||||||
int rc, count;
|
int rc, count;
|
||||||
|
|
||||||
value = NULL;
|
value = NULL;
|
||||||
@@ -1218,7 +1207,7 @@ end:
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Gets value of hdata using "path" to a variable.
|
* Get value of hdata using "path" to a variable.
|
||||||
*
|
*
|
||||||
* Note: result must be freed after use.
|
* Note: result must be freed after use.
|
||||||
*/
|
*/
|
||||||
@@ -1227,8 +1216,8 @@ char *
|
|||||||
eval_hdata_get_value (struct t_hdata *hdata, void *pointer, const char *path,
|
eval_hdata_get_value (struct t_hdata *hdata, void *pointer, const char *path,
|
||||||
struct t_eval_context *eval_context)
|
struct t_eval_context *eval_context)
|
||||||
{
|
{
|
||||||
char *value, *var_name, str_value[128], *pos, *property;
|
char *value, *var_name, str_value[128], *property;
|
||||||
const char *ptr_value, *hdata_name, *ptr_var_name, *pos_open_paren;
|
const char *ptr_value, *hdata_name, *ptr_var_name, *pos, *pos_open_paren;
|
||||||
int type, debug_id;
|
int type, debug_id;
|
||||||
struct t_hashtable *hashtable;
|
struct t_hashtable *hashtable;
|
||||||
|
|
||||||
@@ -1411,7 +1400,7 @@ end:
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Returns a string using hdata.
|
* Return a string using hdata.
|
||||||
*
|
*
|
||||||
* Note: result must be freed after use.
|
* Note: result must be freed after use.
|
||||||
*/
|
*/
|
||||||
@@ -1519,7 +1508,7 @@ end:
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Returns text with syntax highlighting (using markers, to be replaced by
|
* Return text with syntax highlighting (using markers, to be replaced by
|
||||||
* colors later).
|
* colors later).
|
||||||
*
|
*
|
||||||
* Note: result must be freed after use.
|
* Note: result must be freed after use.
|
||||||
@@ -1546,7 +1535,7 @@ eval_syntax_highlight_add_markers (const char *prefix, const char *text,
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Replaces raw highlight markers with color codes defined in option
|
* Replace raw highlight markers with color codes defined in option
|
||||||
* weechat.color.eval_syntax_colors.
|
* weechat.color.eval_syntax_colors.
|
||||||
*
|
*
|
||||||
* Note: result must be freed after use.
|
* Note: result must be freed after use.
|
||||||
@@ -1555,8 +1544,8 @@ eval_syntax_highlight_add_markers (const char *prefix, const char *text,
|
|||||||
char *
|
char *
|
||||||
eval_syntax_highlight_colorize (const char *value)
|
eval_syntax_highlight_colorize (const char *value)
|
||||||
{
|
{
|
||||||
const char *ptr_value;
|
const char *ptr_value, *pos;
|
||||||
char **result, *pos;
|
char **result;
|
||||||
int color;
|
int color;
|
||||||
|
|
||||||
if (!value)
|
if (!value)
|
||||||
@@ -1603,7 +1592,7 @@ eval_syntax_highlight_colorize (const char *value)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Adds syntax highlighting in text.
|
* Add syntax highlighting in text.
|
||||||
*
|
*
|
||||||
* Note: result must be freed after use.
|
* Note: result must be freed after use.
|
||||||
*/
|
*/
|
||||||
@@ -1625,7 +1614,7 @@ eval_syntax_highlight (const char *text, struct t_eval_context *eval_context)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Replaces variables, which can be, by order of priority:
|
* Replace variables, which can be, by order of priority:
|
||||||
* - ${raw_hl:string}: the string itself without evaluation but with syntax highlighting
|
* - ${raw_hl:string}: the string itself without evaluation but with syntax highlighting
|
||||||
* - ${raw:string}: the string itself without evaluation
|
* - ${raw:string}: the string itself without evaluation
|
||||||
* - ${hl:string}: the string with syntax highlighting
|
* - ${hl:string}: the string with syntax highlighting
|
||||||
@@ -2088,7 +2077,7 @@ end:
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Replaces variables in a string.
|
* Replace variables in a string.
|
||||||
*
|
*
|
||||||
* Note: result must be freed after use.
|
* Note: result must be freed after use.
|
||||||
*/
|
*/
|
||||||
@@ -2131,15 +2120,15 @@ eval_replace_vars (const char *expr, struct t_eval_context *eval_context)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Compares two expressions.
|
* Compare two expressions.
|
||||||
*
|
*
|
||||||
* Returns:
|
* Return:
|
||||||
* "1": comparison is true
|
* "1": comparison is true
|
||||||
* "0": comparison is false
|
* "0": comparison is false
|
||||||
*
|
*
|
||||||
* Examples:
|
* Examples:
|
||||||
* "15 > 2": returns "1"
|
* "15 > 2": return "1"
|
||||||
* "abc == def": returns "0"
|
* "abc == def": return "0"
|
||||||
*
|
*
|
||||||
* Note: result must be freed after use.
|
* Note: result must be freed after use.
|
||||||
*/
|
*/
|
||||||
@@ -2224,18 +2213,21 @@ eval_compare (const char *expr1, int comparison, const char *expr2,
|
|||||||
|
|
||||||
if (!string_compare)
|
if (!string_compare)
|
||||||
{
|
{
|
||||||
|
errno = 0;
|
||||||
|
error = NULL;
|
||||||
value1 = strtod (expr1, &error);
|
value1 = strtod (expr1, &error);
|
||||||
if (!error || error[0])
|
if (!error || error[0] || (errno == ERANGE))
|
||||||
{
|
|
||||||
string_compare = 1;
|
string_compare = 1;
|
||||||
}
|
}
|
||||||
else
|
|
||||||
|
if (!string_compare)
|
||||||
{
|
{
|
||||||
|
errno = 0;
|
||||||
|
error = NULL;
|
||||||
value2 = strtod (expr2, &error);
|
value2 = strtod (expr2, &error);
|
||||||
if (!error || error[0])
|
if (!error || error[0] || (errno == ERANGE))
|
||||||
string_compare = 1;
|
string_compare = 1;
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
if (string_compare)
|
if (string_compare)
|
||||||
rc = strcmp (expr1, expr2);
|
rc = strcmp (expr1, expr2);
|
||||||
@@ -2275,7 +2267,7 @@ end:
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Evaluates a condition (this function must not be called directly).
|
* Evaluate a condition (this function must not be called directly).
|
||||||
*
|
*
|
||||||
* For return value, see function eval_expression().
|
* For return value, see function eval_expression().
|
||||||
*
|
*
|
||||||
@@ -2498,7 +2490,7 @@ end:
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Replaces text in a string using a regular expression and replacement text.
|
* Replace text in a string using a regular expression and replacement text.
|
||||||
*
|
*
|
||||||
* The argument "regex" is a pointer to a regex compiled with WeeChat function
|
* The argument "regex" is a pointer to a regex compiled with WeeChat function
|
||||||
* string_regcomp (or function regcomp).
|
* string_regcomp (or function regcomp).
|
||||||
@@ -2637,7 +2629,7 @@ end:
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Evaluates an expression.
|
* Evaluate an expression.
|
||||||
*
|
*
|
||||||
* The hashtable "pointers" must have string for keys, pointer for values.
|
* The hashtable "pointers" must have string for keys, pointer for values.
|
||||||
* The hashtable "extra_vars" must have string for keys and values.
|
* The hashtable "extra_vars" must have string for keys and values.
|
||||||
@@ -2683,10 +2675,9 @@ eval_expression (const char *expr, struct t_hashtable *pointers,
|
|||||||
{
|
{
|
||||||
struct t_eval_context context, *eval_context;
|
struct t_eval_context context, *eval_context;
|
||||||
struct t_hashtable *user_vars;
|
struct t_hashtable *user_vars;
|
||||||
int condition, rc, pointers_allocated, regex_allocated, debug_id;
|
int condition, rc, pointers_allocated, regex_allocated, debug_id, debug_level;
|
||||||
int ptr_window_added, ptr_buffer_added;
|
int ptr_window_added, ptr_buffer_added;
|
||||||
long number;
|
char *value;
|
||||||
char *value, *error;
|
|
||||||
const char *default_prefix = EVAL_DEFAULT_PREFIX;
|
const char *default_prefix = EVAL_DEFAULT_PREFIX;
|
||||||
const char *default_suffix = EVAL_DEFAULT_SUFFIX;
|
const char *default_suffix = EVAL_DEFAULT_SUFFIX;
|
||||||
const char *ptr_value, *regex_replace;
|
const char *ptr_value, *regex_replace;
|
||||||
@@ -2826,11 +2817,9 @@ eval_expression (const char *expr, struct t_hashtable *pointers,
|
|||||||
ptr_value = hashtable_get (options, "debug");
|
ptr_value = hashtable_get (options, "debug");
|
||||||
if (ptr_value && ptr_value[0])
|
if (ptr_value && ptr_value[0])
|
||||||
{
|
{
|
||||||
error = NULL;
|
if (util_parse_int (ptr_value, 10, &debug_level) && (debug_level >= 1))
|
||||||
number = strtol (ptr_value, &error, 10);
|
|
||||||
if (error && !error[0] && (number >= 1))
|
|
||||||
{
|
{
|
||||||
eval_context->debug_level = (int)number;
|
eval_context->debug_level = debug_level;
|
||||||
eval_context->debug_output = string_dyn_alloc (256);
|
eval_context->debug_output = string_dyn_alloc (256);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+53
-53
@@ -50,9 +50,9 @@ char *hashtable_type_string[HASHTABLE_NUM_TYPES] =
|
|||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Searches for a hashtable type.
|
* Search for a hashtable type.
|
||||||
*
|
*
|
||||||
* Returns index of type in enum t_hashtable_type, -1 if type is not found.
|
* Return index of type in enum t_hashtable_type, -1 if type is not found.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
int
|
int
|
||||||
@@ -74,9 +74,9 @@ hashtable_get_type (const char *type)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Hashes a string using a variant of djb2 hash.
|
* Hash a string using a variant of djb2 hash.
|
||||||
*
|
*
|
||||||
* Returns the hash of the string.
|
* Return the hash of the string.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
unsigned long long
|
unsigned long long
|
||||||
@@ -98,9 +98,9 @@ hashtable_hash_key_djb2 (const char *string)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Hashes a key (default callback).
|
* Hash a key (default callback).
|
||||||
*
|
*
|
||||||
* Returns the hash of the key, depending on the type.
|
* Return the hash of the key, depending on the type.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
unsigned long long
|
unsigned long long
|
||||||
@@ -135,9 +135,9 @@ hashtable_hash_key_default_cb (struct t_hashtable *hashtable, const void *key)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Compares two keys (default callback).
|
* Compare two keys (default callback).
|
||||||
*
|
*
|
||||||
* Returns:
|
* Return:
|
||||||
* < 0: key1 < key2
|
* < 0: key1 < key2
|
||||||
* 0: key1 == key2
|
* 0: key1 == key2
|
||||||
* > 0: key1 > key2
|
* > 0: key1 > key2
|
||||||
@@ -200,14 +200,14 @@ hashtable_keycmp_default_cb (struct t_hashtable *hashtable,
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Creates a new hashtable.
|
* Create a new hashtable.
|
||||||
*
|
*
|
||||||
* The size is NOT a limit for number of items in hashtable. It is the size of
|
* The size is NOT a limit for number of items in hashtable. It is the size of
|
||||||
* internal array to store hashed keys: a high value uses more memory, but has
|
* internal array to store hashed keys: a high value uses more memory, but has
|
||||||
* better performance because this reduces the collisions of hashed keys and
|
* better performance because this reduces the collisions of hashed keys and
|
||||||
* then reduces length of linked lists.
|
* then reduce length of linked lists.
|
||||||
*
|
*
|
||||||
* Returns pointer to new hashtable, NULL if error.
|
* Return pointer to new hashtable, NULL if error.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
struct t_hashtable *
|
struct t_hashtable *
|
||||||
@@ -266,7 +266,7 @@ hashtable_new (int size,
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Allocates space for a key or value.
|
* Allocate space for a key or value.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void
|
void
|
||||||
@@ -334,7 +334,7 @@ hashtable_alloc_type (enum t_hashtable_type type,
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Frees space used by a key.
|
* Free space used by a key.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void
|
void
|
||||||
@@ -366,7 +366,7 @@ hashtable_free_key (struct t_hashtable *hashtable,
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Frees space used by a value.
|
* Free space used by a value.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void
|
void
|
||||||
@@ -399,11 +399,11 @@ hashtable_free_value (struct t_hashtable *hashtable,
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Sets value for a key in hashtable.
|
* Set value for a key in hashtable.
|
||||||
*
|
*
|
||||||
* The size arguments are used only for type "buffer".
|
* The size arguments are used only for type "buffer".
|
||||||
*
|
*
|
||||||
* Returns pointer to item created/updated, NULL if error.
|
* Return pointer to item created/updated, NULL if error.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
struct t_hashtable_item *
|
struct t_hashtable_item *
|
||||||
@@ -490,12 +490,12 @@ hashtable_set_with_size (struct t_hashtable *hashtable,
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Sets value for a key in hashtable.
|
* Set value for a key in hashtable.
|
||||||
*
|
*
|
||||||
* Note: this function can be called *only* if key AND value are *not* of type
|
* Note: this function can be called *only* if key AND value are *not* of type
|
||||||
* "buffer".
|
* "buffer".
|
||||||
*
|
*
|
||||||
* Returns pointer to item created/updated, NULL if error.
|
* Return pointer to item created/updated, NULL if error.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
struct t_hashtable_item *
|
struct t_hashtable_item *
|
||||||
@@ -506,9 +506,9 @@ hashtable_set (struct t_hashtable *hashtable,
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Searches for an item in hashtable.
|
* Search for an item in hashtable.
|
||||||
*
|
*
|
||||||
* If hash is non NULL, then it is set with hash value of key (even if key is
|
* If hash is non NULL, then set it with hash value of key (even if key is
|
||||||
* not found).
|
* not found).
|
||||||
*/
|
*/
|
||||||
|
|
||||||
@@ -541,9 +541,9 @@ hashtable_get_item (struct t_hashtable *hashtable, const void *key,
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Gets value for a key in hashtable.
|
* Get value for a key in hashtable.
|
||||||
*
|
*
|
||||||
* Returns pointer to value for key, NULL if key is not found.
|
* Return pointer to value for key, NULL if key is not found.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void *
|
void *
|
||||||
@@ -557,9 +557,9 @@ hashtable_get (struct t_hashtable *hashtable, const void *key)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Checks if a key exists in the hashtable.
|
* Check if a key exists in the hashtable.
|
||||||
*
|
*
|
||||||
* Returns:
|
* Return:
|
||||||
* 1: key exists
|
* 1: key exists
|
||||||
* 0: key does not exist
|
* 0: key does not exist
|
||||||
*/
|
*/
|
||||||
@@ -571,9 +571,9 @@ hashtable_has_key (struct t_hashtable *hashtable, const void *key)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Converts a value (from any type) to a string.
|
* Convert a value (from any type) to a string.
|
||||||
*
|
*
|
||||||
* Returns pointer to a static buffer (for type string, returns pointer to
|
* Return pointer to a static buffer (for type string, return pointer to
|
||||||
* string itself), which must be used immediately, it is overwritten by
|
* string itself), which must be used immediately, it is overwritten by
|
||||||
* subsequent calls to this function.
|
* subsequent calls to this function.
|
||||||
*/
|
*/
|
||||||
@@ -611,7 +611,7 @@ hashtable_to_string (enum t_hashtable_type type, const void *value)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Calls a function on all hashtable entries.
|
* Call a function on all hashtable entries.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void
|
void
|
||||||
@@ -639,7 +639,7 @@ hashtable_map (struct t_hashtable *hashtable,
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Calls a function on all hashtable entries (sends keys and values as strings).
|
* Call a function on all hashtable entries (sends keys and values as strings).
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void
|
void
|
||||||
@@ -680,7 +680,7 @@ hashtable_map_string (struct t_hashtable *hashtable,
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Duplicates key/value in another hashtable (callback called for each variable
|
* Duplicate key/value in another hashtable (callback called for each variable
|
||||||
* in hashtable).
|
* in hashtable).
|
||||||
*/
|
*/
|
||||||
|
|
||||||
@@ -700,9 +700,9 @@ hashtable_duplicate_map_cb (void *data,
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Duplicates a hashtable.
|
* Duplicate a hashtable.
|
||||||
*
|
*
|
||||||
* Returns pointer to new hashtable, NULL if error.
|
* Return pointer to new hashtable, NULL if error.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
struct t_hashtable *
|
struct t_hashtable *
|
||||||
@@ -731,7 +731,7 @@ hashtable_dup (struct t_hashtable *hashtable)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Builds sorted list of keys (callback called for each variable in hashtable).
|
* Build sorted list of keys (callback called for each variable in hashtable).
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void
|
void
|
||||||
@@ -752,7 +752,7 @@ hashtable_get_list_keys_map_cb (void *data,
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Gets list with sorted keys of hashtable.
|
* Get list with sorted keys of hashtable.
|
||||||
*
|
*
|
||||||
* Note: list must be freed after use.
|
* Note: list must be freed after use.
|
||||||
*/
|
*/
|
||||||
@@ -772,7 +772,7 @@ hashtable_get_list_keys (struct t_hashtable *hashtable)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Gets a hashtable property as integer.
|
* Get a hashtable property as integer.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
int
|
int
|
||||||
@@ -790,7 +790,7 @@ hashtable_get_integer (struct t_hashtable *hashtable, const char *property)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Computes length of all keys (callback called for each variable in hashtable).
|
* Compute length of all keys (callback called for each variable in hashtable).
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void
|
void
|
||||||
@@ -812,7 +812,7 @@ hashtable_compute_length_keys_cb (void *data,
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Computes length of all values (callback called for each variable in
|
* Compute length of all values (callback called for each variable in
|
||||||
* hashtable).
|
* hashtable).
|
||||||
*/
|
*/
|
||||||
|
|
||||||
@@ -842,7 +842,7 @@ hashtable_compute_length_values_cb (void *data,
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Computes length of all keys + values (callback called for each variable in
|
* Compute length of all keys + values (callback called for each variable in
|
||||||
* hashtable).
|
* hashtable).
|
||||||
*/
|
*/
|
||||||
|
|
||||||
@@ -856,7 +856,7 @@ hashtable_compute_length_keys_values_cb (void *data,
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Builds a string with all keys (callback called for each variable in
|
* Build a string with all keys (callback called for each variable in
|
||||||
* hashtable).
|
* hashtable).
|
||||||
*/
|
*/
|
||||||
|
|
||||||
@@ -882,7 +882,7 @@ hashtable_build_string_keys_cb (void *data,
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Builds a string with all values (callback called for each variable in
|
* Build a string with all values (callback called for each variable in
|
||||||
* hashtable).
|
* hashtable).
|
||||||
*/
|
*/
|
||||||
|
|
||||||
@@ -915,7 +915,7 @@ hashtable_build_string_values_cb (void *data,
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Builds a string with all keys + values (callback called for each variable in
|
* Build a string with all keys + values (callback called for each variable in
|
||||||
* hashtable).
|
* hashtable).
|
||||||
*/
|
*/
|
||||||
|
|
||||||
@@ -951,9 +951,9 @@ hashtable_build_string_keys_values_cb (void *data,
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Gets keys and/or values of hashtable as string.
|
* Get keys and/or values of hashtable as string.
|
||||||
*
|
*
|
||||||
* Returns a string with one of these formats:
|
* Return a string with one of these formats:
|
||||||
* if keys == 1 and values == 0: "key1,key2,key3"
|
* if keys == 1 and values == 0: "key1,key2,key3"
|
||||||
* if keys == 0 and values == 1: "value1,value2,value3"
|
* if keys == 0 and values == 1: "value1,value2,value3"
|
||||||
* if keys == 1 and values == 1: "key1:value1,key2:value2,key3:value3"
|
* if keys == 1 and values == 1: "key1:value1,key2:value2,key3:value3"
|
||||||
@@ -1028,7 +1028,7 @@ hashtable_get_keys_values (struct t_hashtable *hashtable,
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Gets a hashtable property as string.
|
* Get a hashtable property as string.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
const char *
|
const char *
|
||||||
@@ -1056,7 +1056,7 @@ hashtable_get_string (struct t_hashtable *hashtable, const char *property)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Sets a hashtable property (pointer).
|
* Set a hashtable property (pointer).
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void
|
void
|
||||||
@@ -1073,9 +1073,9 @@ hashtable_set_pointer (struct t_hashtable *hashtable, const char *property,
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Adds hashtable keys and values in an infolist.
|
* Add hashtable keys and values in an infolist.
|
||||||
*
|
*
|
||||||
* Returns:
|
* Return:
|
||||||
* 1: OK
|
* 1: OK
|
||||||
* 0: error
|
* 0: error
|
||||||
*/
|
*/
|
||||||
@@ -1148,9 +1148,9 @@ hashtable_add_to_infolist (struct t_hashtable *hashtable,
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Adds hashtable keys and values from an infolist.
|
* Add hashtable keys and values from an infolist.
|
||||||
*
|
*
|
||||||
* Returns:
|
* Return:
|
||||||
* 1: OK
|
* 1: OK
|
||||||
* 0: error
|
* 0: error
|
||||||
*/
|
*/
|
||||||
@@ -1238,7 +1238,7 @@ hashtable_add_from_infolist (struct t_hashtable *hashtable,
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Removes an item from hashtable.
|
* Remove an item from hashtable.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void
|
void
|
||||||
@@ -1277,7 +1277,7 @@ hashtable_remove_item (struct t_hashtable *hashtable,
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Removes an item from hashtable (searches it with key).
|
* Remove an item from hashtable (searches it with key).
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void
|
void
|
||||||
@@ -1295,7 +1295,7 @@ hashtable_remove (struct t_hashtable *hashtable, const void *key)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Removes all items from hashtable.
|
* Remove all items from hashtable.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void
|
void
|
||||||
@@ -1316,7 +1316,7 @@ hashtable_remove_all (struct t_hashtable *hashtable)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Frees a hashtable: removes all items and frees hashtable.
|
* Free a hashtable: removes all items and frees hashtable.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void
|
void
|
||||||
@@ -1332,7 +1332,7 @@ hashtable_free (struct t_hashtable *hashtable)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Prints hashtable in WeeChat log file (usually for crash dump).
|
* Print hashtable in WeeChat log file (usually for crash dump).
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void
|
void
|
||||||
|
|||||||
+74
-86
@@ -35,6 +35,7 @@
|
|||||||
#include "core-hashtable.h"
|
#include "core-hashtable.h"
|
||||||
#include "core-log.h"
|
#include "core-log.h"
|
||||||
#include "core-string.h"
|
#include "core-string.h"
|
||||||
|
#include "core-util.h"
|
||||||
#include "../plugins/plugin.h"
|
#include "../plugins/plugin.h"
|
||||||
|
|
||||||
|
|
||||||
@@ -46,7 +47,7 @@ char *hdata_type_string[WEECHAT_NUM_HDATA_TYPES] =
|
|||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Frees a hdata variable.
|
* Free a hdata variable.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void
|
void
|
||||||
@@ -68,7 +69,7 @@ hdata_free_var_cb (struct t_hashtable *hashtable, const void *key, void *value)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Frees a hdata list.
|
* Free a hdata list.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void
|
void
|
||||||
@@ -82,9 +83,9 @@ hdata_free_list_cb (struct t_hashtable *hashtable, const void *key, void *value)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Creates a new hdata.
|
* Create a new hdata.
|
||||||
*
|
*
|
||||||
* Returns pointer to new hdata, NULL if error.
|
* Return pointer to new hdata, NULL if error.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
struct t_hdata *
|
struct t_hdata *
|
||||||
@@ -133,7 +134,7 @@ hdata_new (struct t_weechat_plugin *plugin, const char *hdata_name,
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Adds a new variable in a hdata.
|
* Add a new variable in a hdata.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void
|
void
|
||||||
@@ -172,7 +173,7 @@ hdata_new_var (struct t_hdata *hdata, const char *name, int offset, int type,
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Adds a new list pointer in a hdata.
|
* Add a new list pointer in a hdata.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void
|
void
|
||||||
@@ -194,7 +195,7 @@ hdata_new_list (struct t_hdata *hdata, const char *name, void *pointer,
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Gets offset of variable in hdata.
|
* Get offset of variable in hdata.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
int
|
int
|
||||||
@@ -213,7 +214,7 @@ hdata_get_var_offset (struct t_hdata *hdata, const char *name)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Gets type of variable in hdata (as integer).
|
* Get type of variable in hdata (as integer).
|
||||||
*/
|
*/
|
||||||
|
|
||||||
int
|
int
|
||||||
@@ -232,7 +233,7 @@ hdata_get_var_type (struct t_hdata *hdata, const char *name)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Gets type of variable in hdata (as string).
|
* Get type of variable in hdata (as string).
|
||||||
*/
|
*/
|
||||||
|
|
||||||
const char *
|
const char *
|
||||||
@@ -251,9 +252,9 @@ hdata_get_var_type_string (struct t_hdata *hdata, const char *name)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Gets size of array for a variable (if variable is an array).
|
* Get size of array for a variable (if variable is an array).
|
||||||
*
|
*
|
||||||
* Returns size of array, -1 if variable is not an array (or if error).
|
* Return size of array, -1 if variable is not an array (or if error).
|
||||||
*/
|
*/
|
||||||
|
|
||||||
int
|
int
|
||||||
@@ -262,9 +263,7 @@ hdata_get_var_array_size (struct t_hdata *hdata, void *pointer,
|
|||||||
{
|
{
|
||||||
struct t_hdata_var *var;
|
struct t_hdata_var *var;
|
||||||
const char *ptr_size;
|
const char *ptr_size;
|
||||||
char *error;
|
int i, offset, value;
|
||||||
long value;
|
|
||||||
int i, offset;
|
|
||||||
void *ptr_value;
|
void *ptr_value;
|
||||||
|
|
||||||
if (!hdata || !name)
|
if (!hdata || !name)
|
||||||
@@ -340,10 +339,8 @@ hdata_get_var_array_size (struct t_hdata *hdata, void *pointer,
|
|||||||
else
|
else
|
||||||
{
|
{
|
||||||
/* check if the size is a valid integer */
|
/* check if the size is a valid integer */
|
||||||
error = NULL;
|
if (util_parse_int (ptr_size, 10, &value))
|
||||||
value = strtol (ptr_size, &error, 10);
|
return value;
|
||||||
if (error && !error[0])
|
|
||||||
return (int)value;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -351,7 +348,7 @@ hdata_get_var_array_size (struct t_hdata *hdata, void *pointer,
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Gets size of array for variable as string.
|
* Get size of array for variable as string.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
const char *
|
const char *
|
||||||
@@ -374,9 +371,9 @@ hdata_get_var_array_size_string (struct t_hdata *hdata, void *pointer,
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Gets hdata name for a variable.
|
* Get hdata name for a variable.
|
||||||
*
|
*
|
||||||
* Returns hdata name, NULL if variable has no hdata.
|
* Return hdata name, NULL if variable has no hdata.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
const char *
|
const char *
|
||||||
@@ -395,7 +392,7 @@ hdata_get_var_hdata (struct t_hdata *hdata, const char *name)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Gets pointer to content of variable using hdata variable name.
|
* Get pointer to content of variable using hdata variable name.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void *
|
void *
|
||||||
@@ -414,7 +411,7 @@ hdata_get_var (struct t_hdata *hdata, void *pointer, const char *name)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Gets pointer to content of variable using hdata variable offset.
|
* Get pointer to content of variable using hdata variable offset.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void *
|
void *
|
||||||
@@ -427,7 +424,7 @@ hdata_get_var_at_offset (struct t_hdata *hdata, void *pointer, int offset)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Gets a list pointer in hdata.
|
* Get a list pointer in hdata.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void *
|
void *
|
||||||
@@ -446,9 +443,9 @@ hdata_get_list (struct t_hdata *hdata, const char *name)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Checks if a pointer is in the list.
|
* Check if a pointer is in the list.
|
||||||
*
|
*
|
||||||
* Returns:
|
* Return:
|
||||||
* 1: pointer exists in list
|
* 1: pointer exists in list
|
||||||
* 0: pointer does not exist
|
* 0: pointer does not exist
|
||||||
*/
|
*/
|
||||||
@@ -476,7 +473,7 @@ hdata_check_pointer_in_list (struct t_hdata *hdata, void *list, void *pointer)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Checks if a pointer is in a list with flag "check_pointers".
|
* Check if a pointer is in a list with flag "check_pointers".
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void
|
void
|
||||||
@@ -513,14 +510,14 @@ hdata_check_pointer_map_cb (void *data, struct t_hashtable *hashtable,
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Checks if a pointer is valid for a given hdata/list.
|
* Check if a pointer is valid for a given hdata/list.
|
||||||
*
|
*
|
||||||
* If argument "list" is NULL, the check is made with all lists in hdata
|
* If argument "list" is NULL, the check is made with all lists in hdata
|
||||||
* that have flag "check_pointers". If no list is defined with this flag,
|
* that have flag "check_pointers". If no list is defined with this flag,
|
||||||
* the pointer is considered valid (so this function returns 1); if the
|
* the pointer is considered valid (so this function return 1); if the
|
||||||
* pointer is not found in any list, this function returns 0.
|
* pointer is not found in any list, this function return 0.
|
||||||
*
|
*
|
||||||
* Returns:
|
* Return:
|
||||||
* 1: pointer exists in the given list (or a list with check_pointers flag)
|
* 1: pointer exists in the given list (or a list with check_pointers flag)
|
||||||
* 0: pointer does not exist
|
* 0: pointer does not exist
|
||||||
*/
|
*/
|
||||||
@@ -553,7 +550,7 @@ hdata_check_pointer (struct t_hdata *hdata, void *list, void *pointer)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Moves pointer to another element in list.
|
* Move pointer to another element in list.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void *
|
void *
|
||||||
@@ -579,9 +576,9 @@ hdata_move (struct t_hdata *hdata, void *pointer, int count)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Searches for an element in list using expression.
|
* Search for an element in list using expression.
|
||||||
*
|
*
|
||||||
* Returns pointer to element found, NULL if not found.
|
* Return pointer to element found, NULL if not found.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void *
|
void *
|
||||||
@@ -659,7 +656,7 @@ end:
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Returns number of item in this hdata, starting at "pointer".
|
* Return number of item in this hdata, starting at "pointer".
|
||||||
*/
|
*/
|
||||||
|
|
||||||
int
|
int
|
||||||
@@ -680,7 +677,7 @@ hdata_count (struct t_hdata *hdata, void *pointer)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Extracts index from name of a variable.
|
* Extract index from name of a variable.
|
||||||
*
|
*
|
||||||
* A name can contain index with this format: "NNN|name" (where NNN is an
|
* A name can contain index with this format: "NNN|name" (where NNN is an
|
||||||
* integer >= 0).
|
* integer >= 0).
|
||||||
@@ -691,8 +688,9 @@ hdata_count (struct t_hdata *hdata, void *pointer)
|
|||||||
void
|
void
|
||||||
hdata_get_index_and_name (const char *name, int *index, const char **ptr_name)
|
hdata_get_index_and_name (const char *name, int *index, const char **ptr_name)
|
||||||
{
|
{
|
||||||
char *pos, *str_index, *error;
|
const char *pos;
|
||||||
long number;
|
char *str_index;
|
||||||
|
int number;
|
||||||
|
|
||||||
if (index)
|
if (index)
|
||||||
*index = -1;
|
*index = -1;
|
||||||
@@ -708,9 +706,7 @@ hdata_get_index_and_name (const char *name, int *index, const char **ptr_name)
|
|||||||
str_index = string_strndup (name, pos - name);
|
str_index = string_strndup (name, pos - name);
|
||||||
if (str_index)
|
if (str_index)
|
||||||
{
|
{
|
||||||
error = NULL;
|
if (util_parse_int (str_index, 10, &number))
|
||||||
number = strtol (str_index, &error, 10);
|
|
||||||
if (error && !error[0])
|
|
||||||
{
|
{
|
||||||
if (index)
|
if (index)
|
||||||
*index = number;
|
*index = number;
|
||||||
@@ -723,7 +719,7 @@ hdata_get_index_and_name (const char *name, int *index, const char **ptr_name)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Gets char value of a variable in hdata.
|
* Get char value of a variable in hdata.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
char
|
char
|
||||||
@@ -757,7 +753,7 @@ hdata_char (struct t_hdata *hdata, void *pointer, const char *name)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Gets integer value of a variable in hdata.
|
* Get integer value of a variable in hdata.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
int
|
int
|
||||||
@@ -791,7 +787,7 @@ hdata_integer (struct t_hdata *hdata, void *pointer, const char *name)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Gets long value of a variable in hdata.
|
* Get long value of a variable in hdata.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
long
|
long
|
||||||
@@ -825,7 +821,7 @@ hdata_long (struct t_hdata *hdata, void *pointer, const char *name)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Gets "long long" value of a variable in hdata.
|
* Get "long long" value of a variable in hdata.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
long long
|
long long
|
||||||
@@ -859,7 +855,7 @@ hdata_longlong (struct t_hdata *hdata, void *pointer, const char *name)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Gets string value of a variable in hdata.
|
* Get string value of a variable in hdata.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
const char *
|
const char *
|
||||||
@@ -896,7 +892,7 @@ hdata_string (struct t_hdata *hdata, void *pointer, const char *name)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Gets pointer value of a variable in hdata.
|
* Get pointer value of a variable in hdata.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void *
|
void *
|
||||||
@@ -930,7 +926,7 @@ hdata_pointer (struct t_hdata *hdata, void *pointer, const char *name)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Gets time value of a variable in hdata.
|
* Get time value of a variable in hdata.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
time_t
|
time_t
|
||||||
@@ -964,7 +960,7 @@ hdata_time (struct t_hdata *hdata, void *pointer, const char *name)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Gets hashtable value of a variable in hdata.
|
* Get hashtable value of a variable in hdata.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
struct t_hashtable *
|
struct t_hashtable *
|
||||||
@@ -998,11 +994,11 @@ hdata_hashtable (struct t_hdata *hdata, void *pointer, const char *name)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Compares a hdata variable of two objects.
|
* Compare a hdata variable of two objects.
|
||||||
*
|
*
|
||||||
* If case_sensitive == 1, the comparison of strings is case-sensitive.
|
* If case_sensitive == 1, the comparison of strings is case-sensitive.
|
||||||
*
|
*
|
||||||
* Returns:
|
* Return:
|
||||||
* -1: variable1 < variable2
|
* -1: variable1 < variable2
|
||||||
* 0: variable1 == variable2
|
* 0: variable1 == variable2
|
||||||
* 1: variable1 > variable2
|
* 1: variable1 > variable2
|
||||||
@@ -1230,13 +1226,13 @@ end:
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Sets value for a variable in hdata.
|
* Set value for a variable in hdata.
|
||||||
*
|
*
|
||||||
* WARNING: this is dangerous, and only some variables can be set by this
|
* WARNING: this is dangerous, and only some variables can be set by this
|
||||||
* function (this depends on hdata, see API doc for more info) and this
|
* function (this depends on hdata, see API doc for more info) and this
|
||||||
* function can be called *ONLY* in an "update" callback (in hdata).
|
* function can be called *ONLY* in an "update" callback (in hdata).
|
||||||
*
|
*
|
||||||
* Returns:
|
* Return:
|
||||||
* 1: OK (value set)
|
* 1: OK (value set)
|
||||||
* 0: error (or not allowed)
|
* 0: error (or not allowed)
|
||||||
*/
|
*/
|
||||||
@@ -1246,11 +1242,11 @@ hdata_set (struct t_hdata *hdata, void *pointer, const char *name,
|
|||||||
const char *value)
|
const char *value)
|
||||||
{
|
{
|
||||||
struct t_hdata_var *var;
|
struct t_hdata_var *var;
|
||||||
char **ptr_string, *error;
|
char **ptr_string;
|
||||||
long number;
|
|
||||||
long long number_longlong;
|
|
||||||
unsigned long ptr;
|
unsigned long ptr;
|
||||||
int rc;
|
int rc, number_int;
|
||||||
|
long number_long;
|
||||||
|
long long number_longlong;
|
||||||
|
|
||||||
if (!hdata->update_pending)
|
if (!hdata->update_pending)
|
||||||
return 0;
|
return 0;
|
||||||
@@ -1270,27 +1266,21 @@ hdata_set (struct t_hdata *hdata, void *pointer, const char *name,
|
|||||||
*((char *)(pointer + var->offset)) = (value) ? value[0] : '\0';
|
*((char *)(pointer + var->offset)) = (value) ? value[0] : '\0';
|
||||||
return 1;
|
return 1;
|
||||||
case WEECHAT_HDATA_INTEGER:
|
case WEECHAT_HDATA_INTEGER:
|
||||||
error = NULL;
|
if (util_parse_int (value, 10, &number_int))
|
||||||
number = strtol (value, &error, 10);
|
|
||||||
if (error && !error[0])
|
|
||||||
{
|
{
|
||||||
*((int *)(pointer + var->offset)) = (int)number;
|
*((int *)(pointer + var->offset)) = number_int;
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case WEECHAT_HDATA_LONG:
|
case WEECHAT_HDATA_LONG:
|
||||||
error = NULL;
|
if (util_parse_long (value, 10, &number_long))
|
||||||
number = strtol (value, &error, 10);
|
|
||||||
if (error && !error[0])
|
|
||||||
{
|
{
|
||||||
*((long *)(pointer + var->offset)) = number;
|
*((long *)(pointer + var->offset)) = number_long;
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case WEECHAT_HDATA_LONGLONG:
|
case WEECHAT_HDATA_LONGLONG:
|
||||||
error = NULL;
|
if (util_parse_longlong (value, 10, &number_longlong))
|
||||||
number_longlong = strtoll (value, &error, 10);
|
|
||||||
if (error && !error[0])
|
|
||||||
{
|
{
|
||||||
*((long long *)(pointer + var->offset)) = number_longlong;
|
*((long long *)(pointer + var->offset)) = number_longlong;
|
||||||
return 1;
|
return 1;
|
||||||
@@ -1323,11 +1313,9 @@ hdata_set (struct t_hdata *hdata, void *pointer, const char *name,
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case WEECHAT_HDATA_TIME:
|
case WEECHAT_HDATA_TIME:
|
||||||
error = NULL;
|
if (util_parse_longlong (value, 10, &number_longlong) && (number_longlong >= 0))
|
||||||
number = strtol (value, &error, 10);
|
|
||||||
if (error && !error[0] && (number >= 0))
|
|
||||||
{
|
{
|
||||||
*((time_t *)(pointer + var->offset)) = (time_t)number;
|
*((time_t *)(pointer + var->offset)) = (time_t)number_longlong;
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
@@ -1338,7 +1326,7 @@ hdata_set (struct t_hdata *hdata, void *pointer, const char *name,
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Updates some data in hdata.
|
* Update some data in hdata.
|
||||||
*
|
*
|
||||||
* The hashtable contains keys with new values.
|
* The hashtable contains keys with new values.
|
||||||
* A special key "__delete" can be used to delete the whole structure at
|
* A special key "__delete" can be used to delete the whole structure at
|
||||||
@@ -1347,8 +1335,8 @@ hdata_set (struct t_hdata *hdata, void *pointer, const char *name,
|
|||||||
* WARNING: this is dangerous, and only some data can be updated by this
|
* WARNING: this is dangerous, and only some data can be updated by this
|
||||||
* function (this depends on hdata, see API doc for more info).
|
* function (this depends on hdata, see API doc for more info).
|
||||||
*
|
*
|
||||||
* Returns number of variables updated, 0 if nothing has been updated.
|
* Return number of variables updated, 0 if nothing has been updated.
|
||||||
* In case of deletion, returns 1 if OK, 0 if error.
|
* In case of deletion, return 1 if OK, 0 if error.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
int
|
int
|
||||||
@@ -1390,7 +1378,7 @@ hdata_update (struct t_hdata *hdata, void *pointer,
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Gets a hdata property as string.
|
* Get a hdata property as string.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
const char *
|
const char *
|
||||||
@@ -1420,7 +1408,7 @@ hdata_get_string (struct t_hdata *hdata, const char *property)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Frees a hdata.
|
* Free a hdata.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void
|
void
|
||||||
@@ -1439,7 +1427,7 @@ hdata_free (struct t_hdata *hdata)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Frees hdata for a plugin (callback called for each hdata in memory).
|
* Free hdata for a plugin (callback called for each hdata in memory).
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void
|
void
|
||||||
@@ -1455,7 +1443,7 @@ hdata_free_all_plugin_map_cb (void *data, struct t_hashtable *hashtable,
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Frees all hdata created by a plugin.
|
* Free all hdata created by a plugin.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void
|
void
|
||||||
@@ -1465,7 +1453,7 @@ hdata_free_all_plugin (struct t_weechat_plugin *plugin)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Frees all hdata.
|
* Free all hdata.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void
|
void
|
||||||
@@ -1475,7 +1463,7 @@ hdata_free_all (void)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Prints variable of a hdata in WeeChat log file (callback called for each
|
* Print variable of a hdata in WeeChat log file (callback called for each
|
||||||
* variable in hdata).
|
* variable in hdata).
|
||||||
*/
|
*/
|
||||||
|
|
||||||
@@ -1501,7 +1489,7 @@ hdata_print_log_var_map_cb (void *data, struct t_hashtable *hashtable,
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Prints hdata in WeeChat log file (callback called for each hdata in memory).
|
* Print hdata in WeeChat log file (callback called for each hdata in memory).
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void
|
void
|
||||||
@@ -1538,7 +1526,7 @@ hdata_print_log_map_cb (void *data, struct t_hashtable *hashtable,
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Prints hdata in WeeChat log file (usually for crash dump).
|
* Print hdata in WeeChat log file (usually for crash dump).
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void
|
void
|
||||||
@@ -1548,7 +1536,7 @@ hdata_print_log (void)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Frees a hdata in hashtable "weechat_hdata".
|
* Free a hdata in hashtable "weechat_hdata".
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void
|
void
|
||||||
@@ -1563,7 +1551,7 @@ hdata_free_hdata_cb (struct t_hashtable *hashtable,
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Initializes hdata: creates a hashtable with hdata.
|
* Initialize hdata: creates a hashtable with hdata.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void
|
void
|
||||||
@@ -1578,7 +1566,7 @@ hdata_init (void)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Frees all hdata and hashtable with hdata.
|
* Free all hdata and hashtable with hdata.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void
|
void
|
||||||
|
|||||||
+32
-38
@@ -158,7 +158,7 @@ t_callback_hook *hook_callback_print_log[HOOK_NUM_TYPES] =
|
|||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Initializes hooks.
|
* Initialize hooks.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void
|
void
|
||||||
@@ -214,9 +214,9 @@ hook_init (void)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Searches for a hook type.
|
* Search for a hook type.
|
||||||
*
|
*
|
||||||
* Returns index of type in enum t_hook_type, -1 if type is not found.
|
* Return index of type in enum t_hook_type, -1 if type is not found.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
int
|
int
|
||||||
@@ -238,7 +238,7 @@ hook_search_type (const char *type)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Searches for position of hook in list (to keep hooks sorted).
|
* Search for position of hook in list (to keep hooks sorted).
|
||||||
*
|
*
|
||||||
* Hooks are sorted by priority, except commands which are sorted by command
|
* Hooks are sorted by priority, except commands which are sorted by command
|
||||||
* name, and then priority.
|
* name, and then priority.
|
||||||
@@ -283,7 +283,7 @@ hook_find_pos (struct t_hook *hook)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Adds a hook to list.
|
* Add a hook to list.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void
|
void
|
||||||
@@ -330,7 +330,7 @@ hook_add_to_list (struct t_hook *new_hook)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Removes a hook from list.
|
* Remove a hook from list.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void
|
void
|
||||||
@@ -366,7 +366,7 @@ hook_remove_from_list (struct t_hook *hook)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Removes hooks marked as "deleted" from list.
|
* Remove hooks marked as "deleted" from list.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void
|
void
|
||||||
@@ -395,7 +395,7 @@ hook_remove_deleted (void)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Initializes a new hook with default values.
|
* Initialize a new hook with default values.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void
|
void
|
||||||
@@ -426,9 +426,9 @@ hook_init_data (struct t_hook *hook, struct t_weechat_plugin *plugin,
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Checks if a hook pointer is valid.
|
* Check if a hook pointer is valid.
|
||||||
*
|
*
|
||||||
* Returns:
|
* Return:
|
||||||
* 1: hook exists
|
* 1: hook exists
|
||||||
* 0: hook does not exist
|
* 0: hook does not exist
|
||||||
*/
|
*/
|
||||||
@@ -457,7 +457,7 @@ hook_valid (struct t_hook *hook)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Starts a hook exec.
|
* Start a hook exec.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void
|
void
|
||||||
@@ -467,7 +467,7 @@ hook_exec_start (void)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Ends a hook_exec.
|
* End a hook_exec.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void
|
void
|
||||||
@@ -481,7 +481,7 @@ hook_exec_end (void)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Starts execution of a hook callback.
|
* Start execution of a hook callback.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void
|
void
|
||||||
@@ -504,7 +504,7 @@ hook_callback_start (struct t_hook *hook, struct t_hook_exec_cb *hook_exec_cb)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Ends execution of a hook callback.
|
* End execution of a hook callback.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void
|
void
|
||||||
@@ -541,7 +541,7 @@ hook_callback_end (struct t_hook *hook, struct t_hook_exec_cb *hook_exec_cb)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Returns description of hook.
|
* Return description of hook.
|
||||||
*
|
*
|
||||||
* Note: result must be freed after use.
|
* Note: result must be freed after use.
|
||||||
*/
|
*/
|
||||||
@@ -553,16 +553,14 @@ hook_get_description (struct t_hook *hook)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Sets a hook property (string).
|
* Set a hook property (string).
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void
|
void
|
||||||
hook_set (struct t_hook *hook, const char *property, const char *value)
|
hook_set (struct t_hook *hook, const char *property, const char *value)
|
||||||
{
|
{
|
||||||
ssize_t num_written;
|
ssize_t num_written;
|
||||||
char *error;
|
int rc, number;
|
||||||
long number;
|
|
||||||
int rc;
|
|
||||||
|
|
||||||
/* invalid hook? */
|
/* invalid hook? */
|
||||||
if (!hook_valid (hook))
|
if (!hook_valid (hook))
|
||||||
@@ -605,22 +603,20 @@ hook_set (struct t_hook *hook, const char *property, const char *value)
|
|||||||
&& (hook->type == HOOK_TYPE_PROCESS)
|
&& (hook->type == HOOK_TYPE_PROCESS)
|
||||||
&& (HOOK_PROCESS(hook, child_pid) > 0))
|
&& (HOOK_PROCESS(hook, child_pid) > 0))
|
||||||
{
|
{
|
||||||
error = NULL;
|
if (!util_parse_int (value, 10, &number))
|
||||||
number = strtol (value, &error, 10);
|
|
||||||
if (!error || error[0])
|
|
||||||
{
|
{
|
||||||
/* not a number? look for signal by name */
|
/* not a number? look for signal by name */
|
||||||
number = signal_search_name (value);
|
number = signal_search_name (value);
|
||||||
}
|
}
|
||||||
if (number >= 0)
|
if (number >= 0)
|
||||||
{
|
{
|
||||||
rc = kill (HOOK_PROCESS(hook, child_pid), (int)number);
|
rc = kill (HOOK_PROCESS(hook, child_pid), number);
|
||||||
if (rc < 0)
|
if (rc < 0)
|
||||||
{
|
{
|
||||||
gui_chat_printf (NULL,
|
gui_chat_printf (NULL,
|
||||||
_("%sError sending signal %d to pid %d: %s"),
|
_("%sError sending signal %d to pid %d: %s"),
|
||||||
gui_chat_prefix[GUI_CHAT_PREFIX_ERROR],
|
gui_chat_prefix[GUI_CHAT_PREFIX_ERROR],
|
||||||
(int)number,
|
number,
|
||||||
HOOK_PROCESS(hook, child_pid),
|
HOOK_PROCESS(hook, child_pid),
|
||||||
strerror (errno));
|
strerror (errno));
|
||||||
}
|
}
|
||||||
@@ -633,9 +629,7 @@ hook_set (struct t_hook *hook, const char *property, const char *value)
|
|||||||
&& ((hook->type == HOOK_TYPE_COMMAND)
|
&& ((hook->type == HOOK_TYPE_COMMAND)
|
||||||
|| (hook->type == HOOK_TYPE_COMMAND_RUN)))
|
|| (hook->type == HOOK_TYPE_COMMAND_RUN)))
|
||||||
{
|
{
|
||||||
error = NULL;
|
if (util_parse_int (value, 10, &number))
|
||||||
number = strtol (value, &error, 10);
|
|
||||||
if (error && !error[0])
|
|
||||||
{
|
{
|
||||||
switch (hook->type)
|
switch (hook->type)
|
||||||
{
|
{
|
||||||
@@ -691,7 +685,7 @@ hook_schedule_clean_process (pid_t pid)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Unhooks something.
|
* Unhook something.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void
|
void
|
||||||
@@ -743,7 +737,7 @@ unhook (struct t_hook *hook)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Unhooks everything for a plugin/subplugin.
|
* Unhook everything for a plugin/subplugin.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void
|
void
|
||||||
@@ -773,7 +767,7 @@ unhook_all_plugin (struct t_weechat_plugin *plugin, const char *subplugin)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Unhooks everything.
|
* Unhook everything.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void
|
void
|
||||||
@@ -795,7 +789,7 @@ unhook_all (void)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Returns hdata for hook.
|
* Return hdata for hook.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
struct t_hdata *
|
struct t_hdata *
|
||||||
@@ -839,9 +833,9 @@ hook_hdata_hook_cb (const void *pointer, void *data, const char *hdata_name)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Adds a hook in an infolist.
|
* Add a hook in an infolist.
|
||||||
*
|
*
|
||||||
* Returns:
|
* Return:
|
||||||
* 1: OK
|
* 1: OK
|
||||||
* 0: error
|
* 0: error
|
||||||
*/
|
*/
|
||||||
@@ -890,9 +884,9 @@ hook_add_to_infolist_pointer (struct t_infolist *infolist, struct t_hook *hook)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Adds hooks of a type in an infolist.
|
* Add hooks of a type in an infolist.
|
||||||
*
|
*
|
||||||
* Returns:
|
* Return:
|
||||||
* 1: OK
|
* 1: OK
|
||||||
* 0: error
|
* 0: error
|
||||||
*/
|
*/
|
||||||
@@ -930,11 +924,11 @@ hook_add_to_infolist_type (struct t_infolist *infolist, int type,
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Adds hooks in an infolist.
|
* Add hooks in an infolist.
|
||||||
*
|
*
|
||||||
* Argument "arguments" can be a hook type with optional comma + name after.
|
* Argument "arguments" can be a hook type with optional comma + name after.
|
||||||
*
|
*
|
||||||
* Returns:
|
* Return:
|
||||||
* 1: OK
|
* 1: OK
|
||||||
* 0: error
|
* 0: error
|
||||||
*/
|
*/
|
||||||
@@ -982,7 +976,7 @@ hook_add_to_infolist (struct t_infolist *infolist, struct t_hook *pointer,
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Prints hooks in WeeChat log file (usually for crash dump).
|
* Print hooks in WeeChat log file (usually for crash dump).
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void
|
void
|
||||||
|
|||||||
+33
-33
@@ -43,9 +43,9 @@ char *infolist_type_char_string[INFOLIST_NUM_TYPES] = {
|
|||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Creates a new infolist.
|
* Create a new infolist.
|
||||||
*
|
*
|
||||||
* Returns pointer to infolist, NULL if error.
|
* Return pointer to infolist, NULL if error.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
struct t_infolist *
|
struct t_infolist *
|
||||||
@@ -74,9 +74,9 @@ infolist_new (struct t_weechat_plugin *plugin)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Checks if an infolist pointer is valid.
|
* Check if an infolist pointer is valid.
|
||||||
*
|
*
|
||||||
* Returns:
|
* Return:
|
||||||
* 1: infolist exists
|
* 1: infolist exists
|
||||||
* 0: infolist is not found
|
* 0: infolist is not found
|
||||||
*/
|
*/
|
||||||
@@ -101,9 +101,9 @@ infolist_valid (struct t_infolist *infolist)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Creates a new item in an infolist.
|
* Create a new item in an infolist.
|
||||||
*
|
*
|
||||||
* Returns pointer to new item, NULL if error.
|
* Return pointer to new item, NULL if error.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
struct t_infolist_item *
|
struct t_infolist_item *
|
||||||
@@ -131,9 +131,9 @@ infolist_new_item (struct t_infolist *infolist)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Creates a new integer variable in an item.
|
* Create a new integer variable in an item.
|
||||||
*
|
*
|
||||||
* Returns pointer to new variable, NULL if error.
|
* Return pointer to new variable, NULL if error.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
struct t_infolist_var *
|
struct t_infolist_var *
|
||||||
@@ -168,9 +168,9 @@ infolist_new_var_integer (struct t_infolist_item *item,
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Creates a new string variable in an item.
|
* Create a new string variable in an item.
|
||||||
*
|
*
|
||||||
* Returns pointer to new variable, NULL if error.
|
* Return pointer to new variable, NULL if error.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
struct t_infolist_var *
|
struct t_infolist_var *
|
||||||
@@ -203,9 +203,9 @@ infolist_new_var_string (struct t_infolist_item *item,
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Creates a new pointer variable in an item.
|
* Create a new pointer variable in an item.
|
||||||
*
|
*
|
||||||
* Returns pointer to new variable, NULL if error.
|
* Return pointer to new variable, NULL if error.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
struct t_infolist_var *
|
struct t_infolist_var *
|
||||||
@@ -238,9 +238,9 @@ infolist_new_var_pointer (struct t_infolist_item *item,
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Creates a new buffer variable in an item.
|
* Create a new buffer variable in an item.
|
||||||
*
|
*
|
||||||
* Returns pointer to new variable, NULL if error.
|
* Return pointer to new variable, NULL if error.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
struct t_infolist_var *
|
struct t_infolist_var *
|
||||||
@@ -285,9 +285,9 @@ infolist_new_var_buffer (struct t_infolist_item *item,
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Creates a new time variable in an item.
|
* Create a new time variable in an item.
|
||||||
*
|
*
|
||||||
* Returns pointer to new variable, NULL if error.
|
* Return pointer to new variable, NULL if error.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
struct t_infolist_var *
|
struct t_infolist_var *
|
||||||
@@ -322,9 +322,9 @@ infolist_new_var_time (struct t_infolist_item *item,
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Gets next item for an infolist.
|
* Get next item for an infolist.
|
||||||
*
|
*
|
||||||
* If pointer is NULL, returns first item of infolist.
|
* If pointer is NULL, return first item of infolist.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
struct t_infolist_item *
|
struct t_infolist_item *
|
||||||
@@ -343,9 +343,9 @@ infolist_next (struct t_infolist *infolist)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Gets previous item for an infolist.
|
* Get previous item for an infolist.
|
||||||
*
|
*
|
||||||
* If pointer is NULL, returns last item of infolist.
|
* If pointer is NULL, return last item of infolist.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
struct t_infolist_item *
|
struct t_infolist_item *
|
||||||
@@ -364,7 +364,7 @@ infolist_prev (struct t_infolist *infolist)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Resets pointer to current item in infolist.
|
* Reset pointer to current item in infolist.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void
|
void
|
||||||
@@ -377,7 +377,7 @@ infolist_reset_item_cursor (struct t_infolist *infolist)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Searches for a variable in current infolist item.
|
* Search for a variable in current infolist item.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
struct t_infolist_var *
|
struct t_infolist_var *
|
||||||
@@ -400,7 +400,7 @@ infolist_search_var (struct t_infolist *infolist, const char *name)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Gets list of fields for current infolist item.
|
* Get list of fields for current infolist item.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
const char *
|
const char *
|
||||||
@@ -434,7 +434,7 @@ infolist_fields (struct t_infolist *infolist)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Gets integer value for a variable in current infolist item.
|
* Get integer value for a variable in current infolist item.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
int
|
int
|
||||||
@@ -462,7 +462,7 @@ infolist_integer (struct t_infolist *infolist, const char *var)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Gets string value for a variable in current infolist item.
|
* Get string value for a variable in current infolist item.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
const char *
|
const char *
|
||||||
@@ -490,7 +490,7 @@ infolist_string (struct t_infolist *infolist, const char *var)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Gets pointer value for a variable in current infolist item.
|
* Get pointer value for a variable in current infolist item.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void *
|
void *
|
||||||
@@ -518,7 +518,7 @@ infolist_pointer (struct t_infolist *infolist, const char *var)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Gets buffer value for a variable in current infolist item.
|
* Get buffer value for a variable in current infolist item.
|
||||||
*
|
*
|
||||||
* Argument "size" is set with the size of buffer.
|
* Argument "size" is set with the size of buffer.
|
||||||
*/
|
*/
|
||||||
@@ -552,7 +552,7 @@ infolist_buffer (struct t_infolist *infolist, const char *var,
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Gets time value for a variable in current infolist item.
|
* Get time value for a variable in current infolist item.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
time_t
|
time_t
|
||||||
@@ -580,7 +580,7 @@ infolist_time (struct t_infolist *infolist, const char *var)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Frees a variable in item.
|
* Free a variable in item.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void
|
void
|
||||||
@@ -623,7 +623,7 @@ infolist_var_free (struct t_infolist_item *item,
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Frees an item in infolist.
|
* Free an item in infolist.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void
|
void
|
||||||
@@ -662,7 +662,7 @@ infolist_item_free (struct t_infolist *infolist,
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Frees an infolist.
|
* Free an infolist.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void
|
void
|
||||||
@@ -699,7 +699,7 @@ infolist_free (struct t_infolist *infolist)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Frees all infolists created by a plugin.
|
* Free all infolists created by a plugin.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void
|
void
|
||||||
@@ -718,7 +718,7 @@ infolist_free_all_plugin (struct t_weechat_plugin *plugin)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Prints infolists in WeeChat log file (usually for crash dump).
|
* Print infolists in WeeChat log file (usually for crash dump).
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void
|
void
|
||||||
|
|||||||
+16
-11
@@ -45,9 +45,9 @@ char **input_commands_allowed = NULL;
|
|||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Sends data to buffer input callback.
|
* Send data to buffer input callback.
|
||||||
*
|
*
|
||||||
* Returns the return code of buffer callback, or WEECHAT_RC_ERROR if the
|
* Return the return code of buffer callback, or WEECHAT_RC_ERROR if the
|
||||||
* buffer has no input callback.
|
* buffer has no input callback.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
@@ -72,9 +72,9 @@ input_exec_data (struct t_gui_buffer *buffer, const char *data)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Executes a command.
|
* Execute a command.
|
||||||
*
|
*
|
||||||
* Returns:
|
* Return:
|
||||||
* WEECHAT_RC_OK: command executed
|
* WEECHAT_RC_OK: command executed
|
||||||
* WEECHAT_RC_ERROR: error, command not executed
|
* WEECHAT_RC_ERROR: error, command not executed
|
||||||
*/
|
*/
|
||||||
@@ -228,12 +228,12 @@ end:
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Sends data to a buffer's callback.
|
* Send data to a buffer's callback.
|
||||||
*
|
*
|
||||||
* If split_newline = 1 and if buffer input_multiline = 0, the string
|
* If split_newline = 1 and if buffer input_multiline = 0, the string
|
||||||
* is split on "\n" and multiple commands can then be executed.
|
* is split on "\n" and multiple commands can then be executed.
|
||||||
*
|
*
|
||||||
* Returns:
|
* Return:
|
||||||
* WEECHAT_RC_OK: data properly sent (or command executed successfully)
|
* WEECHAT_RC_OK: data properly sent (or command executed successfully)
|
||||||
* WEECHAT_RC_ERROR: error
|
* WEECHAT_RC_ERROR: error
|
||||||
*/
|
*/
|
||||||
@@ -242,8 +242,8 @@ int
|
|||||||
input_data (struct t_gui_buffer *buffer, const char *data,
|
input_data (struct t_gui_buffer *buffer, const char *data,
|
||||||
const char *commands_allowed, int split_newline, int user_data)
|
const char *commands_allowed, int split_newline, int user_data)
|
||||||
{
|
{
|
||||||
char *pos, str_buffer[128], *new_data, *buffer_full_name;
|
const char *ptr_data_for_buffer;
|
||||||
const char *ptr_data, *ptr_data_for_buffer;
|
char *pos, str_buffer[128], *new_data, *buffer_full_name, *ptr_data;
|
||||||
int first_command, rc;
|
int first_command, rc;
|
||||||
|
|
||||||
if (!buffer || !gui_buffer_valid (buffer) || !data)
|
if (!buffer || !gui_buffer_valid (buffer) || !data)
|
||||||
@@ -272,8 +272,13 @@ input_data (struct t_gui_buffer *buffer, const char *data,
|
|||||||
if (data[0] && new_data && !new_data[0])
|
if (data[0] && new_data && !new_data[0])
|
||||||
goto end;
|
goto end;
|
||||||
|
|
||||||
|
if (!new_data)
|
||||||
|
new_data = strdup (data);
|
||||||
|
if (!new_data)
|
||||||
|
goto end;
|
||||||
|
|
||||||
first_command = 1;
|
first_command = 1;
|
||||||
ptr_data = (new_data) ? new_data : data;
|
ptr_data = new_data;
|
||||||
while (ptr_data)
|
while (ptr_data)
|
||||||
{
|
{
|
||||||
/*
|
/*
|
||||||
@@ -399,12 +404,12 @@ input_data_timer_cb (const void *pointer, void *data, int remaining_calls)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Sends data to a buffer's callback with an optional delay (in milliseconds).
|
* Send data to a buffer's callback with an optional delay (in milliseconds).
|
||||||
*
|
*
|
||||||
* If delay < 1, the command is executed immediately.
|
* If delay < 1, the command is executed immediately.
|
||||||
* If delay >= 1, the command is scheduled for execution in this number of ms.
|
* If delay >= 1, the command is scheduled for execution in this number of ms.
|
||||||
*
|
*
|
||||||
* Returns:
|
* Return:
|
||||||
* WEECHAT_RC_OK: data properly sent or scheduled for execution
|
* WEECHAT_RC_OK: data properly sent or scheduled for execution
|
||||||
* WEECHAT_RC_ERROR: error
|
* WEECHAT_RC_ERROR: error
|
||||||
*/
|
*/
|
||||||
|
|||||||
+27
-27
@@ -36,9 +36,9 @@
|
|||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Creates a new list.
|
* Create a new list.
|
||||||
*
|
*
|
||||||
* Returns pointer to new list, NULL if error.
|
* Return pointer to new list, NULL if error.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
struct t_weelist *
|
struct t_weelist *
|
||||||
@@ -57,7 +57,7 @@ weelist_new (void)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Searches for position of data (to keep list sorted).
|
* Search for position of data (to keep list sorted).
|
||||||
*/
|
*/
|
||||||
|
|
||||||
struct t_weelist_item *
|
struct t_weelist_item *
|
||||||
@@ -79,7 +79,7 @@ weelist_find_pos (struct t_weelist *weelist, const char *data)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Inserts an element in the list (keeping list sorted).
|
* Insert an element in the list (keeping list sorted).
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void
|
void
|
||||||
@@ -140,9 +140,9 @@ weelist_insert (struct t_weelist *weelist, struct t_weelist_item *item,
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Creates new data and add it to the list.
|
* Create new data and add it to the list.
|
||||||
*
|
*
|
||||||
* Returns pointer to new item, NULL if error.
|
* Return pointer to new item, NULL if error.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
struct t_weelist_item *
|
struct t_weelist_item *
|
||||||
@@ -166,9 +166,9 @@ weelist_add (struct t_weelist *weelist, const char *data, const char *where,
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Searches for data in a list (case-sensitive).
|
* Search for data in a list (case-sensitive).
|
||||||
*
|
*
|
||||||
* Returns pointer to item found, NULL if not found.
|
* Return pointer to item found, NULL if not found.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
struct t_weelist_item *
|
struct t_weelist_item *
|
||||||
@@ -190,9 +190,9 @@ weelist_search (struct t_weelist *weelist, const char *data)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Searches for data in a list (case-sensitive).
|
* Search for data in a list (case-sensitive).
|
||||||
*
|
*
|
||||||
* Returns position of item found (>= 0), -1 if not found.
|
* Return position of item found (>= 0), -1 if not found.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
int
|
int
|
||||||
@@ -217,9 +217,9 @@ weelist_search_pos (struct t_weelist *weelist, const char *data)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Searches for data in a list (case-insensitive).
|
* Search for data in a list (case-insensitive).
|
||||||
*
|
*
|
||||||
* Returns pointer to item found, NULL if not found.
|
* Return pointer to item found, NULL if not found.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
struct t_weelist_item *
|
struct t_weelist_item *
|
||||||
@@ -241,9 +241,9 @@ weelist_casesearch (struct t_weelist *weelist, const char *data)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Searches for data in a list (case-insensitive).
|
* Search for data in a list (case-insensitive).
|
||||||
*
|
*
|
||||||
* Returns position of item found (>= 0), -1 if not found.
|
* Return position of item found (>= 0), -1 if not found.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
int
|
int
|
||||||
@@ -268,7 +268,7 @@ weelist_casesearch_pos (struct t_weelist *weelist, const char *data)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Gets an item in a list by position (0 is first element).
|
* Get an item in a list by position (0 is first element).
|
||||||
*/
|
*/
|
||||||
|
|
||||||
struct t_weelist_item *
|
struct t_weelist_item *
|
||||||
@@ -294,7 +294,7 @@ weelist_get (struct t_weelist *weelist, int position)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Sets a new value for an item.
|
* Set a new value for an item.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void
|
void
|
||||||
@@ -308,9 +308,9 @@ weelist_set (struct t_weelist_item *item, const char *value)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Gets next item.
|
* Get next item.
|
||||||
*
|
*
|
||||||
* Returns NULL if end of list has been reached.
|
* Return NULL if end of list has been reached.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
struct t_weelist_item *
|
struct t_weelist_item *
|
||||||
@@ -323,9 +323,9 @@ weelist_next (struct t_weelist_item *item)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Gets previous item.
|
* Get previous item.
|
||||||
*
|
*
|
||||||
* Returns NULL if beginning of list has been reached.
|
* Return NULL if beginning of list has been reached.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
struct t_weelist_item *
|
struct t_weelist_item *
|
||||||
@@ -338,7 +338,7 @@ weelist_prev (struct t_weelist_item *item)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Gets string pointer to item data.
|
* Get string pointer to item data.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
const char *
|
const char *
|
||||||
@@ -351,7 +351,7 @@ weelist_string (struct t_weelist_item *item)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Gets user data pointer to item data.
|
* Get user data pointer to item data.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void *
|
void *
|
||||||
@@ -364,7 +364,7 @@ weelist_user_data (struct t_weelist_item *item)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Gets size of list.
|
* Get size of list.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
int
|
int
|
||||||
@@ -377,7 +377,7 @@ weelist_size (struct t_weelist *weelist)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Removes an item from a list.
|
* Remove an item from a list.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void
|
void
|
||||||
@@ -411,7 +411,7 @@ weelist_remove (struct t_weelist *weelist, struct t_weelist_item *item)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Removes all items from a list.
|
* Remove all items from a list.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void
|
void
|
||||||
@@ -427,7 +427,7 @@ weelist_remove_all (struct t_weelist *weelist)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Frees a list.
|
* Free a list.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void
|
void
|
||||||
@@ -441,7 +441,7 @@ weelist_free (struct t_weelist *weelist)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Prints list in WeeChat log file (usually for crash dump).
|
* Print list in WeeChat log file (usually for crash dump).
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void
|
void
|
||||||
|
|||||||
+7
-7
@@ -54,9 +54,9 @@ int weechat_log_use_time = 1; /* 0 to temporary disable time in log, */
|
|||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Opens the WeeChat log file.
|
* Open the WeeChat log file.
|
||||||
*
|
*
|
||||||
* Returns:
|
* Return:
|
||||||
* 1: OK
|
* 1: OK
|
||||||
* 0: error
|
* 0: error
|
||||||
*/
|
*/
|
||||||
@@ -116,7 +116,7 @@ log_open (const char *filename, const char *mode)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Initializes the WeeChat log file.
|
* Initialize the WeeChat log file.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void
|
void
|
||||||
@@ -140,7 +140,7 @@ log_init (void)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Writes a message in WeeChat log file.
|
* Write a message in WeeChat log file.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void
|
void
|
||||||
@@ -193,7 +193,7 @@ log_printf (const char *message, ...)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Dumps a string as hexa data in WeeChat log file.
|
* Dump a string as hexa data in WeeChat log file.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void
|
void
|
||||||
@@ -227,7 +227,7 @@ log_printf_hexa (const char *spaces, const char *string)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Closes the WeeChat log file.
|
* Close the WeeChat log file.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void
|
void
|
||||||
@@ -252,7 +252,7 @@ log_close (void)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Renames the WeeChat log file (when crashing).
|
* Rename the WeeChat log file (when crashing).
|
||||||
*
|
*
|
||||||
* The file "weechat.log" is renamed to "weechat_crash_YYYYMMDD_NNNN.log",
|
* The file "weechat.log" is renamed to "weechat_crash_YYYYMMDD_NNNN.log",
|
||||||
* where YYYYMMDD is the current date and NNNN the PID of WeeChat process.
|
* where YYYYMMDD is the current date and NNNN the PID of WeeChat process.
|
||||||
|
|||||||
+56
-43
@@ -58,6 +58,7 @@
|
|||||||
#include "core-config.h"
|
#include "core-config.h"
|
||||||
#include "core-proxy.h"
|
#include "core-proxy.h"
|
||||||
#include "core-string.h"
|
#include "core-string.h"
|
||||||
|
#include "core-util.h"
|
||||||
#include "../gui/gui-chat.h"
|
#include "../gui/gui-chat.h"
|
||||||
#include "../plugins/plugin.h"
|
#include "../plugins/plugin.h"
|
||||||
|
|
||||||
@@ -72,7 +73,7 @@ gnutls_certificate_credentials_t gnutls_xcred; /* GnuTLS client credentials */
|
|||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Initializes gcrypt.
|
* Initialize gcrypt.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void
|
void
|
||||||
@@ -87,7 +88,7 @@ network_init_gcrypt (void)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Allocates credentials structure.
|
* Allocate credentials structure.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void
|
void
|
||||||
@@ -101,9 +102,9 @@ network_allocate_credentials (void)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Loads system's default trusted certificate authorities.
|
* Load system's default trusted certificate authorities.
|
||||||
*
|
*
|
||||||
* Returns the number of certificates loaded.
|
* Return the number of certificates loaded.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
int
|
int
|
||||||
@@ -143,7 +144,7 @@ network_load_system_ca_file (int force_display)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Loads user's trusted certificate authorities.
|
* Load user's trusted certificate authorities.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
int
|
int
|
||||||
@@ -229,7 +230,7 @@ end:
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Loads system's default and user's trusted certificate authorities.
|
* Load system's default and user's trusted certificate authorities.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void
|
void
|
||||||
@@ -247,7 +248,7 @@ network_load_ca_files (int force_display)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Reloads system's default and user's trusted certificate authorities.
|
* Reload system's default and user's trusted certificate authorities.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void
|
void
|
||||||
@@ -271,7 +272,7 @@ network_reload_ca_files (int force_display)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Initializes GnuTLS.
|
* Initialize GnuTLS.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void
|
void
|
||||||
@@ -288,7 +289,7 @@ network_init_gnutls (void)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Ends network.
|
* End network.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void
|
void
|
||||||
@@ -306,9 +307,9 @@ network_end (void)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Checks if a string contains a valid IP address (IPv4 or IPv6).
|
* Check if a string contains a valid IP address (IPv4 or IPv6).
|
||||||
*
|
*
|
||||||
* Returns:
|
* Return:
|
||||||
* 1: string is a valid IPv4 or IPv6
|
* 1: string is a valid IPv4 or IPv6
|
||||||
* 0: string is not a valid IP address
|
* 0: string is not a valid IP address
|
||||||
*/
|
*/
|
||||||
@@ -335,12 +336,12 @@ network_is_ip_address (const char *address)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Sends data on a socket with retry.
|
* Send data on a socket with retry.
|
||||||
*
|
*
|
||||||
* WARNING: this function is blocking, it must be called only in a forked
|
* WARNING: this function is blocking, it must be called only in a forked
|
||||||
* process.
|
* process.
|
||||||
*
|
*
|
||||||
* Returns number of bytes sent, -1 if error.
|
* Return number of bytes sent, -1 if error.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
int
|
int
|
||||||
@@ -367,12 +368,12 @@ network_send_with_retry (int sock, const void *buffer, int length, int flags)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Receives data on a socket with retry.
|
* Receive data on a socket with retry.
|
||||||
*
|
*
|
||||||
* WARNING: this function is blocking, it must be called only in a forked
|
* WARNING: this function is blocking, it must be called only in a forked
|
||||||
* process.
|
* process.
|
||||||
*
|
*
|
||||||
* Returns number of bytes received, -1 if error.
|
* Return number of bytes received, -1 if error.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
int
|
int
|
||||||
@@ -399,12 +400,12 @@ network_recv_with_retry (int sock, void *buffer, int length, int flags)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Establishes a connection and authenticates with a HTTP proxy.
|
* Establish a connection and authenticates with a HTTP proxy.
|
||||||
*
|
*
|
||||||
* WARNING: this function is blocking, it must be called only in a forked
|
* WARNING: this function is blocking, it must be called only in a forked
|
||||||
* process.
|
* process.
|
||||||
*
|
*
|
||||||
* Returns:
|
* Return:
|
||||||
* 1: OK
|
* 1: OK
|
||||||
* 0: error
|
* 0: error
|
||||||
*/
|
*/
|
||||||
@@ -463,9 +464,9 @@ network_pass_httpproxy (struct t_proxy *proxy, int sock, const char *address,
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Resolves a hostname to its IP address (works with IPv4 and IPv6).
|
* Resolve a hostname to its IP address (works with IPv4 and IPv6).
|
||||||
*
|
*
|
||||||
* Returns:
|
* Return:
|
||||||
* 1: OK
|
* 1: OK
|
||||||
* 0: error
|
* 0: error
|
||||||
*/
|
*/
|
||||||
@@ -510,14 +511,14 @@ network_resolve (const char *hostname, char *ip, int *version)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Establishes a connection and authenticates with a socks4 proxy.
|
* Establish a connection and authenticates with a socks4 proxy.
|
||||||
*
|
*
|
||||||
* The socks4 protocol is explained here: https://en.wikipedia.org/wiki/SOCKS
|
* The socks4 protocol is explained here: https://en.wikipedia.org/wiki/SOCKS
|
||||||
*
|
*
|
||||||
* WARNING: this function is blocking, it must be called only in a forked
|
* WARNING: this function is blocking, it must be called only in a forked
|
||||||
* process.
|
* process.
|
||||||
*
|
*
|
||||||
* Returns:
|
* Return:
|
||||||
* 1: OK
|
* 1: OK
|
||||||
* 0: error
|
* 0: error
|
||||||
*/
|
*/
|
||||||
@@ -563,7 +564,7 @@ network_pass_socks4proxy (struct t_proxy *proxy, int sock, const char *address,
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Establishes a connection and authenticates with a socks5 proxy.
|
* Establish a connection and authenticates with a socks5 proxy.
|
||||||
*
|
*
|
||||||
* The socks5 protocol is explained in RFC 1928.
|
* The socks5 protocol is explained in RFC 1928.
|
||||||
* The socks5 authentication with username/pass is explained in RFC 1929.
|
* The socks5 authentication with username/pass is explained in RFC 1929.
|
||||||
@@ -571,7 +572,7 @@ network_pass_socks4proxy (struct t_proxy *proxy, int sock, const char *address,
|
|||||||
* WARNING: this function is blocking, it must be called only in a forked
|
* WARNING: this function is blocking, it must be called only in a forked
|
||||||
* process.
|
* process.
|
||||||
*
|
*
|
||||||
* Returns:
|
* Return:
|
||||||
* 1: OK
|
* 1: OK
|
||||||
* 0: error
|
* 0: error
|
||||||
*/
|
*/
|
||||||
@@ -581,7 +582,13 @@ network_pass_socks5proxy (struct t_proxy *proxy, int sock, const char *address,
|
|||||||
int port)
|
int port)
|
||||||
{
|
{
|
||||||
struct t_network_socks5 socks5;
|
struct t_network_socks5 socks5;
|
||||||
unsigned char buffer[288];
|
/*
|
||||||
|
* buffer must be large enough for the username/password authentication
|
||||||
|
* request, which is the longest message sent/received here; according to
|
||||||
|
* RFC 1929 it is: version (1) + username length (1) + username (max 255)
|
||||||
|
* + password length (1) + password (max 255)
|
||||||
|
*/
|
||||||
|
unsigned char buffer[2 + 255 + 1 + 255];
|
||||||
int username_len, password_len, addr_len, addr_buffer_len;
|
int username_len, password_len, addr_len, addr_buffer_len;
|
||||||
unsigned char *addr_buffer;
|
unsigned char *addr_buffer;
|
||||||
char *username, *password;
|
char *username, *password;
|
||||||
@@ -630,6 +637,18 @@ network_pass_socks5proxy (struct t_proxy *proxy, int sock, const char *address,
|
|||||||
username_len = strlen (username);
|
username_len = strlen (username);
|
||||||
password_len = strlen (password);
|
password_len = strlen (password);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* username and password length are each stored on a single byte
|
||||||
|
* (RFC 1929), so they cannot exceed 255 bytes: reject longer values,
|
||||||
|
* otherwise the memcpy calls below would overflow the buffer
|
||||||
|
*/
|
||||||
|
if ((username_len > 255) || (password_len > 255))
|
||||||
|
{
|
||||||
|
free (username);
|
||||||
|
free (password);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
/* make username/password buffer */
|
/* make username/password buffer */
|
||||||
buffer[0] = 1;
|
buffer[0] = 1;
|
||||||
buffer[1] = (unsigned char) username_len;
|
buffer[1] = (unsigned char) username_len;
|
||||||
@@ -734,12 +753,12 @@ network_pass_socks5proxy (struct t_proxy *proxy, int sock, const char *address,
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Establishes a connection and authenticates with a proxy.
|
* Establish a connection and authenticates with a proxy.
|
||||||
*
|
*
|
||||||
* WARNING: this function is blocking, it must be called only in a forked
|
* WARNING: this function is blocking, it must be called only in a forked
|
||||||
* process.
|
* process.
|
||||||
*
|
*
|
||||||
* Returns:
|
* Return:
|
||||||
* 1: OK
|
* 1: OK
|
||||||
* 0: error
|
* 0: error
|
||||||
*/
|
*/
|
||||||
@@ -772,12 +791,12 @@ network_pass_proxy (const char *proxy, int sock, const char *address, int port)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Connects to a remote host and wait for connection if socket is non blocking.
|
* Connect to a remote host and wait for connection if socket is non blocking.
|
||||||
*
|
*
|
||||||
* WARNING: this function is blocking, it must be called only in a forked
|
* WARNING: this function is blocking, it must be called only in a forked
|
||||||
* process.
|
* process.
|
||||||
*
|
*
|
||||||
* Returns:
|
* Return:
|
||||||
* 1: OK
|
* 1: OK
|
||||||
* 0: error
|
* 0: error
|
||||||
*/
|
*/
|
||||||
@@ -822,12 +841,12 @@ network_connect (int sock, const struct sockaddr *addr, socklen_t addrlen)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Connects to a remote host.
|
* Connect to a remote host.
|
||||||
*
|
*
|
||||||
* WARNING: this function is blocking, it must be called only in a forked
|
* WARNING: this function is blocking, it must be called only in a forked
|
||||||
* process.
|
* process.
|
||||||
*
|
*
|
||||||
* Returns:
|
* Return:
|
||||||
* >= 0: connected socket fd
|
* >= 0: connected socket fd
|
||||||
* -1: error
|
* -1: error
|
||||||
*/
|
*/
|
||||||
@@ -913,7 +932,7 @@ error:
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Connects to peer in a child process.
|
* Connect to peer in a child process.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void
|
void
|
||||||
@@ -1563,18 +1582,16 @@ network_connect_gnutls_handshake_timer_cb (const void *pointer,
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Reads connection progress from child process.
|
* Read connection progress from child process.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
int
|
int
|
||||||
network_connect_child_read_cb (const void *pointer, void *data, int fd)
|
network_connect_child_read_cb (const void *pointer, void *data, int fd)
|
||||||
{
|
{
|
||||||
struct t_hook *hook_connect;
|
struct t_hook *hook_connect;
|
||||||
char buffer[1], buf_size[6], *cb_error, *cb_ip_address, *error;
|
char buffer[1], buf_size[6], *cb_error, *cb_ip_address;
|
||||||
int num_read;
|
|
||||||
long size_msg;
|
long size_msg;
|
||||||
int rc, direction;
|
int rc, num_read, direction, sock, i;
|
||||||
int sock, i;
|
|
||||||
struct msghdr msg;
|
struct msghdr msg;
|
||||||
struct cmsghdr *cmsg;
|
struct cmsghdr *cmsg;
|
||||||
char msg_buf[CMSG_SPACE(sizeof (sock))];
|
char msg_buf[CMSG_SPACE(sizeof (sock))];
|
||||||
@@ -1603,9 +1620,7 @@ network_connect_child_read_cb (const void *pointer, void *data, int fd)
|
|||||||
buf_size, 5);
|
buf_size, 5);
|
||||||
if (num_read == 5)
|
if (num_read == 5)
|
||||||
{
|
{
|
||||||
error = NULL;
|
if (util_parse_long (buf_size, 10, &size_msg) && (size_msg > 0))
|
||||||
size_msg = strtol (buf_size, &error, 10);
|
|
||||||
if (error && !error[0] && (size_msg > 0))
|
|
||||||
{
|
{
|
||||||
cb_ip_address = malloc (size_msg + 1);
|
cb_ip_address = malloc (size_msg + 1);
|
||||||
if (cb_ip_address)
|
if (cb_ip_address)
|
||||||
@@ -1740,9 +1755,7 @@ network_connect_child_read_cb (const void *pointer, void *data, int fd)
|
|||||||
buf_size, 5);
|
buf_size, 5);
|
||||||
if (num_read == 5)
|
if (num_read == 5)
|
||||||
{
|
{
|
||||||
error = NULL;
|
if (util_parse_long (buf_size, 10, &size_msg) && (size_msg > 0))
|
||||||
size_msg = strtol (buf_size, &error, 10);
|
|
||||||
if (error && !error[0] && (size_msg > 0))
|
|
||||||
{
|
{
|
||||||
cb_error = malloc (size_msg + 1);
|
cb_error = malloc (size_msg + 1);
|
||||||
if (cb_error)
|
if (cb_error)
|
||||||
@@ -1784,7 +1797,7 @@ network_connect_child_read_cb (const void *pointer, void *data, int fd)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Connects with fork (called by hook_connect() only!).
|
* Connect with fork (called by hook_connect() only!).
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void
|
void
|
||||||
|
|||||||
+27
-27
@@ -56,9 +56,9 @@ struct t_proxy *last_weechat_temp_proxy = NULL; /* reading configuration */
|
|||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Searches for a proxy option.
|
* Search for a proxy option.
|
||||||
*
|
*
|
||||||
* Returns index of option in enum t_proxy_option, -1 if option is not found.
|
* Return index of option in enum t_proxy_option, -1 if option is not found.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
int
|
int
|
||||||
@@ -80,9 +80,9 @@ proxy_search_option (const char *option_name)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Searches for a proxy type.
|
* Search for a proxy type.
|
||||||
*
|
*
|
||||||
* Returns index of option in enum t_proxy_type, -1 if type is not found.
|
* Return index of option in enum t_proxy_type, -1 if type is not found.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
int
|
int
|
||||||
@@ -104,9 +104,9 @@ proxy_search_type (const char *type)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Checks if a proxy pointer is valid.
|
* Check if a proxy pointer is valid.
|
||||||
*
|
*
|
||||||
* Returns:
|
* Return:
|
||||||
* 1: proxy exists
|
* 1: proxy exists
|
||||||
* 0: proxy does not exist
|
* 0: proxy does not exist
|
||||||
*/
|
*/
|
||||||
@@ -131,9 +131,9 @@ proxy_valid (struct t_proxy *proxy)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Searches for a proxy by name.
|
* Search for a proxy by name.
|
||||||
*
|
*
|
||||||
* Returns pointer to proxy found, NULL if not found.
|
* Return pointer to proxy found, NULL if not found.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
struct t_proxy *
|
struct t_proxy *
|
||||||
@@ -156,7 +156,7 @@ proxy_search (const char *name)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Sets name for a proxy.
|
* Set name for a proxy.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void
|
void
|
||||||
@@ -193,9 +193,9 @@ proxy_set_name (struct t_proxy *proxy, const char *name)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Sets a property for a proxy.
|
* Set a property for a proxy.
|
||||||
*
|
*
|
||||||
* Returns:
|
* Return:
|
||||||
* 1: OK
|
* 1: OK
|
||||||
* 0: error
|
* 0: error
|
||||||
*/
|
*/
|
||||||
@@ -246,9 +246,9 @@ proxy_set (struct t_proxy *proxy, const char *property, const char *value)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Creates an option for a proxy.
|
* Create an option for a proxy.
|
||||||
*
|
*
|
||||||
* Returns pointer to new option, NULL if error.
|
* Return pointer to new option, NULL if error.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
struct t_config_option *
|
struct t_config_option *
|
||||||
@@ -330,7 +330,7 @@ proxy_create_option (const char *proxy_name, int index_option,
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Creates an option for a temporary proxy (when reading configuration file).
|
* Create an option for a temporary proxy (when reading configuration file).
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void
|
void
|
||||||
@@ -347,9 +347,9 @@ proxy_create_option_temp (struct t_proxy *temp_proxy, int index_option,
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Allocates and initializes a new proxy structure.
|
* Allocate and initialize a new proxy structure.
|
||||||
*
|
*
|
||||||
* Returns pointer to new proxy, NULL if error.
|
* Return pointer to new proxy, NULL if error.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
struct t_proxy *
|
struct t_proxy *
|
||||||
@@ -374,9 +374,9 @@ proxy_alloc (const char *name)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Adds a new proxy with options.
|
* Add a new proxy with options.
|
||||||
*
|
*
|
||||||
* Returns pointer to new proxy, NULL if error.
|
* Return pointer to new proxy, NULL if error.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
struct t_proxy *
|
struct t_proxy *
|
||||||
@@ -415,9 +415,9 @@ proxy_new_with_options (const char *name,
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Adds a new proxy.
|
* Add a new proxy.
|
||||||
*
|
*
|
||||||
* Returns pointer to new proxy, NULL if error.
|
* Return pointer to new proxy, NULL if error.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
struct t_proxy *
|
struct t_proxy *
|
||||||
@@ -470,7 +470,7 @@ proxy_new (const char *name, const char *type, const char *ipv6,
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Uses temporary proxies (added by reading configuration file).
|
* Use temporary proxies (added by reading configuration file).
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void
|
void
|
||||||
@@ -532,7 +532,7 @@ proxy_use_temp_proxies (void)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Frees a proxy.
|
* Free a proxy.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void
|
void
|
||||||
@@ -564,7 +564,7 @@ proxy_free (struct t_proxy *proxy)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Frees all proxies.
|
* Free all proxies.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void
|
void
|
||||||
@@ -577,7 +577,7 @@ proxy_free_all (void)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Returns hdata for proxy.
|
* Return hdata for proxy.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
struct t_hdata *
|
struct t_hdata *
|
||||||
@@ -605,9 +605,9 @@ proxy_hdata_proxy_cb (const void *pointer, void *data,
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Adds a proxy in an infolist.
|
* Add a proxy in an infolist.
|
||||||
*
|
*
|
||||||
* Returns:
|
* Return:
|
||||||
* 1: OK
|
* 1: OK
|
||||||
* 0: error
|
* 0: error
|
||||||
*/
|
*/
|
||||||
@@ -645,7 +645,7 @@ proxy_add_to_infolist (struct t_infolist *infolist, struct t_proxy *proxy)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Prints proxies in WeeChat log file (usually for crash dump).
|
* Print proxies in WeeChat log file (usually for crash dump).
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void
|
void
|
||||||
|
|||||||
@@ -49,7 +49,7 @@ int secure_buffer_display_values = 0;
|
|||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Displays a secured data.
|
* Display a secured data.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void
|
void
|
||||||
@@ -83,7 +83,7 @@ secure_buffer_display_data (void *data,
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Displays content of secured data buffer.
|
* Display content of secured data buffer.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void
|
void
|
||||||
@@ -195,7 +195,7 @@ secure_buffer_close_cb (const void *pointer, void *data,
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Assigns secured data buffer to pointer if it is not yet set.
|
* Assign secured data buffer to pointer if it is not yet set.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void
|
void
|
||||||
@@ -213,7 +213,7 @@ secure_buffer_assign (void)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Opens a buffer to display secured data.
|
* Open a buffer to display secured data.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void
|
void
|
||||||
|
|||||||
@@ -56,7 +56,7 @@ int secure_config_loading = 0;
|
|||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Gets passphrase from user and puts it in variable "secure_passphrase".
|
* Get passphrase from user and put it in variable "secure_passphrase".
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void
|
void
|
||||||
@@ -103,9 +103,9 @@ secure_config_get_passphrase_from_user (const char *error)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Gets passphrase from a command.
|
* Get passphrase from a command.
|
||||||
*
|
*
|
||||||
* Returns passphrase from command output (only the first line with max length
|
* Return passphrase from command output (only the first line with max length
|
||||||
* of SECURE_PASSPHRASE_MAX_LENGTH chars), or NULL if error.
|
* of SECURE_PASSPHRASE_MAX_LENGTH chars), or NULL if error.
|
||||||
*
|
*
|
||||||
* Note: result must be freed after use.
|
* Note: result must be freed after use.
|
||||||
@@ -144,9 +144,9 @@ secure_config_get_passphrase_from_command (const char *command)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Reloads secured data configuration file.
|
* Reload secured data configuration file.
|
||||||
*
|
*
|
||||||
* Returns:
|
* Return:
|
||||||
* WEECHAT_CONFIG_READ_OK: OK
|
* WEECHAT_CONFIG_READ_OK: OK
|
||||||
* WEECHAT_CONFIG_READ_MEMORY_ERROR: not enough memory
|
* WEECHAT_CONFIG_READ_MEMORY_ERROR: not enough memory
|
||||||
* WEECHAT_CONFIG_READ_FILE_NOT_FOUND: file not found
|
* WEECHAT_CONFIG_READ_FILE_NOT_FOUND: file not found
|
||||||
@@ -212,7 +212,7 @@ secure_config_check_crypt_option_cb (const void *pointer, void *data,
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Reads a data option in secured data configuration file.
|
* Read a data option in secured data configuration file.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
int
|
int
|
||||||
@@ -371,7 +371,7 @@ secure_config_data_read_cb (const void *pointer, void *data,
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Encrypts data and writes it in secured data configuration file.
|
* Encrypt data and write it in secured data configuration file.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void
|
void
|
||||||
@@ -464,7 +464,7 @@ secure_config_data_write_map_cb (void *data,
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Writes already encrypted data in secured data configuration file.
|
* Write already encrypted data in secured data configuration file.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void
|
void
|
||||||
@@ -484,7 +484,7 @@ secure_config_data_write_map_encrypted_cb (void *data,
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Writes section "data" in secured data configuration file.
|
* Write section "data" in secured data configuration file.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
int
|
int
|
||||||
@@ -536,9 +536,9 @@ secure_config_data_write_cb (const void *pointer, void *data,
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Creates options in secured data configuration.
|
* Create options in secured data configuration.
|
||||||
*
|
*
|
||||||
* Returns:
|
* Return:
|
||||||
* 1: OK
|
* 1: OK
|
||||||
* 0: error
|
* 0: error
|
||||||
*/
|
*/
|
||||||
@@ -631,9 +631,9 @@ secure_config_init_options (void)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Reads secured data configuration file.
|
* Read secured data configuration file.
|
||||||
*
|
*
|
||||||
* Returns:
|
* Return:
|
||||||
* WEECHAT_CONFIG_READ_OK: OK
|
* WEECHAT_CONFIG_READ_OK: OK
|
||||||
* WEECHAT_CONFIG_READ_MEMORY_ERROR: not enough memory
|
* WEECHAT_CONFIG_READ_MEMORY_ERROR: not enough memory
|
||||||
* WEECHAT_CONFIG_READ_FILE_NOT_FOUND: file not found
|
* WEECHAT_CONFIG_READ_FILE_NOT_FOUND: file not found
|
||||||
@@ -654,9 +654,9 @@ secure_config_read (void)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Writes secured data configuration file.
|
* Write secured data configuration file.
|
||||||
*
|
*
|
||||||
* Returns:
|
* Return:
|
||||||
* WEECHAT_CONFIG_WRITE_OK: OK
|
* WEECHAT_CONFIG_WRITE_OK: OK
|
||||||
* WEECHAT_CONFIG_WRITE_ERROR: error
|
* WEECHAT_CONFIG_WRITE_ERROR: error
|
||||||
* WEECHAT_CONFIG_WRITE_MEMORY_ERROR: not enough memory
|
* WEECHAT_CONFIG_WRITE_MEMORY_ERROR: not enough memory
|
||||||
@@ -669,9 +669,9 @@ secure_config_write (void)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Initializes secured data configuration.
|
* Initialize secured data configuration.
|
||||||
*
|
*
|
||||||
* Returns:
|
* Return:
|
||||||
* 1: OK
|
* 1: OK
|
||||||
* 0: error
|
* 0: error
|
||||||
*/
|
*/
|
||||||
@@ -693,7 +693,7 @@ secure_config_init (void)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Frees secured data file and variables.
|
* Free secured data file and variables.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void
|
void
|
||||||
|
|||||||
+13
-13
@@ -56,9 +56,9 @@ int secure_data_encrypted = 0;
|
|||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Derives a key from salt + passphrase (using a hash).
|
* Derive a key from salt + passphrase (using a hash).
|
||||||
*
|
*
|
||||||
* Returns:
|
* Return:
|
||||||
* 1: OK
|
* 1: OK
|
||||||
* 0: error
|
* 0: error
|
||||||
*/
|
*/
|
||||||
@@ -101,9 +101,9 @@ secure_derive_key (const char *salt, const char *passphrase,
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Encrypts data using a hash algorithm + cipher + passphrase.
|
* Encrypt data using a hash algorithm + cipher + passphrase.
|
||||||
*
|
*
|
||||||
* Following actions are performed:
|
* The following actions are performed:
|
||||||
* 1. derive a key from the passphrase (with optional salt)
|
* 1. derive a key from the passphrase (with optional salt)
|
||||||
* 2. compute hash of data
|
* 2. compute hash of data
|
||||||
* 3. store hash + data in a buffer
|
* 3. store hash + data in a buffer
|
||||||
@@ -124,7 +124,7 @@ secure_derive_key (const char *salt, const char *passphrase,
|
|||||||
* \_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _/
|
* \_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _/
|
||||||
* encrypted data
|
* encrypted data
|
||||||
*
|
*
|
||||||
* Returns:
|
* Return:
|
||||||
* 0: OK
|
* 0: OK
|
||||||
* -1: not enough memory
|
* -1: not enough memory
|
||||||
* -2: key derive error
|
* -2: key derive error
|
||||||
@@ -260,13 +260,13 @@ encrypt_end:
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Decrypts data using a hash algorithm + cipher + passphrase.
|
* Decrypt data using a hash algorithm + cipher + passphrase.
|
||||||
*
|
*
|
||||||
* The buffer must contain:
|
* The buffer must contain:
|
||||||
* - salt (8 bytes, used to derive a key from the passphrase)
|
* - salt (8 bytes, used to derive a key from the passphrase)
|
||||||
* - encrypted hash(data) + data
|
* - encrypted hash(data) + data
|
||||||
*
|
*
|
||||||
* Following actions are performed:
|
* The following actions are performed:
|
||||||
* 1. check length of buffer (it must have at least salt + hash + some data)
|
* 1. check length of buffer (it must have at least salt + hash + some data)
|
||||||
* 2. derive a key from the passphrase using salt (at beginning of buffer)
|
* 2. derive a key from the passphrase using salt (at beginning of buffer)
|
||||||
* 3. decrypt hash + data in a buffer
|
* 3. decrypt hash + data in a buffer
|
||||||
@@ -274,7 +274,7 @@ encrypt_end:
|
|||||||
* 5. check that decrypted hash is equal to hash of data
|
* 5. check that decrypted hash is equal to hash of data
|
||||||
* 6. return decrypted data
|
* 6. return decrypted data
|
||||||
*
|
*
|
||||||
* Returns:
|
* Return:
|
||||||
* 0: OK
|
* 0: OK
|
||||||
* -1: not enough memory
|
* -1: not enough memory
|
||||||
* -2: buffer is not long enough
|
* -2: buffer is not long enough
|
||||||
@@ -410,10 +410,10 @@ decrypt_end:
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Decrypts data still encrypted (data that could not be decrypted when reading
|
* Decrypt data still encrypted (data that could not be decrypted when reading
|
||||||
* secured data configuration file (because no passphrase was given).
|
* secured data configuration file (because no passphrase was given).
|
||||||
*
|
*
|
||||||
* Returns:
|
* Return:
|
||||||
* >= 0: number of decrypted data
|
* >= 0: number of decrypted data
|
||||||
* -1: error decrypting data (bad passphrase)
|
* -1: error decrypting data (bad passphrase)
|
||||||
* -2: unsupported hash algorithm
|
* -2: unsupported hash algorithm
|
||||||
@@ -494,9 +494,9 @@ secure_decrypt_data_not_decrypted (const char *passphrase)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Initializes secured data.
|
* Initialize secured data.
|
||||||
*
|
*
|
||||||
* Returns:
|
* Return:
|
||||||
* 1: OK
|
* 1: OK
|
||||||
* 0: error
|
* 0: error
|
||||||
*/
|
*/
|
||||||
@@ -539,7 +539,7 @@ secure_init (void)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Frees all allocated data.
|
* Free all allocated data.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void
|
void
|
||||||
|
|||||||
+12
-12
@@ -128,10 +128,10 @@ signal_sigusr2_cb (int signo)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Gets a signal index with a signal number; only some commonly used signal
|
* Get a signal index with a signal number; only some commonly used signal
|
||||||
* names are supported here (see declaration of signal_list[]).
|
* names are supported here (see declaration of signal_list[]).
|
||||||
*
|
*
|
||||||
* Returns the index of signal in structure string_signal, -1 if not found.
|
* Return the index of signal in structure string_signal, -1 if not found.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
int
|
int
|
||||||
@@ -150,10 +150,10 @@ signal_search_number (int signal_number)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Gets a signal number with a name; only some commonly used signal names are
|
* Get a signal number with a name; only some commonly used signal names are
|
||||||
* supported here (see declaration of signal_list[]).
|
* supported here (see declaration of signal_list[]).
|
||||||
*
|
*
|
||||||
* Returns the signal number, -1 if not found.
|
* Return the signal number, -1 if not found.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
int
|
int
|
||||||
@@ -175,7 +175,7 @@ signal_search_name (const char *name)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Catches a system signal.
|
* Catch a system signal.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void
|
void
|
||||||
@@ -190,9 +190,9 @@ signal_catch (int signum, void (*handler)(int))
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Sends a WeeChat signal on a system signal received.
|
* Send a WeeChat signal on a system signal received.
|
||||||
*
|
*
|
||||||
* Returns:
|
* Return:
|
||||||
* WEECHAT_RC_OK: the WeeChat handler must be executed
|
* WEECHAT_RC_OK: the WeeChat handler must be executed
|
||||||
* WEECHAT_RC_OK_EAT: signal eaten, the WeeChat handler must NOT be executed
|
* WEECHAT_RC_OK_EAT: signal eaten, the WeeChat handler must NOT be executed
|
||||||
*/
|
*/
|
||||||
@@ -215,7 +215,7 @@ signal_send_to_weechat (int signal_index)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Evaluates and executes the command bound to a signal.
|
* Evaluate and execute the command bound to a signal.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void
|
void
|
||||||
@@ -253,7 +253,7 @@ signal_exec_command (int signal_index, const char *command)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Handles a specific signal received:
|
* Handle a specific signal received.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void
|
void
|
||||||
@@ -278,7 +278,7 @@ signal_handle_number (int signal_number, int count, const char *command)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Handles signals received: sends WeeChat signal and executes the configured
|
* Handle signals received: sends WeeChat signal and execute the configured
|
||||||
* command (is signal not eaten).
|
* command (is signal not eaten).
|
||||||
*/
|
*/
|
||||||
|
|
||||||
@@ -312,7 +312,7 @@ signal_handle (void)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Suspends WeeChat process.
|
* Suspend WeeChat process.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void
|
void
|
||||||
@@ -323,7 +323,7 @@ signal_suspend (void)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Initializes signal.
|
* Initialize signal.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void
|
void
|
||||||
|
|||||||
+181
-148
File diff suppressed because it is too large
Load Diff
@@ -69,6 +69,8 @@ extern int string_strcmp_ignore_chars (const char *string1,
|
|||||||
const char *string2,
|
const char *string2,
|
||||||
const char *chars_ignored,
|
const char *chars_ignored,
|
||||||
int case_sensitive);
|
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 const char *string_strcasestr (const char *string, const char *search);
|
||||||
extern int string_match (const char *string, const char *mask,
|
extern int string_match (const char *string, const char *mask,
|
||||||
int case_sensitive);
|
int case_sensitive);
|
||||||
|
|||||||
+7
-9
@@ -104,7 +104,7 @@ struct t_rlimit_resource rlimit_resource[] =
|
|||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Sets resource limit.
|
* Set resource limit.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifdef HAVE_SYS_RESOURCE_H
|
#ifdef HAVE_SYS_RESOURCE_H
|
||||||
@@ -174,14 +174,14 @@ sys_setrlimit_resource (const char *resource_name, long long limit)
|
|||||||
#endif /* HAVE_SYS_RESOURCE_H */
|
#endif /* HAVE_SYS_RESOURCE_H */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Sets resource limits using value of option "weechat.startup.sys_rlimit".
|
* Set resource limits using value of option "weechat.startup.sys_rlimit".
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void
|
void
|
||||||
sys_setrlimit (void)
|
sys_setrlimit (void)
|
||||||
{
|
{
|
||||||
#ifdef HAVE_SYS_RESOURCE_H
|
#ifdef HAVE_SYS_RESOURCE_H
|
||||||
char **items, *pos, *error;
|
char **items, *pos;
|
||||||
int num_items, i;
|
int num_items, i;
|
||||||
long long number;
|
long long number;
|
||||||
|
|
||||||
@@ -198,9 +198,7 @@ sys_setrlimit (void)
|
|||||||
if (pos)
|
if (pos)
|
||||||
{
|
{
|
||||||
pos[0] = '\0';
|
pos[0] = '\0';
|
||||||
error = NULL;
|
if (util_parse_longlong (pos + 1, 10, &number) && (number >= -1))
|
||||||
number = strtoll (pos + 1, &error, 10);
|
|
||||||
if (error && !error[0])
|
|
||||||
{
|
{
|
||||||
sys_setrlimit_resource (items[i], number);
|
sys_setrlimit_resource (items[i], number);
|
||||||
}
|
}
|
||||||
@@ -220,7 +218,7 @@ sys_setrlimit (void)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Displays resource limits.
|
* Display resource limits.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void
|
void
|
||||||
@@ -278,7 +276,7 @@ sys_display_rlimit (void)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Displays resource usage.
|
* Display resource usage.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void
|
void
|
||||||
@@ -346,7 +344,7 @@ sys_display_rusage (void)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Calls waitpid() to acknowledge the end of forked processes, thus preventing
|
* Call waitpid() to acknowledge the end of forked processes, thus preventing
|
||||||
* them to become zombies.
|
* them to become zombies.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,141 @@
|
|||||||
|
/*
|
||||||
|
* SPDX-FileCopyrightText: 2026 Sébastien Helleu <flashcode@flashtux.org>
|
||||||
|
*
|
||||||
|
* SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
|
*
|
||||||
|
* This file is part of WeeChat, the extensible chat client.
|
||||||
|
*
|
||||||
|
* WeeChat is free software; you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation; either version 3 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* WeeChat is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with WeeChat. If not, see <https://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/* Built-in theme registrations (core contribution only). */
|
||||||
|
|
||||||
|
#ifdef HAVE_CONFIG_H
|
||||||
|
#include "config.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#include <stddef.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <string.h>
|
||||||
|
|
||||||
|
#include "weechat.h"
|
||||||
|
#include "core-hashtable.h"
|
||||||
|
#include "core-theme.h"
|
||||||
|
#include "../plugins/weechat-plugin.h"
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Core overrides for the "light" theme: option values tuned for a
|
||||||
|
* light-background terminal. Order is by full option name to keep diffs
|
||||||
|
* stable; the list ends with a NULL sentinel.
|
||||||
|
*/
|
||||||
|
|
||||||
|
struct t_theme_builtin_entry
|
||||||
|
{
|
||||||
|
const char *option;
|
||||||
|
const char *value;
|
||||||
|
};
|
||||||
|
|
||||||
|
struct t_theme_builtin_entry theme_builtin_light_core[] =
|
||||||
|
{
|
||||||
|
{ "weechat.bar.status.color_bg", "254" },
|
||||||
|
{ "weechat.bar.status.color_bg_inactive", "default" },
|
||||||
|
{ "weechat.bar.title.color_bg", "254" },
|
||||||
|
{ "weechat.bar.title.color_bg_inactive", "default" },
|
||||||
|
{ "weechat.color.bar_more", "magenta" },
|
||||||
|
{ "weechat.color.chat_buffer", "default" },
|
||||||
|
{ "weechat.color.chat_channel", "default" },
|
||||||
|
{ "weechat.color.chat_nick", "cyan" },
|
||||||
|
{ "weechat.color.chat_nick_colors",
|
||||||
|
"red,green,brown,blue,magenta,cyan,lightred,lightblue,lightmagenta,"
|
||||||
|
"20,28,52,57,58,61,63,88,94,128,166,202" },
|
||||||
|
{ "weechat.color.chat_nick_self", "default" },
|
||||||
|
{ "weechat.color.chat_prefix_action", "default" },
|
||||||
|
{ "weechat.color.chat_prefix_error", "94" },
|
||||||
|
{ "weechat.color.chat_prefix_join", "green" },
|
||||||
|
{ "weechat.color.chat_prefix_more", "magenta" },
|
||||||
|
{ "weechat.color.chat_prefix_quit", "red" },
|
||||||
|
{ "weechat.color.chat_prefix_suffix", "251" },
|
||||||
|
{ "weechat.color.chat_server", "94" },
|
||||||
|
{ "weechat.color.chat_text_found_bg", "magenta" },
|
||||||
|
{ "weechat.color.chat_time_delimiters", "94" },
|
||||||
|
{ "weechat.color.eval_syntax_colors",
|
||||||
|
"green,red,blue,magenta,94,cyan" },
|
||||||
|
{ "weechat.color.input_actions", "28" },
|
||||||
|
{ "weechat.color.item_away", "brown" },
|
||||||
|
{ "weechat.color.separator", "251" },
|
||||||
|
{ "weechat.color.status_count_msg", "94" },
|
||||||
|
{ "weechat.color.status_data_highlight", "93" },
|
||||||
|
{ "weechat.color.status_data_msg", "94" },
|
||||||
|
{ "weechat.color.status_data_private", "green" },
|
||||||
|
{ "weechat.color.status_more", "94" },
|
||||||
|
{ "weechat.color.status_mouse", "green" },
|
||||||
|
{ "weechat.color.status_name", "default" },
|
||||||
|
{ "weechat.color.status_name_insecure", "202" },
|
||||||
|
{ "weechat.color.status_name_tls", "default" },
|
||||||
|
{ "weechat.color.status_number", "28" },
|
||||||
|
{ NULL, NULL },
|
||||||
|
};
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Build a hashtable of overrides from a NULL-terminated table and
|
||||||
|
* register it under the given theme name, with an optional description.
|
||||||
|
*/
|
||||||
|
|
||||||
|
void
|
||||||
|
theme_builtin_register_entries (const char *name,
|
||||||
|
const char *description,
|
||||||
|
const struct t_theme_builtin_entry *entries)
|
||||||
|
{
|
||||||
|
struct t_hashtable *overrides;
|
||||||
|
struct t_theme *theme;
|
||||||
|
int i;
|
||||||
|
|
||||||
|
if (!name || !entries)
|
||||||
|
return;
|
||||||
|
|
||||||
|
overrides = hashtable_new (32,
|
||||||
|
WEECHAT_HASHTABLE_STRING,
|
||||||
|
WEECHAT_HASHTABLE_STRING,
|
||||||
|
NULL, NULL);
|
||||||
|
if (!overrides)
|
||||||
|
return;
|
||||||
|
|
||||||
|
for (i = 0; entries[i].option; i++)
|
||||||
|
hashtable_set (overrides, entries[i].option, entries[i].value);
|
||||||
|
|
||||||
|
theme = theme_register (NULL, NULL, name, overrides);
|
||||||
|
if (theme && description)
|
||||||
|
{
|
||||||
|
free (theme->description);
|
||||||
|
theme->description = strdup (description);
|
||||||
|
}
|
||||||
|
|
||||||
|
hashtable_free (overrides);
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Register all built-in themes contributed by core. Called once from
|
||||||
|
* weechat_init; plugins/scripts add their own contributions later via
|
||||||
|
* weechat_theme_register.
|
||||||
|
*/
|
||||||
|
|
||||||
|
void
|
||||||
|
theme_builtin_init (void)
|
||||||
|
{
|
||||||
|
theme_builtin_register_entries (
|
||||||
|
"light",
|
||||||
|
_("WeeChat default theme for light-background terminals"),
|
||||||
|
theme_builtin_light_core);
|
||||||
|
}
|
||||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,92 @@
|
|||||||
|
/*
|
||||||
|
* SPDX-FileCopyrightText: 2026 Sébastien Helleu <flashcode@flashtux.org>
|
||||||
|
*
|
||||||
|
* SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
|
*
|
||||||
|
* This file is part of WeeChat, the extensible chat client.
|
||||||
|
*
|
||||||
|
* WeeChat is free software; you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation; either version 3 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* WeeChat is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with WeeChat. If not, see <https://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef WEECHAT_THEME_H
|
||||||
|
#define WEECHAT_THEME_H
|
||||||
|
|
||||||
|
struct t_hashtable;
|
||||||
|
struct t_arraylist;
|
||||||
|
struct t_weechat_plugin;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* A contribution is one (owner, overrides) pair attached to a theme.
|
||||||
|
* "owner" is identified by a (plugin, script) pair:
|
||||||
|
* - plugin == NULL && script == NULL => core
|
||||||
|
* - plugin != NULL && script == NULL => plugin (e.g. irc, fset)
|
||||||
|
* - plugin != NULL && script != NULL => individual script under that
|
||||||
|
* script-language plugin
|
||||||
|
*/
|
||||||
|
struct t_theme_contribution
|
||||||
|
{
|
||||||
|
struct t_weechat_plugin *plugin;
|
||||||
|
const void *script;
|
||||||
|
struct t_hashtable *overrides; /* full_option_name -> value */
|
||||||
|
struct t_theme_contribution *prev_contribution;
|
||||||
|
struct t_theme_contribution *next_contribution;
|
||||||
|
};
|
||||||
|
|
||||||
|
struct t_theme
|
||||||
|
{
|
||||||
|
char *name; /* "light", "solarized", ... */
|
||||||
|
char *description; /* free-form text */
|
||||||
|
char *date; /* "YYYY-MM-DD HH:MM:SS" */
|
||||||
|
char *weechat_version; /* version at registration time */
|
||||||
|
struct t_theme_contribution *contributions;
|
||||||
|
struct t_theme_contribution *last_contribution;
|
||||||
|
struct t_theme *prev_theme;
|
||||||
|
struct t_theme *next_theme;
|
||||||
|
};
|
||||||
|
|
||||||
|
extern struct t_theme *themes;
|
||||||
|
extern struct t_theme *last_theme;
|
||||||
|
extern int theme_applying; /* gate for config_change_color */
|
||||||
|
|
||||||
|
extern struct t_theme *theme_search (const char *name);
|
||||||
|
extern struct t_theme *theme_register (struct t_weechat_plugin *plugin,
|
||||||
|
const void *script,
|
||||||
|
const char *name,
|
||||||
|
struct t_hashtable *overrides);
|
||||||
|
extern int theme_overrides_count (struct t_theme *theme);
|
||||||
|
extern const char *theme_get_override (struct t_theme *theme,
|
||||||
|
const char *option_name);
|
||||||
|
extern struct t_arraylist *theme_list (void);
|
||||||
|
extern int theme_apply (const char *name);
|
||||||
|
extern int theme_reset (void);
|
||||||
|
extern int theme_save (const char *name);
|
||||||
|
extern int theme_rename (const char *old_name, const char *new_name);
|
||||||
|
extern int theme_delete (const char *name);
|
||||||
|
extern char *theme_make_backup (void);
|
||||||
|
extern char *theme_user_file_path (const char *name);
|
||||||
|
extern struct t_theme *theme_file_parse (const char *path);
|
||||||
|
extern void theme_free (struct t_theme *theme);
|
||||||
|
|
||||||
|
/* lifecycle: drop all contributions owned by a plugin or script */
|
||||||
|
extern void theme_unregister_plugin (struct t_weechat_plugin *plugin);
|
||||||
|
extern void theme_unregister_script (struct t_weechat_plugin *plugin,
|
||||||
|
const void *script);
|
||||||
|
|
||||||
|
extern void theme_init (void);
|
||||||
|
extern void theme_end (void);
|
||||||
|
|
||||||
|
/* implemented in core-theme-builtin.c */
|
||||||
|
extern void theme_builtin_init (void);
|
||||||
|
|
||||||
|
#endif /* WEECHAT_THEME_H */
|
||||||
@@ -48,7 +48,7 @@ struct t_upgrade_file *last_upgrade_file = NULL;
|
|||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Displays an error with upgrade.
|
* Display an error with upgrade.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void
|
void
|
||||||
@@ -85,9 +85,9 @@ upgrade_file_error (struct t_upgrade_file *upgrade_file, char *message1,
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Writes an integer value in upgrade file.
|
* Write an integer value in upgrade file.
|
||||||
*
|
*
|
||||||
* Returns:
|
* Return:
|
||||||
* 1: OK
|
* 1: OK
|
||||||
* 0: error
|
* 0: error
|
||||||
*/
|
*/
|
||||||
@@ -102,9 +102,9 @@ upgrade_file_write_integer (struct t_upgrade_file *upgrade_file, int value)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Writes a time value in upgrade file.
|
* Write a time value in upgrade file.
|
||||||
*
|
*
|
||||||
* Returns:
|
* Return:
|
||||||
* 1: OK
|
* 1: OK
|
||||||
* 0: error
|
* 0: error
|
||||||
*/
|
*/
|
||||||
@@ -119,9 +119,9 @@ upgrade_file_write_time (struct t_upgrade_file *upgrade_file, time_t date)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Writes a string in upgrade file.
|
* Write a string in upgrade file.
|
||||||
*
|
*
|
||||||
* Returns:
|
* Return:
|
||||||
* 1: OK
|
* 1: OK
|
||||||
* 0: error
|
* 0: error
|
||||||
*/
|
*/
|
||||||
@@ -150,9 +150,9 @@ upgrade_file_write_string (struct t_upgrade_file *upgrade_file,
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Writes a buffer in upgrade file.
|
* Write a buffer in upgrade file.
|
||||||
*
|
*
|
||||||
* Returns:
|
* Return:
|
||||||
* 1: OK
|
* 1: OK
|
||||||
* 0: error
|
* 0: error
|
||||||
*/
|
*/
|
||||||
@@ -178,11 +178,11 @@ upgrade_file_write_buffer (struct t_upgrade_file *upgrade_file, void *pointer,
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Creates an upgrade file.
|
* Create an upgrade file.
|
||||||
*
|
*
|
||||||
* If write == 1, then opens in write mode, otherwise in read mode.
|
* If write == 1, then opens in write mode, otherwise in read mode.
|
||||||
*
|
*
|
||||||
* Returns pointer to new upgrade file, NULL if error.
|
* Return pointer to new upgrade file, NULL if error.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
struct t_upgrade_file *
|
struct t_upgrade_file *
|
||||||
@@ -255,9 +255,9 @@ upgrade_file_new (const char *filename,
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Writes an object in upgrade file.
|
* Write an object in upgrade file.
|
||||||
*
|
*
|
||||||
* Returns:
|
* Return:
|
||||||
* 1: OK
|
* 1: OK
|
||||||
* 0: error
|
* 0: error
|
||||||
*/
|
*/
|
||||||
@@ -414,9 +414,9 @@ upgrade_file_write_object (struct t_upgrade_file *upgrade_file, int object_id,
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Reads an integer in upgrade file.
|
* Read an integer in upgrade file.
|
||||||
*
|
*
|
||||||
* Returns:
|
* Return:
|
||||||
* 1: OK
|
* 1: OK
|
||||||
* 0: error
|
* 0: error
|
||||||
*/
|
*/
|
||||||
@@ -441,9 +441,9 @@ upgrade_file_read_integer (struct t_upgrade_file *upgrade_file, int *value)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Reads a string in upgrade file.
|
* Read a string in upgrade file.
|
||||||
*
|
*
|
||||||
* Returns:
|
* Return:
|
||||||
* 1: OK
|
* 1: OK
|
||||||
* 0: error
|
* 0: error
|
||||||
*/
|
*/
|
||||||
@@ -491,9 +491,9 @@ upgrade_file_read_string (struct t_upgrade_file *upgrade_file, char **string)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Reads a buffer in upgrade file.
|
* Read a buffer in upgrade file.
|
||||||
*
|
*
|
||||||
* Returns:
|
* Return:
|
||||||
* 1: OK
|
* 1: OK
|
||||||
* 0: error
|
* 0: error
|
||||||
*/
|
*/
|
||||||
@@ -537,9 +537,9 @@ upgrade_file_read_buffer (struct t_upgrade_file *upgrade_file,
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Reads time in upgrade file.
|
* Read time in upgrade file.
|
||||||
*
|
*
|
||||||
* Returns:
|
* Return:
|
||||||
* 1: OK
|
* 1: OK
|
||||||
* 0: error
|
* 0: error
|
||||||
*/
|
*/
|
||||||
@@ -565,9 +565,9 @@ upgrade_file_read_time (struct t_upgrade_file *upgrade_file, time_t *time)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Reads an object in upgrade file and calls read callback.
|
* Read an object in upgrade file and calls read callback.
|
||||||
*
|
*
|
||||||
* Returns:
|
* Return:
|
||||||
* 1: OK
|
* 1: OK
|
||||||
* 0: error
|
* 0: error
|
||||||
*/
|
*/
|
||||||
@@ -600,7 +600,7 @@ upgrade_file_read_object (struct t_upgrade_file *upgrade_file)
|
|||||||
|
|
||||||
if (type != UPGRADE_TYPE_OBJECT_START)
|
if (type != UPGRADE_TYPE_OBJECT_START)
|
||||||
{
|
{
|
||||||
UPGRADE_ERROR(_("read - bad object type ('object start' expected)"), "");
|
UPGRADE_ERROR(_("read - bad object type (\"object start\" expected)"), "");
|
||||||
goto end;
|
goto end;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -716,9 +716,9 @@ end:
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Reads an upgrade file.
|
* Read an upgrade file.
|
||||||
*
|
*
|
||||||
* Returns:
|
* Return:
|
||||||
* 1: OK
|
* 1: OK
|
||||||
* 0: error
|
* 0: error
|
||||||
*/
|
*/
|
||||||
@@ -758,7 +758,7 @@ upgrade_file_read (struct t_upgrade_file *upgrade_file)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Closes and frees an upgrade file.
|
* Close and frees an upgrade file.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void
|
void
|
||||||
|
|||||||
+26
-31
@@ -59,10 +59,10 @@ struct t_gui_layout *upgrade_layout = NULL;
|
|||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Saves history in WeeChat upgrade file (from last to first, to restore it in
|
* Save history in WeeChat upgrade file (from last to first, to restore it in
|
||||||
* good order).
|
* good order).
|
||||||
*
|
*
|
||||||
* Returns:
|
* Return:
|
||||||
* 1: OK
|
* 1: OK
|
||||||
* 0: error
|
* 0: error
|
||||||
*/
|
*/
|
||||||
@@ -113,9 +113,9 @@ upgrade_weechat_save_history (struct t_upgrade_file *upgrade_file,
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Saves buffers in WeeChat upgrade file.
|
* Save buffers in WeeChat upgrade file.
|
||||||
*
|
*
|
||||||
* Returns:
|
* Return:
|
||||||
* 1: OK
|
* 1: OK
|
||||||
* 0: error
|
* 0: error
|
||||||
*/
|
*/
|
||||||
@@ -202,9 +202,9 @@ upgrade_weechat_save_buffers (struct t_upgrade_file *upgrade_file)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Saves miscellaneous info in WeeChat upgrade file.
|
* Save miscellaneous info in WeeChat upgrade file.
|
||||||
*
|
*
|
||||||
* Returns:
|
* Return:
|
||||||
* 1: OK
|
* 1: OK
|
||||||
* 0: error
|
* 0: error
|
||||||
*/
|
*/
|
||||||
@@ -251,9 +251,9 @@ upgrade_weechat_save_misc (struct t_upgrade_file *upgrade_file)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Saves hotlist in WeeChat upgrade file.
|
* Save hotlist in WeeChat upgrade file.
|
||||||
*
|
*
|
||||||
* Returns:
|
* Return:
|
||||||
* 1: OK
|
* 1: OK
|
||||||
* 0: error
|
* 0: error
|
||||||
*/
|
*/
|
||||||
@@ -288,9 +288,9 @@ upgrade_weechat_save_hotlist (struct t_upgrade_file *upgrade_file)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Saves tree with layout for windows in WeeChat upgrade file.
|
* Save tree with layout for windows in WeeChat upgrade file.
|
||||||
*
|
*
|
||||||
* Returns:
|
* Return:
|
||||||
* 1: OK
|
* 1: OK
|
||||||
* 0: error
|
* 0: error
|
||||||
*/
|
*/
|
||||||
@@ -338,9 +338,9 @@ upgrade_weechat_save_layout_window_tree (struct t_upgrade_file *upgrade_file,
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Saves layout for windows in WeeChat upgrade file.
|
* Save layout for windows in WeeChat upgrade file.
|
||||||
*
|
*
|
||||||
* Returns:
|
* Return:
|
||||||
* 1: OK
|
* 1: OK
|
||||||
* 0: error
|
* 0: error
|
||||||
*/
|
*/
|
||||||
@@ -370,9 +370,9 @@ upgrade_weechat_save_layout_window (struct t_upgrade_file *upgrade_file)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Saves WeeChat upgrade file.
|
* Save WeeChat upgrade file.
|
||||||
*
|
*
|
||||||
* Returns:
|
* Return:
|
||||||
* 1: OK
|
* 1: OK
|
||||||
* 0: error
|
* 0: error
|
||||||
*/
|
*/
|
||||||
@@ -401,7 +401,7 @@ upgrade_weechat_save (void)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Reads a buffer from infolist.
|
* Read a buffer from infolist.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void
|
void
|
||||||
@@ -410,7 +410,7 @@ upgrade_weechat_read_buffer (struct t_infolist *infolist)
|
|||||||
struct t_gui_buffer *ptr_buffer;
|
struct t_gui_buffer *ptr_buffer;
|
||||||
const char *key, *var_name, *name, *plugin_name, *ptr_id;
|
const char *key, *var_name, *name, *plugin_name, *ptr_id;
|
||||||
const char *str;
|
const char *str;
|
||||||
char option_name[64], *option_key, *option_var, *error;
|
char option_name[64], *option_key, *option_var;
|
||||||
int index, main_buffer;
|
int index, main_buffer;
|
||||||
long long id;
|
long long id;
|
||||||
|
|
||||||
@@ -421,9 +421,7 @@ upgrade_weechat_read_buffer (struct t_infolist *infolist)
|
|||||||
ptr_id = infolist_string (infolist, "id");
|
ptr_id = infolist_string (infolist, "id");
|
||||||
if (ptr_id)
|
if (ptr_id)
|
||||||
{
|
{
|
||||||
error = NULL;
|
if (!util_parse_longlong (ptr_id, 10, &id))
|
||||||
id = strtoll (ptr_id, &error, 10);
|
|
||||||
if (!error || error[0])
|
|
||||||
id = -1;
|
id = -1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -647,7 +645,7 @@ upgrade_weechat_read_buffer (struct t_infolist *infolist)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Reads a buffer line from infolist.
|
* Read a buffer line from infolist.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void
|
void
|
||||||
@@ -704,7 +702,7 @@ upgrade_weechat_read_buffer_line (struct t_infolist *infolist)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Reads a nicklist from infolist.
|
* Read a nicklist from infolist.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void
|
void
|
||||||
@@ -712,7 +710,6 @@ upgrade_weechat_read_nicklist (struct t_infolist *infolist)
|
|||||||
{
|
{
|
||||||
struct t_gui_nick_group *ptr_group;
|
struct t_gui_nick_group *ptr_group;
|
||||||
const char *type, *name, *group_name, *ptr_id;
|
const char *type, *name, *group_name, *ptr_id;
|
||||||
char *error;
|
|
||||||
long long id;
|
long long id;
|
||||||
|
|
||||||
if (!upgrade_current_buffer)
|
if (!upgrade_current_buffer)
|
||||||
@@ -731,9 +728,7 @@ upgrade_weechat_read_nicklist (struct t_infolist *infolist)
|
|||||||
ptr_id = infolist_string (infolist, "id");
|
ptr_id = infolist_string (infolist, "id");
|
||||||
if (ptr_id)
|
if (ptr_id)
|
||||||
{
|
{
|
||||||
error = NULL;
|
if (!util_parse_longlong (ptr_id, 10, &id))
|
||||||
id = strtoll (ptr_id, &error, 10);
|
|
||||||
if (!error || error[0])
|
|
||||||
id = -1;
|
id = -1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -781,7 +776,7 @@ upgrade_weechat_read_nicklist (struct t_infolist *infolist)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Reads hotlist from infolist.
|
* Read hotlist from infolist.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void
|
void
|
||||||
@@ -832,7 +827,7 @@ upgrade_weechat_read_hotlist (struct t_infolist *infolist)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Reads WeeChat upgrade file.
|
* Read WeeChat upgrade file.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
int
|
int
|
||||||
@@ -898,9 +893,9 @@ upgrade_weechat_read_cb (const void *pointer, void *data,
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Loads WeeChat upgrade file.
|
* Load WeeChat upgrade file.
|
||||||
*
|
*
|
||||||
* Returns:
|
* Return:
|
||||||
* 1: OK
|
* 1: OK
|
||||||
* 0: error
|
* 0: error
|
||||||
*/
|
*/
|
||||||
@@ -956,7 +951,7 @@ upgrade_weechat_load (void)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Removes a .upgrade file (callback called for each .upgrade file in WeeChat
|
* Remove a .upgrade file (callback called for each .upgrade file in WeeChat
|
||||||
* home directory).
|
* home directory).
|
||||||
*/
|
*/
|
||||||
|
|
||||||
@@ -975,7 +970,7 @@ upgrade_weechat_remove_file_cb (void *data, const char *filename)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Removes *.upgrade files after upgrade and send signal "weechat_upgrade_done".
|
* Remove *.upgrade files after upgrade and send signal "weechat_upgrade_done".
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void
|
void
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user