mirror of
https://github.com/aria2/aria2.git
synced 2025-04-04 21:17:41 +03:00
Compare commits
149 commits
release-1.
...
master
Author | SHA1 | Date | |
---|---|---|---|
|
b519ce04e3 | ||
|
e2eb5f82e2 | ||
|
a6660c6c4b | ||
|
700ec654b2 | ||
|
b63f67d040 | ||
|
bddce8063c | ||
|
392f713ba1 | ||
|
1a4cb1d070 | ||
|
cfa7e9cde0 | ||
|
1be304e90e | ||
|
c13821a103 | ||
|
e950640b4c | ||
|
c78560f6d4 | ||
|
54795dfa34 | ||
|
999a5915b2 | ||
|
a860673c26 | ||
|
3e903cda97 | ||
|
300cb8f9d4 | ||
|
468b8db61b | ||
|
e872577704 | ||
|
a8cb271b04 | ||
|
bd29175cdd | ||
|
4effc39e5a | ||
|
b0b6b14997 | ||
|
218b817071 | ||
|
0aa23a39d9 | ||
|
8a6b75acc7 | ||
|
8c4e138571 | ||
|
5c87f1b7b6 | ||
|
2e65308ca2 | ||
|
02f2d0d847 | ||
|
58d06624d2 | ||
|
35f1e326ec | ||
|
936d64d555 | ||
|
2973186e75 | ||
|
40f45246f4 | ||
|
0d0d606a85 | ||
|
ec899c30cf | ||
|
706d9492f2 | ||
|
89551e7153 | ||
|
08b48dccb6 | ||
|
8cfaceaf43 | ||
|
a6cd75a596 | ||
|
aea080969c | ||
|
bbef0f0492 | ||
|
aa03612397 | ||
|
71f5d1be5f | ||
|
7a490fe497 | ||
|
94725a0371 | ||
|
d066c72a0d | ||
|
3330110caf | ||
|
d607327ea6 | ||
|
df27e60385 | ||
|
1acfd13c35 | ||
|
35a1b0ff1d | ||
|
be6d819488 | ||
|
076dea3896 | ||
|
8718757e6c | ||
|
80d53a9e80 | ||
|
d53735bf49 | ||
|
4fdcd22d69 | ||
|
5047e4a4ab | ||
|
f05deb0cb2 | ||
|
4c250f8a5d | ||
|
1fd0e52c41 | ||
|
c2109a5aca | ||
|
f0015d2175 | ||
|
dfc607ae74 | ||
|
b18d47c60b | ||
|
274e5048cb | ||
|
376a07df00 | ||
|
e2209a8ae1 | ||
|
4352a31e6b | ||
|
506aac6b4e | ||
|
6b50ff403c | ||
|
8907b8355c | ||
|
06e3fdbd48 | ||
|
85142435c6 | ||
|
80534d869f | ||
|
52469aba85 | ||
|
2a809a99cd | ||
|
997efc88bb | ||
|
3a0057257c | ||
|
42b9893463 | ||
|
a02ceeb646 | ||
|
81244a16dd | ||
|
dbbd1bfbf9 | ||
|
e5d9ad2f0b | ||
|
dfdbc22b23 | ||
|
66048398e5 | ||
|
ef28a269ae | ||
|
8956c58d12 | ||
|
ea6d4240d0 | ||
|
13ba7a297f | ||
|
e5bc00d449 | ||
|
8ae5ce5df3 | ||
|
fa2eb95a00 | ||
|
f7b9d0fdd4 | ||
|
5546d73322 | ||
|
385ad3a04c | ||
|
ae5e5fdf73 | ||
|
13c893b34a | ||
|
7e7f549ef1 | ||
|
b642ee8380 | ||
|
a787a80495 | ||
|
40cabe7519 | ||
|
c7a3b6acb1 | ||
|
54af7ad1c5 | ||
|
5436b758b7 | ||
|
3567789325 | ||
|
e5cd195045 | ||
|
f4cbc7bb31 | ||
|
8d5989db22 | ||
|
42038422f6 | ||
|
15a96209cd | ||
|
05f3c47988 | ||
|
182f4f9ca2 | ||
|
a433352b67 | ||
|
190ce569e4 | ||
|
e0ef02d243 | ||
|
73cf6d110d | ||
|
d4b96e24ed | ||
|
31b773de54 | ||
|
2c21331ab6 | ||
|
9e412c9dc6 | ||
|
0065c179ca | ||
|
ba3396f7bb | ||
|
851a74f53e | ||
|
893c096aa6 | ||
|
55f4bc139a | ||
|
998f203288 | ||
|
ba36a38a6c | ||
|
37a7419fed | ||
|
0dcd4e9f29 | ||
|
85733e5980 | ||
|
839dd2caf7 | ||
|
c651d563d0 | ||
|
d8c5f74c1c | ||
|
aaf090d1a6 | ||
|
fee8e41d85 | ||
|
56d1e1146b | ||
|
de99fc170e | ||
|
c546fa492c | ||
|
177939d6ac | ||
|
c197373db7 | ||
|
869aae8264 | ||
|
6c96589244 | ||
|
11fa3e9fe4 | ||
|
b850338c44 |
166 changed files with 3047 additions and 1154 deletions
6
.github/dependabot.yml
vendored
Normal file
6
.github/dependabot.yml
vendored
Normal file
|
@ -0,0 +1,6 @@
|
||||||
|
version: 2
|
||||||
|
updates:
|
||||||
|
- package-ecosystem: "github-actions"
|
||||||
|
directory: "/"
|
||||||
|
schedule:
|
||||||
|
interval: "weekly"
|
24
.github/workflows/android.yml
vendored
Normal file
24
.github/workflows/android.yml
vendored
Normal file
|
@ -0,0 +1,24 @@
|
||||||
|
name: android
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
paths:
|
||||||
|
- Dockerfile.android
|
||||||
|
schedule:
|
||||||
|
- cron: '30 1 * * *'
|
||||||
|
|
||||||
|
permissions: read-all
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
build:
|
||||||
|
runs-on: ubuntu-22.04
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
- name: Set up Docker Buildx
|
||||||
|
uses: docker/setup-buildx-action@v3
|
||||||
|
- name: Build
|
||||||
|
uses: docker/build-push-action@v6
|
||||||
|
with:
|
||||||
|
file: Dockerfile.android
|
||||||
|
context: .
|
74
.github/workflows/build.yml
vendored
74
.github/workflows/build.yml
vendored
|
@ -1,23 +1,32 @@
|
||||||
name: build
|
name: build
|
||||||
|
|
||||||
on: push
|
on: [push, pull_request]
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
build:
|
build:
|
||||||
runs-on: ${{ matrix.os }}
|
|
||||||
|
|
||||||
strategy:
|
strategy:
|
||||||
matrix:
|
matrix:
|
||||||
os: [ubuntu-20.04, macos-10.15]
|
os: [ubuntu-22.04, macos-14]
|
||||||
compiler: [gcc, clang]
|
compiler: [gcc, clang]
|
||||||
|
crypto: [openssl, gnutls]
|
||||||
|
bittorrent: [with-bt, without-bt]
|
||||||
|
exclude:
|
||||||
|
- os: macos-14
|
||||||
|
crypto: gnutls
|
||||||
|
- crypto: openssl
|
||||||
|
bittorrent: without-bt
|
||||||
|
|
||||||
|
runs-on: ${{ matrix.os }}
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v2
|
- uses: actions/checkout@v4
|
||||||
- name: Linux setup
|
- name: Linux setup
|
||||||
if: runner.os == 'Linux'
|
if: runner.os == 'Linux'
|
||||||
run: |
|
run: |
|
||||||
|
sudo apt-get update
|
||||||
sudo apt-get install \
|
sudo apt-get install \
|
||||||
g++-8 \
|
g++-12 \
|
||||||
|
clang-15 \
|
||||||
autoconf \
|
autoconf \
|
||||||
automake \
|
automake \
|
||||||
autotools-dev \
|
autotools-dev \
|
||||||
|
@ -25,6 +34,7 @@ jobs:
|
||||||
libtool \
|
libtool \
|
||||||
pkg-config \
|
pkg-config \
|
||||||
libssl-dev \
|
libssl-dev \
|
||||||
|
libgnutls28-dev \
|
||||||
libc-ares-dev \
|
libc-ares-dev \
|
||||||
zlib1g-dev \
|
zlib1g-dev \
|
||||||
libsqlite3-dev \
|
libsqlite3-dev \
|
||||||
|
@ -35,32 +45,58 @@ jobs:
|
||||||
run: |
|
run: |
|
||||||
brew install cppunit gettext openssl libssh2 c-ares sqlite3 \
|
brew install cppunit gettext openssl libssh2 c-ares sqlite3 \
|
||||||
autoconf automake pkg-config libtool
|
autoconf automake pkg-config libtool
|
||||||
- name: Setup clang
|
- name: Setup clang (Linux)
|
||||||
if: matrix.compiler == 'clang'
|
if: runner.os == 'Linux' && matrix.compiler == 'clang'
|
||||||
|
run: |
|
||||||
|
echo 'CC=clang-15' >> $GITHUB_ENV
|
||||||
|
echo 'CXX=clang++-15' >> $GITHUB_ENV
|
||||||
|
- name: Setup clang (MacOS)
|
||||||
|
if: runner.os == 'macOS' && matrix.compiler == 'clang'
|
||||||
run: |
|
run: |
|
||||||
echo 'CC=clang' >> $GITHUB_ENV
|
echo 'CC=clang' >> $GITHUB_ENV
|
||||||
echo 'CXX=clang++' >> $GITHUB_ENV
|
echo 'CXX=clang++' >> $GITHUB_ENV
|
||||||
- name: Setup gcc
|
- name: Setup gcc (Linux)
|
||||||
if: runner.os == 'Linux' && matrix.compiler == 'gcc'
|
if: runner.os == 'Linux' && matrix.compiler == 'gcc'
|
||||||
run: |
|
run: |
|
||||||
echo 'CC=gcc-8' >> $GITHUB_ENV
|
echo 'CC=gcc-12' >> $GITHUB_ENV
|
||||||
echo 'CXX=g++-8' >> $GITHUB_ENV
|
echo 'CXX=g++-12' >> $GITHUB_ENV
|
||||||
|
- name: Setup gcc (MacOS)
|
||||||
|
if: runner.os == 'macOS' && matrix.compiler == 'gcc'
|
||||||
|
run: |
|
||||||
|
echo 'CC=gcc' >> $GITHUB_ENV
|
||||||
|
echo 'CXX=g++' >> $GITHUB_ENV
|
||||||
- name: Libtool
|
- name: Libtool
|
||||||
run: |
|
run: |
|
||||||
autoreconf -i
|
autoreconf -i
|
||||||
- name: Configure autotools (Linux)
|
- name: Setup compiler flags
|
||||||
if: runner.os == 'Linux'
|
|
||||||
run: |
|
run: |
|
||||||
./configure \
|
asanflags="-fsanitize=address,undefined -fno-sanitize-recover=undefined"
|
||||||
CPPFLAGS="-fsanitize=address" LDFLAGS="-fsanitize=address"
|
|
||||||
|
CPPFLAGS="$asanflags -g3"
|
||||||
|
LDFLAGS="$asanflags"
|
||||||
|
|
||||||
|
echo 'CPPFLAGS='"$CPPFLAGS" >> $GITHUB_ENV
|
||||||
|
echo 'LDFLAGS='"$LDFLAGS" >> $GITHUB_ENV
|
||||||
|
- name: Disable BitTorrent
|
||||||
|
if: matrix.bittorrent == 'without-bt'
|
||||||
|
run: |
|
||||||
|
FEATURE_FLAGS="$FEATURE_FLAGS --disable-bittorrent"
|
||||||
|
|
||||||
|
echo 'FEATURE_FLAGS='"$FEATURE_FLAGS" >> $GITHUB_ENV
|
||||||
|
- name: Configure autotools (Linux, gnutls)
|
||||||
|
if: runner.os == 'Linux' && matrix.crypto == 'gnutls'
|
||||||
|
run: |
|
||||||
|
./configure --with-gnutls --without-openssl $FEATURE_FLAGS
|
||||||
|
- name: Configure autotools (Linux, openssl)
|
||||||
|
if: runner.os == 'Linux' && matrix.crypto == 'openssl'
|
||||||
|
run: |
|
||||||
|
./configure --without-gnutls --with-openssl $FEATURE_FLAGS
|
||||||
- name: Configure autotools (macOS)
|
- name: Configure autotools (macOS)
|
||||||
if: runner.os == 'macOS'
|
if: runner.os == 'macOS'
|
||||||
run: |
|
run: |
|
||||||
./configure \
|
./configure \
|
||||||
--without-openssl --without-gnutls --with-appletls \
|
--without-openssl --without-gnutls --with-appletls \
|
||||||
--disable-nls \
|
--disable-nls
|
||||||
CPPFLAGS="-fsanitize=address" LDFLAGS="-fsanitize=address"
|
|
||||||
- name: Build aria2
|
- name: Build aria2
|
||||||
run: |
|
run: |
|
||||||
make
|
make -j"$(nproc 2> /dev/null || sysctl -n hw.ncpu)" check
|
||||||
make check
|
|
||||||
|
|
11
AUTHORS
11
AUTHORS
|
@ -8,6 +8,7 @@ The aria2 contributor's list extracted from commit logs [1]:
|
||||||
|
|
||||||
103yiran
|
103yiran
|
||||||
Alexander Amanuel
|
Alexander Amanuel
|
||||||
|
Alexander Egorenkov
|
||||||
Ali MJ Al-Nasrawy
|
Ali MJ Al-Nasrawy
|
||||||
Anthony Bryan
|
Anthony Bryan
|
||||||
Artur Petrov
|
Artur Petrov
|
||||||
|
@ -15,10 +16,14 @@ Athmane Madjoudj
|
||||||
Ben Chaney
|
Ben Chaney
|
||||||
Char
|
Char
|
||||||
Cristian Rodríguez
|
Cristian Rodríguez
|
||||||
|
Dan Church
|
||||||
Dan Fandrich
|
Dan Fandrich
|
||||||
David Macek
|
David Macek
|
||||||
|
Emmanuel Engelhart
|
||||||
|
FH0
|
||||||
Florian Gamböck
|
Florian Gamböck
|
||||||
Fredrik Fornwall
|
Fredrik Fornwall
|
||||||
|
Hernan Martinez
|
||||||
ITriskTI
|
ITriskTI
|
||||||
Igor Khomyakov
|
Igor Khomyakov
|
||||||
Jarda Snajdr
|
Jarda Snajdr
|
||||||
|
@ -30,9 +35,11 @@ Michał Górny
|
||||||
Michał Leśniewski
|
Michał Leśniewski
|
||||||
Mingye Wang
|
Mingye Wang
|
||||||
Natanael Copa
|
Natanael Copa
|
||||||
|
Nikita Ofitserov
|
||||||
Nils Maier
|
Nils Maier
|
||||||
ORiON-
|
ORiON-
|
||||||
ReadmeCritic
|
ReadmeCritic
|
||||||
|
Richard Nias
|
||||||
Rosen Penev
|
Rosen Penev
|
||||||
Ross Smith II
|
Ross Smith II
|
||||||
Ryan Steinmetz
|
Ryan Steinmetz
|
||||||
|
@ -46,8 +53,10 @@ Torbjörn Lönnemark
|
||||||
Tse Kit Yam
|
Tse Kit Yam
|
||||||
Vasilij Schneidermann
|
Vasilij Schneidermann
|
||||||
Zoltan Toth-Czifra
|
Zoltan Toth-Czifra
|
||||||
|
a1346054
|
||||||
amtlib-dot-dll
|
amtlib-dot-dll
|
||||||
c3mb0
|
c3mb0
|
||||||
|
carsonzhu
|
||||||
diadistis
|
diadistis
|
||||||
eric1932
|
eric1932
|
||||||
geetam
|
geetam
|
||||||
|
@ -59,11 +68,13 @@ luokar
|
||||||
mozillazg
|
mozillazg
|
||||||
multisnow
|
multisnow
|
||||||
nicolov
|
nicolov
|
||||||
|
nkh0472
|
||||||
oliviercommelarbre
|
oliviercommelarbre
|
||||||
qweaszxcdf
|
qweaszxcdf
|
||||||
rotor
|
rotor
|
||||||
sleepymac
|
sleepymac
|
||||||
suzker
|
suzker
|
||||||
tcely
|
tcely
|
||||||
|
yixinBC
|
||||||
|
|
||||||
[1] https://gist.github.com/tatsuhiro-t/deaffeb064652104ad11
|
[1] https://gist.github.com/tatsuhiro-t/deaffeb064652104ad11
|
||||||
|
|
41
COPYING
41
COPYING
|
@ -1,12 +1,12 @@
|
||||||
GNU GENERAL PUBLIC LICENSE
|
GNU GENERAL PUBLIC LICENSE
|
||||||
Version 2, June 1991
|
Version 2, June 1991
|
||||||
|
|
||||||
Copyright (C) 1989, 1991 Free Software Foundation, Inc.
|
Copyright (C) 1989, 1991 Free Software Foundation, Inc.,
|
||||||
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||||
Everyone is permitted to copy and distribute verbatim copies
|
Everyone is permitted to copy and distribute verbatim copies
|
||||||
of this license document, but changing it is not allowed.
|
of this license document, but changing it is not allowed.
|
||||||
|
|
||||||
Preamble
|
Preamble
|
||||||
|
|
||||||
The licenses for most software are designed to take away your
|
The licenses for most software are designed to take away your
|
||||||
freedom to share and change it. By contrast, the GNU General Public
|
freedom to share and change it. By contrast, the GNU General Public
|
||||||
|
@ -15,7 +15,7 @@ software--to make sure the software is free for all its users. This
|
||||||
General Public License applies to most of the Free Software
|
General Public License applies to most of the Free Software
|
||||||
Foundation's software and to any other program whose authors commit to
|
Foundation's software and to any other program whose authors commit to
|
||||||
using it. (Some other Free Software Foundation software is covered by
|
using it. (Some other Free Software Foundation software is covered by
|
||||||
the GNU Library General Public License instead.) You can apply it to
|
the GNU Lesser General Public License instead.) You can apply it to
|
||||||
your programs, too.
|
your programs, too.
|
||||||
|
|
||||||
When we speak of free software, we are referring to freedom, not
|
When we speak of free software, we are referring to freedom, not
|
||||||
|
@ -55,8 +55,8 @@ patent must be licensed for everyone's free use or not licensed at all.
|
||||||
|
|
||||||
The precise terms and conditions for copying, distribution and
|
The precise terms and conditions for copying, distribution and
|
||||||
modification follow.
|
modification follow.
|
||||||
|
|
||||||
GNU GENERAL PUBLIC LICENSE
|
GNU GENERAL PUBLIC LICENSE
|
||||||
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
|
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
|
||||||
|
|
||||||
0. This License applies to any program or other work which contains
|
0. This License applies to any program or other work which contains
|
||||||
|
@ -110,7 +110,7 @@ above, provided that you also meet all of these conditions:
|
||||||
License. (Exception: if the Program itself is interactive but
|
License. (Exception: if the Program itself is interactive but
|
||||||
does not normally print such an announcement, your work based on
|
does not normally print such an announcement, your work based on
|
||||||
the Program is not required to print an announcement.)
|
the Program is not required to print an announcement.)
|
||||||
|
|
||||||
These requirements apply to the modified work as a whole. If
|
These requirements apply to the modified work as a whole. If
|
||||||
identifiable sections of that work are not derived from the Program,
|
identifiable sections of that work are not derived from the Program,
|
||||||
and can be reasonably considered independent and separate works in
|
and can be reasonably considered independent and separate works in
|
||||||
|
@ -168,7 +168,7 @@ access to copy from a designated place, then offering equivalent
|
||||||
access to copy the source code from the same place counts as
|
access to copy the source code from the same place counts as
|
||||||
distribution of the source code, even though third parties are not
|
distribution of the source code, even though third parties are not
|
||||||
compelled to copy the source along with the object code.
|
compelled to copy the source along with the object code.
|
||||||
|
|
||||||
4. You may not copy, modify, sublicense, or distribute the Program
|
4. You may not copy, modify, sublicense, or distribute the Program
|
||||||
except as expressly provided under this License. Any attempt
|
except as expressly provided under this License. Any attempt
|
||||||
otherwise to copy, modify, sublicense or distribute the Program is
|
otherwise to copy, modify, sublicense or distribute the Program is
|
||||||
|
@ -225,7 +225,7 @@ impose that choice.
|
||||||
|
|
||||||
This section is intended to make thoroughly clear what is believed to
|
This section is intended to make thoroughly clear what is believed to
|
||||||
be a consequence of the rest of this License.
|
be a consequence of the rest of this License.
|
||||||
|
|
||||||
8. If the distribution and/or use of the Program is restricted in
|
8. If the distribution and/or use of the Program is restricted in
|
||||||
certain countries either by patents or by copyrighted interfaces, the
|
certain countries either by patents or by copyrighted interfaces, the
|
||||||
original copyright holder who places the Program under this License
|
original copyright holder who places the Program under this License
|
||||||
|
@ -255,7 +255,7 @@ make exceptions for this. Our decision will be guided by the two goals
|
||||||
of preserving the free status of all derivatives of our free software and
|
of preserving the free status of all derivatives of our free software and
|
||||||
of promoting the sharing and reuse of software generally.
|
of promoting the sharing and reuse of software generally.
|
||||||
|
|
||||||
NO WARRANTY
|
NO WARRANTY
|
||||||
|
|
||||||
11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
|
11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
|
||||||
FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
|
FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
|
||||||
|
@ -277,9 +277,9 @@ YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
|
||||||
PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
|
PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
|
||||||
POSSIBILITY OF SUCH DAMAGES.
|
POSSIBILITY OF SUCH DAMAGES.
|
||||||
|
|
||||||
END OF TERMS AND CONDITIONS
|
END OF TERMS AND CONDITIONS
|
||||||
|
|
||||||
How to Apply These Terms to Your New Programs
|
How to Apply These Terms to Your New Programs
|
||||||
|
|
||||||
If you develop a new program, and you want it to be of the greatest
|
If you develop a new program, and you want it to be of the greatest
|
||||||
possible use to the public, the best way to achieve this is to make it
|
possible use to the public, the best way to achieve this is to make it
|
||||||
|
@ -303,17 +303,16 @@ the "copyright" line and a pointer to where the full notice is found.
|
||||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
GNU General Public License for more details.
|
GNU General Public License for more details.
|
||||||
|
|
||||||
You should have received a copy of the GNU General Public License
|
You should have received a copy of the GNU General Public License along
|
||||||
along with this program; if not, write to the Free Software
|
with this program; if not, write to the Free Software Foundation, Inc.,
|
||||||
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||||
|
|
||||||
|
|
||||||
Also add information on how to contact you by electronic and paper mail.
|
Also add information on how to contact you by electronic and paper mail.
|
||||||
|
|
||||||
If the program is interactive, make it output a short notice like this
|
If the program is interactive, make it output a short notice like this
|
||||||
when it starts in an interactive mode:
|
when it starts in an interactive mode:
|
||||||
|
|
||||||
Gnomovision version 69, Copyright (C) year name of author
|
Gnomovision version 69, Copyright (C) year name of author
|
||||||
Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
|
Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
|
||||||
This is free software, and you are welcome to redistribute it
|
This is free software, and you are welcome to redistribute it
|
||||||
under certain conditions; type `show c' for details.
|
under certain conditions; type `show c' for details.
|
||||||
|
@ -336,5 +335,5 @@ necessary. Here is a sample; alter the names:
|
||||||
This General Public License does not permit incorporating your program into
|
This General Public License does not permit incorporating your program into
|
||||||
proprietary programs. If your program is a subroutine library, you may
|
proprietary programs. If your program is a subroutine library, you may
|
||||||
consider it more useful to permit linking proprietary applications with the
|
consider it more useful to permit linking proprietary applications with the
|
||||||
library. If this is what you want to do, use the GNU Library General
|
library. If this is what you want to do, use the GNU Lesser General
|
||||||
Public License instead of this License.
|
Public License instead of this License.
|
||||||
|
|
148
Dockerfile.android
Normal file
148
Dockerfile.android
Normal file
|
@ -0,0 +1,148 @@
|
||||||
|
# vim: ft=dockerfile:
|
||||||
|
# Dockerfile to build aria2 android binary
|
||||||
|
#
|
||||||
|
# $ sudo docker build -t aria2-android - < Dockerfile.android
|
||||||
|
#
|
||||||
|
# After successful build, android binary is located under
|
||||||
|
# /root/build/aria2. You can copy the binary using docker cp. For
|
||||||
|
# example, to copy aria2c binary to host file system location
|
||||||
|
# /path/to/dest, do this:
|
||||||
|
#
|
||||||
|
# $ sudo docker run --rm -it -v /path/to/dest:/out aria2-android cp /root/build/aria2/src/aria2c /out
|
||||||
|
|
||||||
|
FROM ubuntu:22.04
|
||||||
|
MAINTAINER Tatsuhiro Tsujikawa
|
||||||
|
|
||||||
|
WORKDIR /root
|
||||||
|
RUN apt-get update && \
|
||||||
|
apt-get install -y --no-install-recommends \
|
||||||
|
unzip bzip2 make binutils autoconf automake autotools-dev autopoint \
|
||||||
|
libtool pkg-config git dpkg-dev curl ca-certificates \
|
||||||
|
python3-docutils && \
|
||||||
|
rm -rf /var/cache/apt/*
|
||||||
|
|
||||||
|
# NDK version
|
||||||
|
ENV NDK_VERSION=r25c
|
||||||
|
ENV NDK=/root/android-ndk-$NDK_VERSION
|
||||||
|
ENV TOOLCHAIN=$NDK/toolchains/llvm/prebuilt/linux-x86_64 \
|
||||||
|
HOST=aarch64-linux-android \
|
||||||
|
API=33
|
||||||
|
ENV AR=$TOOLCHAIN/bin/llvm-ar \
|
||||||
|
CC=$TOOLCHAIN/bin/$HOST$API-clang \
|
||||||
|
CXX=$TOOLCHAIN/bin/$HOST$API-clang++ \
|
||||||
|
LD=$TOOLCHAIN/bin/ld \
|
||||||
|
RANDLIB=$TOOLCHAIN/bin/llvm-ranlib \
|
||||||
|
STRIP=$TOOLCHAIN/bin/llvm-strip \
|
||||||
|
PREFIX=/root/usr/local
|
||||||
|
|
||||||
|
# Download NDK
|
||||||
|
RUN curl -L -O https://dl.google.com/android/repository/android-ndk-$NDK_VERSION-linux.zip && \
|
||||||
|
unzip -q android-ndk-$NDK_VERSION-linux.zip && \
|
||||||
|
rm android-ndk-$NDK_VERSION-linux.zip
|
||||||
|
|
||||||
|
# aria2 version
|
||||||
|
ARG ARIA2_VERSION=master
|
||||||
|
|
||||||
|
# Library versions
|
||||||
|
ENV OPENSSL_VERSION=1.1.1w
|
||||||
|
ENV OPENSSL_ARCHIVE=openssl-$OPENSSL_VERSION.tar.gz
|
||||||
|
ENV OPENSSL_URI=https://www.openssl.org/source/$OPENSSL_ARCHIVE
|
||||||
|
|
||||||
|
ENV LIBEXPAT_VERSION=2.5.0
|
||||||
|
ENV LIBEXPAT_ARCHIVE=expat-$LIBEXPAT_VERSION.tar.bz2
|
||||||
|
ENV LIBEXPAT_URI=https://github.com/libexpat/libexpat/releases/download/R_2_5_0/$LIBEXPAT_ARCHIVE
|
||||||
|
|
||||||
|
ENV ZLIB_VERSION=1.3.1
|
||||||
|
ENV ZLIB_ARCHIVE=zlib-$ZLIB_VERSION.tar.gz
|
||||||
|
ENV ZLIB_URI=https://github.com/madler/zlib/releases/download/v1.3.1/$ZLIB_ARCHIVE
|
||||||
|
|
||||||
|
ENV CARES_VERSION=1.21.0
|
||||||
|
ENV CARES_ARCHIVE=c-ares-$CARES_VERSION.tar.gz
|
||||||
|
ENV CARES_URI=https://github.com/c-ares/c-ares/releases/download/cares-1_21_0/$CARES_ARCHIVE
|
||||||
|
|
||||||
|
ENV LIBSSH2_VERSION=1.11.0
|
||||||
|
ENV LIBSSH2_ARCHIVE=libssh2-$LIBSSH2_VERSION.tar.bz2
|
||||||
|
ENV LIBSSH2_URI=https://libssh2.org/download/$LIBSSH2_ARCHIVE
|
||||||
|
|
||||||
|
# Build OpenSSL
|
||||||
|
WORKDIR /root/build
|
||||||
|
RUN curl -L -O $OPENSSL_URI && tar xf $OPENSSL_ARCHIVE && rm $OPENSSL_ARCHIVE
|
||||||
|
|
||||||
|
WORKDIR /root/build/openssl-$OPENSSL_VERSION
|
||||||
|
RUN export ANDROID_NDK_HOME=$NDK PATH=$TOOLCHAIN/bin:$PATH && \
|
||||||
|
./Configure no-shared --prefix=$PREFIX android-arm64 && \
|
||||||
|
make -j$(nproc) && make install_sw
|
||||||
|
|
||||||
|
# Build libexpat
|
||||||
|
WORKDIR /root/build
|
||||||
|
RUN curl -L -O $LIBEXPAT_URI && tar xf $LIBEXPAT_ARCHIVE && rm $LIBEXPAT_ARCHIVE
|
||||||
|
|
||||||
|
WORKDIR /root/build/expat-$LIBEXPAT_VERSION
|
||||||
|
RUN ./configure \
|
||||||
|
--host=$HOST \
|
||||||
|
--build=`dpkg-architecture -qDEB_BUILD_GNU_TYPE` \
|
||||||
|
--prefix=$PREFIX \
|
||||||
|
--disable-shared && \
|
||||||
|
make -j$(nproc) install
|
||||||
|
|
||||||
|
# Build zlib
|
||||||
|
WORKDIR /root/build
|
||||||
|
RUN curl -L -O $ZLIB_URI && tar xf $ZLIB_ARCHIVE && rm $ZLIB_ARCHIVE
|
||||||
|
|
||||||
|
WORKDIR /root/build/zlib-$ZLIB_VERSION
|
||||||
|
RUN ./configure \
|
||||||
|
--prefix=$PREFIX \
|
||||||
|
--libdir=$PREFIX/lib \
|
||||||
|
--includedir=$PREFIX/include \
|
||||||
|
--static && \
|
||||||
|
make -j$(nproc) install
|
||||||
|
|
||||||
|
# Build c-ares
|
||||||
|
WORKDIR /root/build
|
||||||
|
RUN curl -L -O $CARES_URI && tar xf $CARES_ARCHIVE && rm $CARES_ARCHIVE
|
||||||
|
|
||||||
|
WORKDIR /root/build/c-ares-$CARES_VERSION
|
||||||
|
RUN ./configure \
|
||||||
|
--host=$HOST \
|
||||||
|
--build=`dpkg-architecture -qDEB_BUILD_GNU_TYPE` \
|
||||||
|
--prefix=$PREFIX \
|
||||||
|
--disable-shared && \
|
||||||
|
make -j$(nproc) install
|
||||||
|
|
||||||
|
# Build libssh2
|
||||||
|
WORKDIR /root/build
|
||||||
|
RUN curl -L -O $LIBSSH2_URI && tar xf $LIBSSH2_ARCHIVE && rm $LIBSSH2_ARCHIVE
|
||||||
|
|
||||||
|
WORKDIR /root/build/libssh2-$LIBSSH2_VERSION
|
||||||
|
RUN ./configure \
|
||||||
|
--host=$HOST \
|
||||||
|
--build=`dpkg-architecture -qDEB_BUILD_GNU_TYPE` \
|
||||||
|
--prefix=$PREFIX \
|
||||||
|
--disable-shared && \
|
||||||
|
make -j$(nproc) install
|
||||||
|
|
||||||
|
# Build aria2
|
||||||
|
WORKDIR /root/build
|
||||||
|
RUN git clone -b $ARIA2_VERSION --depth 1 https://github.com/aria2/aria2
|
||||||
|
|
||||||
|
WORKDIR /root/build/aria2
|
||||||
|
RUN autoreconf -i && \
|
||||||
|
./configure \
|
||||||
|
--host=$HOST \
|
||||||
|
--build=`dpkg-architecture -qDEB_BUILD_GNU_TYPE` \
|
||||||
|
--disable-nls \
|
||||||
|
--without-gnutls \
|
||||||
|
--with-openssl \
|
||||||
|
--without-sqlite3 \
|
||||||
|
--without-libxml2 \
|
||||||
|
--with-libexpat \
|
||||||
|
--with-libcares \
|
||||||
|
--with-libz \
|
||||||
|
--with-libssh2 \
|
||||||
|
CXXFLAGS="-Os -g" \
|
||||||
|
CFLAGS="-Os -g" \
|
||||||
|
CPPFLAGS="-fPIE" \
|
||||||
|
LDFLAGS="-fPIE -pie -L$PREFIX/lib -static-libstdc++" \
|
||||||
|
PKG_CONFIG_LIBDIR="$PREFIX/lib/pkgconfig" && \
|
||||||
|
make -j$(nproc) && \
|
||||||
|
$STRIP src/aria2c
|
|
@ -7,16 +7,14 @@
|
||||||
# /aria2/src/aria2c.exe. You can copy the binary using following
|
# /aria2/src/aria2c.exe. You can copy the binary using following
|
||||||
# commands:
|
# commands:
|
||||||
#
|
#
|
||||||
# $ id=$(sudo docker create aria2-mingw)
|
# $ sudo docker run --rm -it -v /path/to/dest:/out aria2-mingw cp /aria2/src/aria2c.exe /out
|
||||||
# $ sudo docker cp $id:/aria2/src/aria2c.exe <dest>
|
|
||||||
# $ sudo docker rm -v $id
|
|
||||||
|
|
||||||
FROM ubuntu:20.04
|
FROM ubuntu:22.04
|
||||||
|
|
||||||
MAINTAINER Tatsuhiro Tsujikawa
|
MAINTAINER Tatsuhiro Tsujikawa
|
||||||
|
|
||||||
# Change HOST to x86_64-w64-mingw32 to build 64-bit binary
|
# Change HOST to x86_64-w64-mingw32 to build 64-bit binary
|
||||||
ENV HOST i686-w64-mingw32
|
ARG HOST=i686-w64-mingw32
|
||||||
|
|
||||||
# It would be better to use nearest ubuntu archive mirror for faster
|
# It would be better to use nearest ubuntu archive mirror for faster
|
||||||
# downloads.
|
# downloads.
|
||||||
|
@ -28,18 +26,18 @@ RUN apt-get update && \
|
||||||
make binutils autoconf automake autotools-dev libtool \
|
make binutils autoconf automake autotools-dev libtool \
|
||||||
patch ca-certificates \
|
patch ca-certificates \
|
||||||
pkg-config git curl dpkg-dev gcc-mingw-w64 g++-mingw-w64 \
|
pkg-config git curl dpkg-dev gcc-mingw-w64 g++-mingw-w64 \
|
||||||
autopoint libcppunit-dev libxml2-dev libgcrypt20-dev lzip
|
autopoint libcppunit-dev libxml2-dev libgcrypt20-dev lzip \
|
||||||
|
python3-docutils
|
||||||
|
|
||||||
RUN curl -L -O https://gmplib.org/download/gmp/gmp-6.2.1.tar.lz && \
|
RUN curl -L -O https://gmplib.org/download/gmp/gmp-6.3.0.tar.xz && \
|
||||||
curl -L -O https://github.com/libexpat/libexpat/releases/download/R_2_4_1/expat-2.4.1.tar.bz2 && \
|
curl -L -O https://github.com/libexpat/libexpat/releases/download/R_2_5_0/expat-2.5.0.tar.bz2 && \
|
||||||
curl -L -O https://www.sqlite.org/2021/sqlite-autoconf-3360000.tar.gz && \
|
curl -L -O https://www.sqlite.org/2023/sqlite-autoconf-3430100.tar.gz && \
|
||||||
curl -L -O http://zlib.net/zlib-1.2.11.tar.gz && \
|
curl -L -O https://github.com/madler/zlib/releases/download/v1.3.1/zlib-1.3.1.tar.gz && \
|
||||||
curl -L -O https://c-ares.haxx.se/download/c-ares-1.17.2.tar.gz && \
|
curl -L -O https://github.com/c-ares/c-ares/releases/download/cares-1_19_1/c-ares-1.19.1.tar.gz && \
|
||||||
curl -L -O https://www.libssh2.org/download/libssh2-1.9.0.tar.gz && \
|
curl -L -O https://libssh2.org/download/libssh2-1.11.0.tar.bz2
|
||||||
curl -L -O https://github.com/libssh2/libssh2/commit/ba149e804ef653cc05ed9803dfc94519ce9328f7.patch
|
|
||||||
|
|
||||||
RUN tar xf gmp-6.2.1.tar.lz && \
|
RUN tar xf gmp-6.3.0.tar.xz && \
|
||||||
cd gmp-6.2.1 && \
|
cd gmp-6.3.0 && \
|
||||||
./configure \
|
./configure \
|
||||||
--disable-shared \
|
--disable-shared \
|
||||||
--enable-static \
|
--enable-static \
|
||||||
|
@ -48,30 +46,30 @@ RUN tar xf gmp-6.2.1.tar.lz && \
|
||||||
--disable-cxx \
|
--disable-cxx \
|
||||||
--enable-fat \
|
--enable-fat \
|
||||||
CFLAGS="-mtune=generic -O2 -g0" && \
|
CFLAGS="-mtune=generic -O2 -g0" && \
|
||||||
make install
|
make -j$(nproc) install
|
||||||
|
|
||||||
RUN tar xf expat-2.4.1.tar.bz2 && \
|
RUN tar xf expat-2.5.0.tar.bz2 && \
|
||||||
cd expat-2.4.1 && \
|
cd expat-2.5.0 && \
|
||||||
./configure \
|
./configure \
|
||||||
--disable-shared \
|
--disable-shared \
|
||||||
--enable-static \
|
--enable-static \
|
||||||
--prefix=/usr/local/$HOST \
|
--prefix=/usr/local/$HOST \
|
||||||
--host=$HOST \
|
--host=$HOST \
|
||||||
--build=`dpkg-architecture -qDEB_BUILD_GNU_TYPE` && \
|
--build=`dpkg-architecture -qDEB_BUILD_GNU_TYPE` && \
|
||||||
make install
|
make -j$(nproc) install
|
||||||
|
|
||||||
RUN tar xf sqlite-autoconf-3360000.tar.gz && \
|
RUN tar xf sqlite-autoconf-3430100.tar.gz && \
|
||||||
cd sqlite-autoconf-3360000 && \
|
cd sqlite-autoconf-3430100 && \
|
||||||
./configure \
|
./configure \
|
||||||
--disable-shared \
|
--disable-shared \
|
||||||
--enable-static \
|
--enable-static \
|
||||||
--prefix=/usr/local/$HOST \
|
--prefix=/usr/local/$HOST \
|
||||||
--host=$HOST \
|
--host=$HOST \
|
||||||
--build=`dpkg-architecture -qDEB_BUILD_GNU_TYPE` && \
|
--build=`dpkg-architecture -qDEB_BUILD_GNU_TYPE` && \
|
||||||
make install
|
make -j$(nproc) install
|
||||||
|
|
||||||
RUN tar xf zlib-1.2.11.tar.gz && \
|
RUN tar xf zlib-1.3.1.tar.gz && \
|
||||||
cd zlib-1.2.11 && \
|
cd zlib-1.3.1 && \
|
||||||
CC=$HOST-gcc \
|
CC=$HOST-gcc \
|
||||||
AR=$HOST-ar \
|
AR=$HOST-ar \
|
||||||
LD=$HOST-ld \
|
LD=$HOST-ld \
|
||||||
|
@ -82,10 +80,10 @@ RUN tar xf zlib-1.2.11.tar.gz && \
|
||||||
--libdir=/usr/local/$HOST/lib \
|
--libdir=/usr/local/$HOST/lib \
|
||||||
--includedir=/usr/local/$HOST/include \
|
--includedir=/usr/local/$HOST/include \
|
||||||
--static && \
|
--static && \
|
||||||
make install
|
make -j$(nproc) install
|
||||||
|
|
||||||
RUN tar xf c-ares-1.17.2.tar.gz && \
|
RUN tar xf c-ares-1.19.1.tar.gz && \
|
||||||
cd c-ares-1.17.2 && \
|
cd c-ares-1.19.1 && \
|
||||||
./configure \
|
./configure \
|
||||||
--disable-shared \
|
--disable-shared \
|
||||||
--enable-static \
|
--enable-static \
|
||||||
|
@ -94,22 +92,23 @@ RUN tar xf c-ares-1.17.2.tar.gz && \
|
||||||
--host=$HOST \
|
--host=$HOST \
|
||||||
--build=`dpkg-architecture -qDEB_BUILD_GNU_TYPE` \
|
--build=`dpkg-architecture -qDEB_BUILD_GNU_TYPE` \
|
||||||
LIBS="-lws2_32" && \
|
LIBS="-lws2_32" && \
|
||||||
make install
|
make -j$(nproc) install
|
||||||
|
|
||||||
RUN tar xf libssh2-1.9.0.tar.gz && \
|
RUN tar xf libssh2-1.11.0.tar.bz2 && \
|
||||||
cd libssh2-1.9.0 && \
|
cd libssh2-1.11.0 && \
|
||||||
patch -p1 < ../ba149e804ef653cc05ed9803dfc94519ce9328f7.patch && \
|
|
||||||
./configure \
|
./configure \
|
||||||
--disable-shared \
|
--disable-shared \
|
||||||
--enable-static \
|
--enable-static \
|
||||||
--prefix=/usr/local/$HOST \
|
--prefix=/usr/local/$HOST \
|
||||||
--host=$HOST \
|
--host=$HOST \
|
||||||
--build=`dpkg-architecture -qDEB_BUILD_GNU_TYPE` \
|
--build=`dpkg-architecture -qDEB_BUILD_GNU_TYPE` \
|
||||||
--without-openssl \
|
|
||||||
--with-wincng \
|
|
||||||
LIBS="-lws2_32" && \
|
LIBS="-lws2_32" && \
|
||||||
make install
|
make -j$(nproc) install
|
||||||
ADD https://api.github.com/repos/aria2/aria2/git/refs/heads/master version.json
|
|
||||||
RUN git clone https://github.com/aria2/aria2 && \
|
ARG ARIA2_VERSION=master
|
||||||
cd aria2 && autoreconf -i && ./mingw-config && make && \
|
ARG ARIA2_REF=refs/heads/master
|
||||||
|
|
||||||
|
ADD https://api.github.com/repos/aria2/aria2/git/$ARIA2_REF version.json
|
||||||
|
RUN git clone -b $ARIA2_VERSION --depth 1 https://github.com/aria2/aria2 && \
|
||||||
|
cd aria2 && autoreconf -i && ./mingw-config && make -j$(nproc) && \
|
||||||
$HOST-strip src/aria2c.exe
|
$HOST-strip src/aria2c.exe
|
||||||
|
|
37
NEWS
37
NEWS
|
@ -1,40 +1,7 @@
|
||||||
aria2 1.36.0
|
aria2 1.37.0
|
||||||
============
|
============
|
||||||
|
|
||||||
Release Note
|
Release Note
|
||||||
------------
|
------------
|
||||||
|
|
||||||
This release fixes several bugs. See Changes for details.
|
See https://github.com/aria2/aria2/releases/tag/release-1.37.0
|
||||||
|
|
||||||
Changes
|
|
||||||
-------
|
|
||||||
|
|
||||||
* Update wslay
|
|
||||||
|
|
||||||
* Bump Windows build dependencies
|
|
||||||
|
|
||||||
* Bump android build dependencies
|
|
||||||
|
|
||||||
* Fix segfault when time_t is 64bit on 32bit arch
|
|
||||||
|
|
||||||
Patch from Natanael Copa
|
|
||||||
|
|
||||||
GH-1666
|
|
||||||
|
|
||||||
* Updates the make_bash_completion script to Python3.
|
|
||||||
|
|
||||||
Patch from sleepymac
|
|
||||||
|
|
||||||
GH-1672
|
|
||||||
|
|
||||||
* Prevent corrupt downloads after app and/or system crash
|
|
||||||
|
|
||||||
Patch from Ali MJ Al-Nasrawy
|
|
||||||
|
|
||||||
GH-1644
|
|
||||||
|
|
||||||
* Reset sessionDownloadLength and sessionUploadLength on download start
|
|
||||||
|
|
||||||
GH-1486
|
|
||||||
|
|
||||||
* AppleTLS: Add TLSv1.3 support
|
|
||||||
|
|
|
@ -44,7 +44,7 @@ The following libraries were statically linked.
|
||||||
|
|
||||||
* openssl 1.1.1k
|
* openssl 1.1.1k
|
||||||
* expat 2.4.1
|
* expat 2.4.1
|
||||||
* zlib 1.2.11
|
* zlib 1.3.1
|
||||||
* c-ares 1.17.2
|
* c-ares 1.17.2
|
||||||
* libssh2 1.9.0
|
* libssh2 1.9.0
|
||||||
|
|
||||||
|
|
19
README.mingw
19
README.mingw
|
@ -3,22 +3,17 @@ aria2 Windows build
|
||||||
|
|
||||||
aria2 Windows build is provided in 2 flavors: 32bit version and 64bit
|
aria2 Windows build is provided in 2 flavors: 32bit version and 64bit
|
||||||
version. The executable was compiled using mingw-w64 cross compiler on
|
version. The executable was compiled using mingw-w64 cross compiler on
|
||||||
Debian Linux.
|
Ubuntu Linux.
|
||||||
|
|
||||||
* gcc-mingw-w64 10.2.1-6+24.2
|
|
||||||
* g++-mingw-w64 10.2.1-6+24.2
|
|
||||||
* binutils-mingw-w64-i686 2.35.2-2+8.11+b3
|
|
||||||
* binutils-mingw-w64-x86-64 2.35.2-2+8.11+b3
|
|
||||||
|
|
||||||
The executable is statically linked, so no extra DLLs are
|
The executable is statically linked, so no extra DLLs are
|
||||||
necessary. The linked libraries are:
|
necessary. The linked libraries are:
|
||||||
|
|
||||||
* gmp 6.2.1
|
* gmp 6.3.0
|
||||||
* expat 2.4.1
|
* expat 2.5.0
|
||||||
* sqlite 3.36.0
|
* sqlite 3.43.1
|
||||||
* zlib 1.2.11
|
* zlib 1.3.1
|
||||||
* c-ares 1.17.2
|
* c-ares 1.19.1
|
||||||
* libssh2 1.9.0 (+ https://github.com/libssh2/libssh2/commit/ba149e804ef653cc05ed9803dfc94519ce9328f7.patch)
|
* libssh2 1.11.0
|
||||||
|
|
||||||
This build has the following difference from the original release:
|
This build has the following difference from the original release:
|
||||||
|
|
||||||
|
|
146
README.rst
146
README.rst
|
@ -20,7 +20,7 @@ chunks of data while downloading a file like BitTorrent.
|
||||||
|
|
||||||
The project page is located at https://aria2.github.io/.
|
The project page is located at https://aria2.github.io/.
|
||||||
|
|
||||||
See `aria2 Online Manual
|
See the `aria2 Online Manual
|
||||||
<https://aria2.github.io/manual/en/html/>`_ (`Russian translation
|
<https://aria2.github.io/manual/en/html/>`_ (`Russian translation
|
||||||
<https://aria2.github.io/manual/ru/html/>`_, `Portuguese
|
<https://aria2.github.io/manual/ru/html/>`_, `Portuguese
|
||||||
translation <https://aria2.github.io/manual/pt/html/>`_) to learn
|
translation <https://aria2.github.io/manual/pt/html/>`_) to learn
|
||||||
|
@ -47,7 +47,7 @@ Here is a list of features:
|
||||||
* Verify peer using given trusted CA certificate in HTTPS
|
* Verify peer using given trusted CA certificate in HTTPS
|
||||||
* Client certificate authentication in HTTPS
|
* Client certificate authentication in HTTPS
|
||||||
* Chunked transfer encoding support
|
* Chunked transfer encoding support
|
||||||
* Load Cookies from file using the Firefox3 format, Chromium/Google Chrome
|
* Load Cookies from the file using the Firefox3 format, Chromium/Google Chrome
|
||||||
and the Mozilla/Firefox
|
and the Mozilla/Firefox
|
||||||
(1.x/2.x)/Netscape format.
|
(1.x/2.x)/Netscape format.
|
||||||
* Save Cookies in the Mozilla/Firefox (1.x/2.x)/Netscape format.
|
* Save Cookies in the Mozilla/Firefox (1.x/2.x)/Netscape format.
|
||||||
|
@ -58,7 +58,7 @@ Here is a list of features:
|
||||||
* BitTorrent extensions: Fast extension, DHT, PEX, MSE/PSE,
|
* BitTorrent extensions: Fast extension, DHT, PEX, MSE/PSE,
|
||||||
Multi-Tracker, UDP tracker
|
Multi-Tracker, UDP tracker
|
||||||
* BitTorrent `WEB-Seeding <http://getright.com/seedtorrent.html>`_.
|
* BitTorrent `WEB-Seeding <http://getright.com/seedtorrent.html>`_.
|
||||||
aria2 requests chunks more than piece size to reduce the request
|
aria2 requests chunk more than piece size to reduce the request
|
||||||
overhead. It also supports pipelined requests with piece size.
|
overhead. It also supports pipelined requests with piece size.
|
||||||
* BitTorrent Local Peer Discovery
|
* BitTorrent Local Peer Discovery
|
||||||
* Rename/change the directory structure of BitTorrent downloads
|
* Rename/change the directory structure of BitTorrent downloads
|
||||||
|
@ -80,17 +80,17 @@ Here is a list of features:
|
||||||
Versioning and release schedule
|
Versioning and release schedule
|
||||||
-------------------------------
|
-------------------------------
|
||||||
|
|
||||||
We use 3 numbers for aria2 version: MAJOR.MINOR.PATCH. We will ship
|
We use 3 numbers for the aria2 version: MAJOR.MINOR.PATCH. We will ship
|
||||||
MINOR update on 15th of every month. We may skip a release if we have
|
MINOR updates on the 15th of every month. We may skip a release if we have
|
||||||
no changes since the last release. The feature and documentation
|
had no changes since the last release. The feature and documentation
|
||||||
freeze happens 10 days before the release day (5th day of the month)
|
freeze happens 10 days before the release day (the 5th day of the month)
|
||||||
for translation teams. We will raise an issue about the upcoming
|
for translation teams. We will raise an issue about the upcoming
|
||||||
release around that day.
|
release around that day.
|
||||||
|
|
||||||
We may release PATCH releases between regular releases if we have
|
We may release PATCH releases between regular releases if we have
|
||||||
security issues.
|
security issues.
|
||||||
|
|
||||||
MAJOR version will stay at 1 for the time being.
|
The MAJOR version will stay at 1 for the time being.
|
||||||
|
|
||||||
How to get source code
|
How to get source code
|
||||||
----------------------
|
----------------------
|
||||||
|
@ -98,11 +98,11 @@ How to get source code
|
||||||
We maintain the source code at Github:
|
We maintain the source code at Github:
|
||||||
https://github.com/aria2/aria2
|
https://github.com/aria2/aria2
|
||||||
|
|
||||||
To get the latest source code, run following command::
|
To get the latest source code, run the following command::
|
||||||
|
|
||||||
$ git clone https://github.com/aria2/aria2.git
|
$ git clone https://github.com/aria2/aria2.git
|
||||||
|
|
||||||
This will create aria2 directory in your current directory and source
|
This will create an aria2 directory in your current directory and source
|
||||||
files are stored there.
|
files are stored there.
|
||||||
|
|
||||||
Dependency
|
Dependency
|
||||||
|
@ -134,8 +134,8 @@ JSON-RPC over WebSocket libnettle or libgcrypt or OpenSSL
|
||||||
|
|
||||||
.. note::
|
.. note::
|
||||||
|
|
||||||
On Apple OSX the OS-level SSL/TLS support will be preferred. Hence
|
On Apple OSX, OS-level SSL/TLS support will be preferred. Hence
|
||||||
neither GnuTLS nor OpenSSL are required on that platform. If you'd
|
neither GnuTLS nor OpenSSL is required on that platform. If you'd
|
||||||
like to disable this behavior, run configure with
|
like to disable this behavior, run configure with
|
||||||
``--without-appletls``.
|
``--without-appletls``.
|
||||||
|
|
||||||
|
@ -143,15 +143,15 @@ JSON-RPC over WebSocket libnettle or libgcrypt or OpenSSL
|
||||||
If you prefer OpenSSL, run configure with ``--without-gnutls``
|
If you prefer OpenSSL, run configure with ``--without-gnutls``
|
||||||
``--with-openssl``.
|
``--with-openssl``.
|
||||||
|
|
||||||
On Windows there is SSL implementation available that is based on
|
On Windows, there is SSL implementation available that is based on
|
||||||
the native Windows SSL capabilities (Schannel) and it will be
|
the native Windows SSL capabilities (Schannel) and it will be
|
||||||
preferred. Hence neither GnuTLS nor OpenSSL are required on that
|
preferred. Hence neither GnuTLS nor OpenSSL is required on that
|
||||||
platform. If you'd like to disable this behavior, run configure
|
platform. If you'd like to disable this behavior, run configure
|
||||||
with ``--without-wintls``.
|
with ``--without-wintls``.
|
||||||
|
|
||||||
.. note::
|
.. note::
|
||||||
|
|
||||||
On Apple OSX the OS-level checksum support will be preferred,
|
On Apple OSX, the OS-level checksum support will be preferred,
|
||||||
unless aria2 is configured with ``--without-appletls``.
|
unless aria2 is configured with ``--without-appletls``.
|
||||||
|
|
||||||
libnettle has precedence over libgcrypt if both libraries are
|
libnettle has precedence over libgcrypt if both libraries are
|
||||||
|
@ -162,7 +162,7 @@ JSON-RPC over WebSocket libnettle or libgcrypt or OpenSSL
|
||||||
If none of the optional dependencies are installed, an internal
|
If none of the optional dependencies are installed, an internal
|
||||||
implementation that only supports md5 and sha1 will be used.
|
implementation that only supports md5 and sha1 will be used.
|
||||||
|
|
||||||
On Windows there is SSL implementation available that is based on
|
On Windows, there is SSL implementation available that is based on
|
||||||
the native Windows capabilities and it will be preferred, unless
|
the native Windows capabilities and it will be preferred, unless
|
||||||
aria2 is configured with ``--without-wintls``.
|
aria2 is configured with ``--without-wintls``.
|
||||||
|
|
||||||
|
@ -179,20 +179,20 @@ You can disable BitTorrent and Metalink support by providing
|
||||||
``--disable-bittorrent`` and ``--disable-metalink`` to the configure
|
``--disable-bittorrent`` and ``--disable-metalink`` to the configure
|
||||||
script respectively.
|
script respectively.
|
||||||
|
|
||||||
In order to enable async DNS support, you need c-ares.
|
To enable async DNS support, you need c-ares.
|
||||||
|
|
||||||
* c-ares: http://c-ares.haxx.se/
|
* c-ares: http://c-ares.haxx.se/
|
||||||
|
|
||||||
How to build
|
How to build
|
||||||
------------
|
------------
|
||||||
|
|
||||||
aria2 is primarily written in C++. Initially it was written based on
|
aria2 is primarily written in C++. Initially, it was written based on
|
||||||
C++98/C++03 standard features. We are now migrating aria2 to C++11
|
C++98/C++03 standard features. We are now migrating aria2 to the C++11
|
||||||
standard. The current source code requires C++11 aware compiler. For
|
standard. The current source code requires a C++11 aware compiler. For
|
||||||
well-known compilers, such as g++ and clang, the ``-std=c++11`` or
|
well-known compilers, such as g++ and clang, the ``-std=c++11`` or
|
||||||
``-std=c++0x`` flag must be supported.
|
``-std=c++0x`` flag must be supported.
|
||||||
|
|
||||||
In order to build aria2 from the source package, you need following
|
To build aria2 from the source package, you need the following
|
||||||
development packages (package name may vary depending on the
|
development packages (package name may vary depending on the
|
||||||
distribution you use):
|
distribution you use):
|
||||||
|
|
||||||
|
@ -223,8 +223,8 @@ You can use libexpat1-dev instead of libxml2-dev:
|
||||||
On Fedora you need the following packages: gcc, gcc-c++, kernel-devel,
|
On Fedora you need the following packages: gcc, gcc-c++, kernel-devel,
|
||||||
libgcrypt-devel, libxml2-devel, openssl-devel, gettext-devel, cppunit
|
libgcrypt-devel, libxml2-devel, openssl-devel, gettext-devel, cppunit
|
||||||
|
|
||||||
If you downloaded source code from git repository, you have to install
|
If you downloaded source code from a git repository, you have to install
|
||||||
following packages to get autoconf macros:
|
the following packages to get autoconf macros:
|
||||||
|
|
||||||
* libxml2-dev
|
* libxml2-dev
|
||||||
* libcppunit-dev
|
* libcppunit-dev
|
||||||
|
@ -234,17 +234,17 @@ following packages to get autoconf macros:
|
||||||
* autopoint
|
* autopoint
|
||||||
* libtool
|
* libtool
|
||||||
|
|
||||||
And run following command to generate configure script and other files
|
And run the following command to generate configure script and other files
|
||||||
necessary to build the program::
|
necessary to build the program::
|
||||||
|
|
||||||
$ autoreconf -i
|
$ autoreconf -i
|
||||||
|
|
||||||
Also you need `Sphinx <http://sphinx-doc.org/>`_ to build man page.
|
Also, you need `Sphinx <http://sphinx-doc.org/>`_ to build the man page.
|
||||||
|
|
||||||
If you are building aria2 for Mac OS X, take a look at
|
If you are building aria2 for Mac OS X, take a look at
|
||||||
the makerelease-osx.mk GNU Make makefile.
|
the makerelease-osx.mk GNU Make makefile.
|
||||||
|
|
||||||
The quickest way to build aria2 is first run configure script::
|
The quickest way to build aria2 is first to run configure script::
|
||||||
|
|
||||||
$ ./configure
|
$ ./configure
|
||||||
|
|
||||||
|
@ -269,7 +269,7 @@ If you build with OpenSSL or the recent version of GnuTLS which has
|
||||||
``gnutls_certificate_set_x509_system_trust()`` function and the
|
``gnutls_certificate_set_x509_system_trust()`` function and the
|
||||||
library is properly configured to locate the system-wide CA
|
library is properly configured to locate the system-wide CA
|
||||||
certificates store, aria2 will automatically load those certificates
|
certificates store, aria2 will automatically load those certificates
|
||||||
at the startup. If it is not the case, I recommend to supply the path
|
at the startup. If it is not the case, I recommend supplying the path
|
||||||
to the CA bundle file. For example, in Debian the path to CA bundle
|
to the CA bundle file. For example, in Debian the path to CA bundle
|
||||||
file is '/etc/ssl/certs/ca-certificates.crt' (in ca-certificates
|
file is '/etc/ssl/certs/ca-certificates.crt' (in ca-certificates
|
||||||
package). This may vary depending on your distribution. You can give
|
package). This may vary depending on your distribution. You can give
|
||||||
|
@ -280,9 +280,9 @@ it to configure script using ``--with-ca-bundle option``::
|
||||||
|
|
||||||
Without ``--with-ca-bundle`` option, you will encounter the error when
|
Without ``--with-ca-bundle`` option, you will encounter the error when
|
||||||
accessing HTTPS servers because the certificate cannot be verified
|
accessing HTTPS servers because the certificate cannot be verified
|
||||||
without CA bundle. In such case, you can specify the CA bundle file
|
without the CA bundle. In such a case, you can specify the CA bundle file
|
||||||
using aria2's ``--ca-certificate`` option. If you don't have CA bundle
|
using aria2's ``--ca-certificate`` option. If you don't have the CA bundle
|
||||||
file installed, then the last resort is disable the certificate
|
file installed, then the last resort is to disable the certificate
|
||||||
validation using ``--check-certificate=false``.
|
validation using ``--check-certificate=false``.
|
||||||
|
|
||||||
Using the native OSX (AppleTLS) and/or Windows (WinTLS) implementation
|
Using the native OSX (AppleTLS) and/or Windows (WinTLS) implementation
|
||||||
|
@ -295,7 +295,7 @@ the directory ``$prefix/share/doc/aria2/bash_completion``. To change
|
||||||
the install directory of the file, use ``--with-bashcompletiondir``
|
the install directory of the file, use ``--with-bashcompletiondir``
|
||||||
option.
|
option.
|
||||||
|
|
||||||
After a ``make`` the executable is located at ``src/aria2c``.
|
After a ``make``, the executable is located at ``src/aria2c``.
|
||||||
|
|
||||||
aria2 uses CppUnit for automated unit testing. To run the unit test::
|
aria2 uses CppUnit for automated unit testing. To run the unit test::
|
||||||
|
|
||||||
|
@ -309,20 +309,20 @@ mingw-w64 (http://mingw-w64.org/doku.php) cross-compiler on Debian
|
||||||
Linux. The MinGW (http://www.mingw.org/) may not be able to build
|
Linux. The MinGW (http://www.mingw.org/) may not be able to build
|
||||||
aria2.
|
aria2.
|
||||||
|
|
||||||
The easiest way to build Windows binary is use Dockerfile.mingw. See
|
The easiest way to build Windows binary is using Dockerfile.mingw. See
|
||||||
Dockerfile.mingw how to build binary. If you cannot use Dockerfile,
|
Dockerfile.mingw how to build a binary. If you cannot use Dockerfile,
|
||||||
then continue to read following paragraphs.
|
then continue to read the following paragraphs.
|
||||||
|
|
||||||
Basically, after compiling and installing depended libraries, you can
|
Basically, after compiling and installing depended libraries, you can
|
||||||
do cross-compile just passing appropriate ``--host`` option and
|
do cross-compile just passing appropriate ``--host`` option and
|
||||||
specifying ``CPPFLAGS``, ``LDFLAGS`` and ``PKG_CONFIG_LIBDIR``
|
specifying ``CPPFLAGS``, ``LDFLAGS``, and ``PKG_CONFIG_LIBDIR``
|
||||||
variables to configure. For convenience and lowering our own
|
variables to configure. For convenience and to lower our own
|
||||||
development cost, we provide easier way to configure the build
|
development cost, we provide an easier way to configure the build
|
||||||
settings.
|
settings.
|
||||||
|
|
||||||
``mingw-config`` script is a configure script wrapper for mingw-w64.
|
``mingw-config`` script is a configure script wrapper for mingw-w64.
|
||||||
We use it to create official Windows build. This script assumes
|
We use it to create official Windows build. This script assumes
|
||||||
following libraries have been built for cross-compile:
|
the following libraries have been built for cross-compile:
|
||||||
|
|
||||||
* c-ares
|
* c-ares
|
||||||
* expat
|
* expat
|
||||||
|
@ -335,7 +335,7 @@ Some environment variables can be adjusted to change build settings:
|
||||||
|
|
||||||
``HOST``
|
``HOST``
|
||||||
cross-compile to build programs to run on ``HOST``. It defaults to
|
cross-compile to build programs to run on ``HOST``. It defaults to
|
||||||
``i686-w64-mingw32``. To build 64bit binary, specify
|
``i686-w64-mingw32``. To build a 64bit binary, specify
|
||||||
``x86_64-w64-mingw32``.
|
``x86_64-w64-mingw32``.
|
||||||
|
|
||||||
``PREFIX``
|
``PREFIX``
|
||||||
|
@ -345,7 +345,7 @@ Some environment variables can be adjusted to change build settings:
|
||||||
``LDFLAGS``. ``$PREFIX/lib/pkgconfig`` will be set to
|
``LDFLAGS``. ``$PREFIX/lib/pkgconfig`` will be set to
|
||||||
``PKG_CONFIG_LIBDIR``.
|
``PKG_CONFIG_LIBDIR``.
|
||||||
|
|
||||||
For example, to build 64bit binary do this::
|
For example, to build a 64bit binary do this::
|
||||||
|
|
||||||
$ HOST=x86_64-w64-mingw32 ./mingw-config
|
$ HOST=x86_64-w64-mingw32 ./mingw-config
|
||||||
|
|
||||||
|
@ -363,7 +363,7 @@ At the time of this writing, Android NDK r21e should compile aria2
|
||||||
without errors.
|
without errors.
|
||||||
|
|
||||||
``android-config`` script is a configure script wrapper for Android
|
``android-config`` script is a configure script wrapper for Android
|
||||||
build. We use it to create official Android build. This script
|
build. We use it to create an official Android build. This script
|
||||||
assumes the following libraries have been built for cross-compile:
|
assumes the following libraries have been built for cross-compile:
|
||||||
|
|
||||||
* c-ares
|
* c-ares
|
||||||
|
@ -380,7 +380,7 @@ libraries statically.
|
||||||
environment variables are defined.
|
environment variables are defined.
|
||||||
|
|
||||||
We currently use Android NDK r21e. ``$NDK`` should point to the
|
We currently use Android NDK r21e. ``$NDK`` should point to the
|
||||||
directory to Anroid NDK. The build tools will be found under
|
directory to Android NDK. The build tools will be found under
|
||||||
``$NDK/toolchains/llvm/prebuilt/linux-x86_64/bin/``.
|
``$NDK/toolchains/llvm/prebuilt/linux-x86_64/bin/``.
|
||||||
|
|
||||||
All the dependent libraries must be installed under
|
All the dependent libraries must be installed under
|
||||||
|
@ -391,10 +391,10 @@ After ``android-config``, run ``make`` to compile sources.
|
||||||
Building documentation
|
Building documentation
|
||||||
----------------------
|
----------------------
|
||||||
|
|
||||||
`Sphinx <http://sphinx-doc.org/>`_ is used to build the
|
`Sphinx <http://sphinx-doc.org/>`_ is used to building the
|
||||||
documentation. aria2 man pages will be build when you run ``make`` if
|
documentation. aria2 man pages will be build when you run ``make`` if
|
||||||
they are not up-to-date. You can also build HTML version of aria2 man
|
they are not up-to-date. You can also build an HTML version of the aria2
|
||||||
page by ``make html``. The HTML version manual is also available at
|
man page by ``make html``. The HTML version manual is also available
|
||||||
`online <https://aria2.github.io/manual/en/html/>`_ (`Russian
|
`online <https://aria2.github.io/manual/en/html/>`_ (`Russian
|
||||||
translation <https://aria2.github.io/manual/ru/html/>`_, `Portuguese
|
translation <https://aria2.github.io/manual/ru/html/>`_, `Portuguese
|
||||||
translation <https://aria2.github.io/manual/pt/html/>`_).
|
translation <https://aria2.github.io/manual/pt/html/>`_).
|
||||||
|
@ -407,8 +407,8 @@ About file names
|
||||||
The file name of the downloaded file is determined as follows:
|
The file name of the downloaded file is determined as follows:
|
||||||
|
|
||||||
single-file mode
|
single-file mode
|
||||||
If "name" key is present in .torrent file, file name is the value
|
If "name" key is present in .torrent file, the file name is the value
|
||||||
of "name" key. Otherwise, file name is the base name of .torrent
|
of "name" key. Otherwise, the file name is the base name of .torrent
|
||||||
file appended by ".file". For example, .torrent file is
|
file appended by ".file". For example, .torrent file is
|
||||||
"test.torrent", then file name is "test.torrent.file". The
|
"test.torrent", then file name is "test.torrent.file". The
|
||||||
directory to store the downloaded file can be specified by -d
|
directory to store the downloaded file can be specified by -d
|
||||||
|
@ -421,7 +421,7 @@ multi-file mode
|
||||||
|
|
||||||
Before download starts, a complete directory structure is created if
|
Before download starts, a complete directory structure is created if
|
||||||
needed. By default, aria2 opens at most 100 files mentioned in
|
needed. By default, aria2 opens at most 100 files mentioned in
|
||||||
.torrent file, and directly writes to and reads from these files.
|
.torrent file, and directly writes to and reads from these files.
|
||||||
The number of files to open simultaneously can be controlled by
|
The number of files to open simultaneously can be controlled by
|
||||||
``--bt-max-open-files`` option.
|
``--bt-max-open-files`` option.
|
||||||
|
|
||||||
|
@ -432,14 +432,14 @@ aria2 supports mainline compatible DHT. By default, the routing table
|
||||||
for IPv4 DHT is saved to ``$XDG_CACHE_HOME/aria2/dht.dat`` and the
|
for IPv4 DHT is saved to ``$XDG_CACHE_HOME/aria2/dht.dat`` and the
|
||||||
routing table for IPv6 DHT is saved to
|
routing table for IPv6 DHT is saved to
|
||||||
``$XDG_CACHE_HOME/aria2/dht6.dat`` unless files exist at
|
``$XDG_CACHE_HOME/aria2/dht6.dat`` unless files exist at
|
||||||
``$HOME/.aria2/dht.dat`` or ``$HOME/.aria2/dht6.dat``. aria2 uses same
|
``$HOME/.aria2/dht.dat`` or ``$HOME/.aria2/dht6.dat``. aria2 uses the
|
||||||
port number to listen on for both IPv4 and IPv6 DHT.
|
same port number to listen on for both IPv4 and IPv6 DHT.
|
||||||
|
|
||||||
UDP tracker
|
UDP tracker
|
||||||
~~~~~~~~~~~
|
~~~~~~~~~~~
|
||||||
|
|
||||||
UDP tracker support is enabled when IPv4 DHT is enabled. The port
|
UDP tracker support is enabled when IPv4 DHT is enabled. The port
|
||||||
number of UDP tracker is shared with DHT. Use ``--dht-listen-port``
|
number of the UDP tracker is shared with DHT. Use ``--dht-listen-port``
|
||||||
option to change the port number.
|
option to change the port number.
|
||||||
|
|
||||||
Other things should be noted
|
Other things should be noted
|
||||||
|
@ -453,9 +453,9 @@ Other things should be noted
|
||||||
* aria2 doesn't configure port-forwarding automatically. Please
|
* aria2 doesn't configure port-forwarding automatically. Please
|
||||||
configure your router or firewall manually.
|
configure your router or firewall manually.
|
||||||
* The maximum number of peers is 55. This limit may be exceeded when
|
* The maximum number of peers is 55. This limit may be exceeded when
|
||||||
download rate is low. This download rate can be adjusted using
|
the download rate is low. This download rate can be adjusted using
|
||||||
``--bt-request-peer-speed-limit`` option.
|
``--bt-request-peer-speed-limit`` option.
|
||||||
* As of release 0.10.0, aria2 stops sending request message after
|
* As of release 0.10.0, aria2 stops sending request messages after
|
||||||
selective download completes.
|
selective download completes.
|
||||||
|
|
||||||
Metalink
|
Metalink
|
||||||
|
@ -465,46 +465,46 @@ The current implementation supports HTTP(S)/FTP/SFTP/BitTorrent. The
|
||||||
other P2P protocols are ignored. Both Metalink4 (RFC 5854) and
|
other P2P protocols are ignored. Both Metalink4 (RFC 5854) and
|
||||||
Metalink version 3.0 documents are supported.
|
Metalink version 3.0 documents are supported.
|
||||||
|
|
||||||
For checksum verification, md5, sha-1, sha-224, sha-256, sha-384 and
|
For checksum verification, md5, sha-1, sha-224, sha-256, sha-384, and
|
||||||
sha-512 are supported. If multiple hash algorithms are provided, aria2
|
sha-512 are supported. If multiple hash algorithms are provided, aria2
|
||||||
uses stronger one. If whole file checksum verification fails, aria2
|
uses a stronger one. If whole file checksum verification fails, aria2
|
||||||
doesn't retry the download and just exits with non-zero return code.
|
doesn't retry the download and just exits with a non-zero return code.
|
||||||
|
|
||||||
The supported user preferences are version, language, location,
|
The supported user preferences are version, language, location,
|
||||||
protocol and os.
|
protocol, and os.
|
||||||
|
|
||||||
If chunk checksums are provided in Metalink file, aria2 automatically
|
If chunk checksums are provided in the Metalink file, aria2 automatically
|
||||||
validates chunks of data during download. This behavior can be turned
|
validates chunks of data during download. This behavior can be turned
|
||||||
off by a command-line option.
|
off by a command-line option.
|
||||||
|
|
||||||
If signature is included in a Metalink file, aria2 saves it as a file
|
If a signature is included in a Metalink file, aria2 saves it as a file
|
||||||
after the completion of the download. The file name is download
|
after the completion of the download. The file name is download
|
||||||
file name + ".sig". If same file already exists, the signature file is
|
file name + ".sig". If the same file already exists, the signature file is
|
||||||
not saved.
|
not saved.
|
||||||
|
|
||||||
In Metalink4, multi-file torrent could appear in metalink:metaurl
|
In Metalink4, a multi-file torrent could appear in metalink:metaurl
|
||||||
element. Since aria2 cannot download 2 same torrents at the same
|
element. Since aria2 cannot download 2 same torrents at the same
|
||||||
time, aria2 groups files in metalink:file element which has same
|
time, aria2 groups files in metalink:file element which has the same
|
||||||
BitTorrent metaurl and downloads them from a single BitTorrent swarm.
|
BitTorrent metaurl, and downloads them from a single BitTorrent swarm.
|
||||||
This is basically multi-file torrent download with file selection, so
|
This is a basically multi-file torrent download with file selection, so
|
||||||
the adjacent files which is not in Metalink document but shares same
|
the adjacent files which are not in Metalink document but share the same
|
||||||
piece with selected file are also created.
|
piece with the selected file are also created.
|
||||||
|
|
||||||
If relative URI is specified in metalink:url or metalink:metaurl
|
If relative URI is specified in metalink:url or metalink:metaurl
|
||||||
element, aria2 uses the URI of Metalink file as base URI to resolve
|
element, aria2 uses the URI of Metalink file as base URI to resolve
|
||||||
the relative URI. If relative URI is found in Metalink file which is
|
the relative URI. If relative URI is found in the Metalink file which is
|
||||||
read from local disk, aria2 uses the value of ``--metalink-base-uri``
|
read from the local disk, aria2 uses the value of ``--metalink-base-uri``
|
||||||
option as base URI. If this option is not specified, the relative URI
|
option as base URI. If this option is not specified, the relative URI
|
||||||
will be ignored.
|
will be ignored.
|
||||||
|
|
||||||
Metalink/HTTP
|
Metalink/HTTP
|
||||||
-------------
|
-------------
|
||||||
|
|
||||||
The current implementation only uses rel=duplicate links only. aria2
|
The current implementation only uses rel=duplicate links. aria2
|
||||||
understands Digest header fields and check whether it matches the
|
understands Digest header fields and check whether it matches the
|
||||||
digest value from other sources. If it differs, drop connection.
|
digest value from other sources. If it differs, drop the connection.
|
||||||
aria2 also uses this digest value to perform checksum verification
|
aria2 also uses this digest value to perform checksum verification
|
||||||
after download finished. aria2 recognizes geo value. To tell aria2
|
after the download is finished. aria2 recognizes geo value. To tell aria2
|
||||||
which location you prefer, you can use ``--metalink-location`` option.
|
which location you prefer, you can use ``--metalink-location`` option.
|
||||||
|
|
||||||
netrc
|
netrc
|
||||||
|
@ -523,10 +523,10 @@ defined in RFC 6455. The supported protocol version is 13.
|
||||||
libaria2
|
libaria2
|
||||||
--------
|
--------
|
||||||
|
|
||||||
The libaria2 is a C++ library which offers aria2 functionality to the
|
The libaria2 is a C++ library that offers aria2 functionality to the
|
||||||
client code. Currently, libaria2 is not built by default. To enable
|
client code. Currently, libaria2 is not built by default. To enable
|
||||||
libaria2, use ``--enable-libaria2`` configure option. By default,
|
libaria2, use ``--enable-libaria2`` configure option. By default,
|
||||||
only the shared library is built. To build static library, use
|
only the shared library is built. To build a static library, use
|
||||||
``--enable-static`` configure option as well. See libaria2
|
``--enable-static`` configure option as well. See libaria2
|
||||||
documentation to know how to use API.
|
documentation to know how to use API.
|
||||||
|
|
||||||
|
|
|
@ -31,16 +31,8 @@
|
||||||
# version. If you delete this exception statement from all source
|
# version. If you delete this exception statement from all source
|
||||||
# files in the program, then also delete it here.
|
# files in the program, then also delete it here.
|
||||||
|
|
||||||
if [ -z "$NDK" ]; then
|
|
||||||
echo 'No $NDK specified.'
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
TOOLCHAIN=$NDK/toolchains/llvm/prebuilt/linux-x86_64
|
|
||||||
PATH=$TOOLCHAIN/bin:$PATH
|
|
||||||
|
|
||||||
# cd to the directory where this script exists.
|
# cd to the directory where this script exists.
|
||||||
cd $(dirname $0)
|
cd "$(dirname $0)"
|
||||||
. ./script-helper
|
. ./script-helper
|
||||||
|
|
||||||
get_version
|
get_version
|
||||||
|
@ -51,9 +43,8 @@ if [ -z "$VERSION" ]; then
|
||||||
fi
|
fi
|
||||||
|
|
||||||
DIST_DIR=aria2-$VERSION-aarch64-linux-android-build1
|
DIST_DIR=aria2-$VERSION-aarch64-linux-android-build1
|
||||||
aarch64-linux-android-strip src/aria2c
|
mkdir "$DIST_DIR"
|
||||||
mkdir $DIST_DIR
|
|
||||||
cp AUTHORS COPYING ChangeLog LICENSE.OpenSSL NEWS README.html README.android \
|
cp AUTHORS COPYING ChangeLog LICENSE.OpenSSL NEWS README.html README.android \
|
||||||
src/aria2c $DIST_DIR
|
android-out/aria2c "$DIST_DIR"
|
||||||
zip -9 -r $DIST_DIR.zip $DIST_DIR
|
zip -9 -r "$DIST_DIR.zip" "$DIST_DIR"
|
||||||
rm -rf $DIST_DIR
|
rm -rf "$DIST_DIR"
|
||||||
|
|
|
@ -6,27 +6,27 @@ BUILDDIR=/tmp/aria2buildtest
|
||||||
|
|
||||||
if [ ! -d "$BUILDDIR" ]; then
|
if [ ! -d "$BUILDDIR" ]; then
|
||||||
mkdir "$BUILDDIR" \
|
mkdir "$BUILDDIR" \
|
||||||
|| { echo "Failed to create directory $BUILDDIR" && exit -1; }
|
|| { echo "Failed to create directory $BUILDDIR" && exit 1; }
|
||||||
fi
|
fi
|
||||||
|
|
||||||
echo -n "Starting build test "
|
echo -n "Starting build test "
|
||||||
echo `date`
|
echo "$(date)"
|
||||||
|
|
||||||
# build CONFIGURE_OPTS BIN_SUFFIX DESC
|
# build CONFIGURE_OPTS BIN_SUFFIX DESC
|
||||||
build()
|
build()
|
||||||
{
|
{
|
||||||
echo -n "new build() started at "
|
echo -n "new build() started at "
|
||||||
echo `date`
|
echo "$(date)"
|
||||||
echo "*** configure opts=$1"
|
echo "*** configure opts=$1"
|
||||||
BIN_NAME="aria2c_$2"
|
BIN_NAME="aria2c_$2"
|
||||||
if [ -f "$BUILDDIR/$BIN_NAME" ]; then
|
if [ -f "$BUILDDIR/$BIN_NAME" ]; then
|
||||||
echo "$BIN_NAME exists, skipping"
|
echo "$BIN_NAME exists, skipping"
|
||||||
return
|
return
|
||||||
fi
|
fi
|
||||||
./configure $1 2>&1 | tee "$BUILDDIR/configure_$2.log"\
|
./configure $1 2>&1 | tee "$BUILDDIR/configure_$2.log" \
|
||||||
&& cp config.log "$BUILDDIR/config.log_$2" \
|
&& cp config.log "$BUILDDIR/config.log_$2" \
|
||||||
&& LANG=C make clean \
|
&& LANG=C make clean \
|
||||||
&& LANG=C make -j2 check 2>&1 |tee "$BUILDDIR/aria2c_$2.log" \
|
&& LANG=C make -j2 check 2>&1 | tee "$BUILDDIR/aria2c_$2.log" \
|
||||||
&& cp src/aria2c "$BUILDDIR/aria2c_$2"
|
&& cp src/aria2c "$BUILDDIR/aria2c_$2"
|
||||||
|
|
||||||
if [ -f "test/aria2c.log" ]; then
|
if [ -f "test/aria2c.log" ]; then
|
||||||
|
@ -36,8 +36,8 @@ build()
|
||||||
|
|
||||||
clear()
|
clear()
|
||||||
{
|
{
|
||||||
for file in `ls $BUILDDIR`; do
|
for file in $(ls "$BUILDDIR"); do
|
||||||
rm -f "$BUILDDIR/$file";
|
rm -f "$BUILDDIR/$file"
|
||||||
done
|
done
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
53
configure.ac
53
configure.ac
|
@ -2,7 +2,7 @@
|
||||||
# Process this file with autoconf to produce a configure script.
|
# Process this file with autoconf to produce a configure script.
|
||||||
#
|
#
|
||||||
AC_PREREQ([2.67])
|
AC_PREREQ([2.67])
|
||||||
AC_INIT([aria2],[1.36.0],[https://github.com/aria2/aria2/issues],[aria2],[https://aria2.github.io/])
|
AC_INIT([aria2],[1.37.0],[https://github.com/aria2/aria2/issues],[aria2],[https://aria2.github.io/])
|
||||||
|
|
||||||
AC_CANONICAL_HOST
|
AC_CANONICAL_HOST
|
||||||
AC_CANONICAL_TARGET
|
AC_CANONICAL_TARGET
|
||||||
|
@ -39,7 +39,7 @@ case "$host" in
|
||||||
# available from <time.h> even without (un)helpful interference
|
# available from <time.h> even without (un)helpful interference
|
||||||
# from <pthread.h>, and also defines __USE_MINGW_ANSI_STDIO.
|
# from <pthread.h>, and also defines __USE_MINGW_ANSI_STDIO.
|
||||||
EXTRACPPFLAGS="$EXTRACPPFLAGS -D_POSIX_C_SOURCE=1"
|
EXTRACPPFLAGS="$EXTRACPPFLAGS -D_POSIX_C_SOURCE=1"
|
||||||
# Build with ASLR (dynamicbase) and NX compatiblity (nxcompat)
|
# Build with ASLR (dynamicbase) and NX compatibility (nxcompat)
|
||||||
# Enable pie once upstream/binutils gets fixed to produce correct
|
# Enable pie once upstream/binutils gets fixed to produce correct
|
||||||
# binaries with it.
|
# binaries with it.
|
||||||
EXTRALDFLAGS="$EXTRALDFLAGS -Wl,--dynamicbase -Wl,--nxcompat"
|
EXTRALDFLAGS="$EXTRALDFLAGS -Wl,--dynamicbase -Wl,--nxcompat"
|
||||||
|
@ -141,7 +141,7 @@ PKG_PROG_PKG_CONFIG([0.20])
|
||||||
save_CXXFLAGS="$CXXFLAGS"
|
save_CXXFLAGS="$CXXFLAGS"
|
||||||
CXXFLAGS=
|
CXXFLAGS=
|
||||||
|
|
||||||
AX_CXX_COMPILE_STDCXX_11([noext], [mandatory])
|
AX_CXX_COMPILE_STDCXX([11], [], [mandatory])
|
||||||
|
|
||||||
CXX1XCXXFLAGS="$CXXFLAGS"
|
CXX1XCXXFLAGS="$CXXFLAGS"
|
||||||
CXXFLAGS="$save_CXXFLAGS"
|
CXXFLAGS="$save_CXXFLAGS"
|
||||||
|
@ -343,9 +343,12 @@ fi
|
||||||
|
|
||||||
have_wintls=no
|
have_wintls=no
|
||||||
if test "x$with_wintls" = "xyes"; then
|
if test "x$with_wintls" = "xyes"; then
|
||||||
AC_HAVE_LIBRARY([crypt32],[have_wintls_libs=yes],[have_wintls_libs=no])
|
AC_CHECK_LIB([crypt32],[main],[have_wintls_libs=yes],[have_wintls_libs=no],[])ac_cv_lib_crypt32=ac_cv_lib_crypt32_main
|
||||||
AC_HAVE_LIBRARY([secur32],[have_wintls_libs=$have_wintls_libs],[have_wintls_libs=no])
|
|
||||||
AC_HAVE_LIBRARY([advapi32],[have_wintls_libs=$have_wintls_libs],[have_wintls_libs=no])
|
AC_CHECK_LIB([secur32],[main],[have_wintls_libs=$have_wintls_libs],[have_wintls_libs=no],[])ac_cv_lib_secur32=ac_cv_lib_secur32_main
|
||||||
|
|
||||||
|
AC_CHECK_LIB([advapi32],[main],[have_wintls_libs=$have_wintls_libs],[have_wintls_libs=no],[])ac_cv_lib_advapi32=ac_cv_lib_advapi32_main
|
||||||
|
|
||||||
AC_CHECK_HEADER([wincrypt.h], [have_wintls_headers=yes], [have_wintls_headers=no], [[
|
AC_CHECK_HEADER([wincrypt.h], [have_wintls_headers=yes], [have_wintls_headers=no], [[
|
||||||
#ifdef HAVE_WINDOWS_H
|
#ifdef HAVE_WINDOWS_H
|
||||||
# include <windows.h>
|
# include <windows.h>
|
||||||
|
@ -486,6 +489,10 @@ if test "x$with_libssh2" = "xyes"; then
|
||||||
PKG_CHECK_MODULES([LIBSSH2], [libssh2], [have_libssh2=yes], [have_libssh2=no])
|
PKG_CHECK_MODULES([LIBSSH2], [libssh2], [have_libssh2=yes], [have_libssh2=no])
|
||||||
if test "x$have_libssh2" = "xyes"; then
|
if test "x$have_libssh2" = "xyes"; then
|
||||||
AC_DEFINE([HAVE_LIBSSH2], [1], [Define to 1 if you have libssh2.])
|
AC_DEFINE([HAVE_LIBSSH2], [1], [Define to 1 if you have libssh2.])
|
||||||
|
|
||||||
|
if test "x$ARIA2_STATIC" = "xyes"; then
|
||||||
|
LIBSSH2_CFLAGS="-DLIBSSH2_API= $LIBSSH2_CFLAGS"
|
||||||
|
fi
|
||||||
else
|
else
|
||||||
AC_MSG_WARN([$LIBSSH2_PKG_ERRORS])
|
AC_MSG_WARN([$LIBSSH2_PKG_ERRORS])
|
||||||
if test "x$with_libssh2_requested" = "xyes"; then
|
if test "x$with_libssh2_requested" = "xyes"; then
|
||||||
|
@ -496,18 +503,10 @@ fi
|
||||||
|
|
||||||
have_libcares=no
|
have_libcares=no
|
||||||
if test "x$with_libcares" = "xyes"; then
|
if test "x$with_libcares" = "xyes"; then
|
||||||
PKG_CHECK_MODULES([LIBCARES], [libcares >= 1.7.0], [have_libcares=yes],
|
PKG_CHECK_MODULES([LIBCARES], [libcares >= 1.16.0], [have_libcares=yes],
|
||||||
[have_libcares=no])
|
[have_libcares=no])
|
||||||
if test "x$have_libcares" = "xyes"; then
|
if test "x$have_libcares" = "xyes"; then
|
||||||
AC_DEFINE([HAVE_LIBCARES], [1], [Define to 1 if you have libcares.])
|
AC_DEFINE([HAVE_LIBCARES], [1], [Define to 1 if you have libcares.])
|
||||||
save_LIBS=$LIBS
|
|
||||||
save_CPPFLAGS=$CPPFLAGS
|
|
||||||
LIBS="$LIBCARES_LIBS $LIBS"
|
|
||||||
CPPFLAGS="$LIBCARES_CFLAGS $CPPFLAGS"
|
|
||||||
AC_CHECK_TYPES([ares_addr_node], [], [], [[#include <ares.h>]])
|
|
||||||
AC_CHECK_FUNCS([ares_set_servers])
|
|
||||||
LIBS=$save_LIBS
|
|
||||||
CPPFLAGS=$save_CPPFLAGS
|
|
||||||
|
|
||||||
# -DCARES_STATICLIB is appended by pkg-config file libcares.pc
|
# -DCARES_STATICLIB is appended by pkg-config file libcares.pc
|
||||||
else
|
else
|
||||||
|
@ -657,7 +656,7 @@ esac
|
||||||
|
|
||||||
# Checks for header files.
|
# Checks for header files.
|
||||||
AC_FUNC_ALLOCA
|
AC_FUNC_ALLOCA
|
||||||
AC_HEADER_STDC
|
AC_PROG_EGREP
|
||||||
|
|
||||||
AC_CHECK_HEADERS([argz.h \
|
AC_CHECK_HEADERS([argz.h \
|
||||||
arpa/inet.h \
|
arpa/inet.h \
|
||||||
|
@ -709,7 +708,8 @@ AC_TYPE_MODE_T
|
||||||
AC_TYPE_OFF_T
|
AC_TYPE_OFF_T
|
||||||
AC_TYPE_SIZE_T
|
AC_TYPE_SIZE_T
|
||||||
AC_TYPE_SSIZE_T
|
AC_TYPE_SSIZE_T
|
||||||
AC_HEADER_TIME
|
AC_CHECK_HEADERS_ONCE([sys/time.h])
|
||||||
|
|
||||||
AC_STRUCT_TM
|
AC_STRUCT_TM
|
||||||
AC_TYPE_UINT16_T
|
AC_TYPE_UINT16_T
|
||||||
AC_TYPE_UINT32_T
|
AC_TYPE_UINT32_T
|
||||||
|
@ -729,7 +729,7 @@ fi
|
||||||
|
|
||||||
# Checks for library functions.
|
# Checks for library functions.
|
||||||
AM_GNU_GETTEXT([external])
|
AM_GNU_GETTEXT([external])
|
||||||
AM_GNU_GETTEXT_VERSION([0.18])
|
AM_GNU_GETTEXT_VERSION([0.19])
|
||||||
AC_FUNC_ERROR_AT_LINE
|
AC_FUNC_ERROR_AT_LINE
|
||||||
AC_PROG_GCC_TRADITIONAL
|
AC_PROG_GCC_TRADITIONAL
|
||||||
|
|
||||||
|
@ -741,7 +741,7 @@ AC_FUNC_STRFTIME
|
||||||
AC_FUNC_VPRINTF
|
AC_FUNC_VPRINTF
|
||||||
AC_FUNC_FORK
|
AC_FUNC_FORK
|
||||||
AC_FUNC_STRTOD
|
AC_FUNC_STRTOD
|
||||||
# Don't use AC_FUNC_MMAP becaue it fails on some platforms (e.g.,
|
# Don't use AC_FUNC_MMAP because it fails on some platforms (e.g.,
|
||||||
# OpenWRT) which have mmap and it works in the way we use in aria2.
|
# OpenWRT) which have mmap and it works in the way we use in aria2.
|
||||||
# Instead use mmap in AC_CHECK_FUNCS list.
|
# Instead use mmap in AC_CHECK_FUNCS list.
|
||||||
AC_CHECK_FUNCS([__argz_count \
|
AC_CHECK_FUNCS([__argz_count \
|
||||||
|
@ -750,6 +750,7 @@ AC_CHECK_FUNCS([__argz_count \
|
||||||
atexit \
|
atexit \
|
||||||
ftruncate \
|
ftruncate \
|
||||||
getcwd \
|
getcwd \
|
||||||
|
getentropy \
|
||||||
gethostbyaddr \
|
gethostbyaddr \
|
||||||
gethostbyname \
|
gethostbyname \
|
||||||
getifaddrs \
|
getifaddrs \
|
||||||
|
@ -925,17 +926,9 @@ case "$host" in
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
|
|
||||||
case "$host" in
|
AC_CHECK_FUNCS([timegm],
|
||||||
*android*)
|
[AM_CONDITIONAL([HAVE_TIMEGM], true)],
|
||||||
# timegm is not declared with Android NDK r12b
|
[AM_CONDITIONAL([HAVE_TIMEGM], false)])
|
||||||
AM_CONDITIONAL([HAVE_TIMEGM], false)
|
|
||||||
;;
|
|
||||||
*)
|
|
||||||
AC_CHECK_FUNCS([timegm],
|
|
||||||
[AM_CONDITIONAL([HAVE_TIMEGM], true)],
|
|
||||||
[AM_CONDITIONAL([HAVE_TIMEGM], false)])
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
|
|
||||||
AC_CHECK_FUNCS([port_associate], [have_port_associate=yes])
|
AC_CHECK_FUNCS([port_associate], [have_port_associate=yes])
|
||||||
AM_CONDITIONAL([HAVE_PORT_ASSOCIATE], [test "x$have_port_associate" = "xyes"])
|
AM_CONDITIONAL([HAVE_PORT_ASSOCIATE], [test "x$have_port_associate" = "xyes"])
|
||||||
|
|
2
deps/wslay/lib/includes/wslay/wslay.h
vendored
2
deps/wslay/lib/includes/wslay/wslay.h
vendored
|
@ -478,7 +478,7 @@ void wslay_event_config_set_max_recv_msg_length(wslay_event_context_ptr ctx,
|
||||||
uint64_t val);
|
uint64_t val);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Sets callbacks to ctx. The callbacks previouly set by this function
|
* Sets callbacks to ctx. The callbacks previously set by this function
|
||||||
* or wslay_event_context_server_init() or
|
* or wslay_event_context_server_init() or
|
||||||
* wslay_event_context_client_init() are replaced with callbacks.
|
* wslay_event_context_client_init() are replaced with callbacks.
|
||||||
*/
|
*/
|
||||||
|
|
2
deps/wslay/lib/wslay_frame.c
vendored
2
deps/wslay/lib/wslay_frame.c
vendored
|
@ -109,7 +109,7 @@ ssize_t wslay_frame_send(wslay_frame_context_ptr ctx,
|
||||||
int flags = 0;
|
int flags = 0;
|
||||||
if (iocb->data_length > 0) {
|
if (iocb->data_length > 0) {
|
||||||
flags |= WSLAY_MSG_MORE;
|
flags |= WSLAY_MSG_MORE;
|
||||||
};
|
}
|
||||||
r = ctx->callbacks.send_callback(ctx->oheadermark, (size_t)len, flags,
|
r = ctx->callbacks.send_callback(ctx->oheadermark, (size_t)len, flags,
|
||||||
ctx->user_data);
|
ctx->user_data);
|
||||||
if (r > 0) {
|
if (r > 0) {
|
||||||
|
|
File diff suppressed because one or more lines are too long
|
@ -1,4 +1,4 @@
|
||||||
#!/usr/bin/env python
|
#!/usr/bin/env python3
|
||||||
|
|
||||||
import subprocess
|
import subprocess
|
||||||
from io import StringIO
|
from io import StringIO
|
||||||
|
|
|
@ -334,29 +334,30 @@ HTTP/FTP/SFTP Options
|
||||||
|
|
||||||
.. option:: --stream-piece-selector=<SELECTOR>
|
.. option:: --stream-piece-selector=<SELECTOR>
|
||||||
|
|
||||||
Specify piece selection algorithm used in HTTP/FTP download. Piece
|
Specify piece selection algorithm used in HTTP/FTP download. A piece is a
|
||||||
means fixed length segment which is downloaded in parallel in
|
fixed length segment which is downloaded in parallel in a segmented download.
|
||||||
segmented download. If ``default`` is given, aria2 selects piece so
|
Default: ``default``.
|
||||||
that it reduces the number of establishing connection. This is
|
|
||||||
reasonable default behavior because establishing connection is an
|
default
|
||||||
expensive operation. If ``inorder`` is given, aria2 selects piece
|
Select a piece to reduce the number of connections established.
|
||||||
which has minimum index. Index=0 means first of the file. This will
|
This is reasonable default behavior because establishing a connection is an
|
||||||
be useful to view movie while downloading it.
|
expensive operation.
|
||||||
:option:`--enable-http-pipelining` option may
|
inorder
|
||||||
be useful to reduce re-connection overhead. Please note that aria2
|
Select a piece closest to the beginning of the file. This is useful for
|
||||||
honors
|
viewing movies while downloading. :option:`--enable-http-pipelining` option
|
||||||
:option:`--min-split-size <-k>` option,
|
may be useful to reduce re-connection overhead. Note that aria2 honors
|
||||||
so it will be necessary to specify a reasonable value to
|
:option:`--min-split-size <-k>` option, so it will be necessary to specify
|
||||||
:option:`--min-split-size <-k>` option.
|
a reasonable value to :option:`--min-split-size <-k>` option.
|
||||||
If ``random`` is given, aria2 selects piece randomly. Like
|
random
|
||||||
``inorder``, :option:`--min-split-size <-k>` option is honored.
|
Select a piece randomly. Like ``inorder``, :option:`--min-split-size <-k>`
|
||||||
If ``geom`` is given, at the beginning aria2 selects piece which has
|
option is honored.
|
||||||
minimum index like ``inorder``, but it exponentially increasingly
|
geom
|
||||||
keeps space from previously selected piece. This will reduce the
|
When starting to download a file, select a piece closest to the beginning
|
||||||
number of establishing connection and at the same time it will
|
of the file like ``inorder``, but then exponentially increases space
|
||||||
download the beginning part of the file first. This will be useful
|
between pieces.
|
||||||
to view movie while downloading it.
|
This reduces the number of connections established, while
|
||||||
Default: ``default``
|
at the same time downloads the beginning part of the file first. This is
|
||||||
|
useful for viewing movies while downloading.
|
||||||
|
|
||||||
.. option:: -t, --timeout=<SEC>
|
.. option:: -t, --timeout=<SEC>
|
||||||
|
|
||||||
|
@ -433,7 +434,7 @@ HTTP Specific Options
|
||||||
|
|
||||||
.. option:: --http-accept-gzip [true|false]
|
.. option:: --http-accept-gzip [true|false]
|
||||||
|
|
||||||
Send ``Accept: deflate, gzip`` request header and inflate response if
|
Send ``Accept-Encoding: deflate, gzip`` request header and inflate response if
|
||||||
remote server responds with ``Content-Encoding: gzip`` or
|
remote server responds with ``Content-Encoding: gzip`` or
|
||||||
``Content-Encoding: deflate``. Default: ``false``
|
``Content-Encoding: deflate``. Default: ``false``
|
||||||
|
|
||||||
|
@ -500,7 +501,7 @@ HTTP Specific Options
|
||||||
|
|
||||||
Use the private key in FILE.
|
Use the private key in FILE.
|
||||||
The private key must be decrypted and in PEM format.
|
The private key must be decrypted and in PEM format.
|
||||||
The behavior when encrypted one is given is undefined.
|
An encrypted key may cause undefined behavior.
|
||||||
See also :option:`--certificate` option.
|
See also :option:`--certificate` option.
|
||||||
|
|
||||||
.. option:: --referer=<REFERER>
|
.. option:: --referer=<REFERER>
|
||||||
|
@ -522,8 +523,7 @@ HTTP Specific Options
|
||||||
|
|
||||||
.. note::
|
.. note::
|
||||||
|
|
||||||
In performance perspective, there is usually no advantage to enable
|
There is usually no performance gain from enabling this option.
|
||||||
this option.
|
|
||||||
|
|
||||||
.. option:: --header=<HEADER>
|
.. option:: --header=<HEADER>
|
||||||
|
|
||||||
|
@ -557,6 +557,10 @@ HTTP Specific Options
|
||||||
Use HEAD method for the first request to the HTTP server.
|
Use HEAD method for the first request to the HTTP server.
|
||||||
Default: ``false``
|
Default: ``false``
|
||||||
|
|
||||||
|
.. option:: --no-want-digest-header [true|false]
|
||||||
|
|
||||||
|
Whether to disable Want-Digest header when doing requests.
|
||||||
|
Default: ``false``
|
||||||
|
|
||||||
.. option:: -U, --user-agent=<USER_AGENT>
|
.. option:: -U, --user-agent=<USER_AGENT>
|
||||||
|
|
||||||
|
@ -742,7 +746,7 @@ BitTorrent Specific Options
|
||||||
|
|
||||||
.. option:: --bt-metadata-only [true|false]
|
.. option:: --bt-metadata-only [true|false]
|
||||||
|
|
||||||
Download meta data only. The file(s) described in meta data will not
|
Download metadata only. The file(s) described in metadata will not
|
||||||
be downloaded. This option has effect only when BitTorrent Magnet
|
be downloaded. This option has effect only when BitTorrent Magnet
|
||||||
URI is used. See also :option:`--bt-save-metadata` option. Default: ``false``
|
URI is used. See also :option:`--bt-save-metadata` option. Default: ``false``
|
||||||
|
|
||||||
|
@ -792,11 +796,11 @@ BitTorrent Specific Options
|
||||||
|
|
||||||
.. option:: --bt-save-metadata [true|false]
|
.. option:: --bt-save-metadata [true|false]
|
||||||
|
|
||||||
Save meta data as ".torrent" file. This option has effect only when
|
Save metadata as ".torrent" file. This option has effect only when
|
||||||
BitTorrent Magnet URI is used. The file name is hex encoded info
|
BitTorrent Magnet URI is used. The file name is hex encoded info
|
||||||
hash with suffix ".torrent". The directory to be saved is the same
|
hash with suffix ".torrent". The directory to be saved is the same
|
||||||
directory where download file is saved. If the same file already
|
directory where download file is saved. If the same file already
|
||||||
exists, meta data is not saved. See also :option:`--bt-metadata-only`
|
exists, metadata is not saved. See also :option:`--bt-metadata-only`
|
||||||
option. Default: ``false``
|
option. Default: ``false``
|
||||||
|
|
||||||
.. option:: --bt-seed-unverified [true|false]
|
.. option:: --bt-seed-unverified [true|false]
|
||||||
|
@ -1136,9 +1140,9 @@ RPC Options
|
||||||
|
|
||||||
.. option:: --rpc-save-upload-metadata [true|false]
|
.. option:: --rpc-save-upload-metadata [true|false]
|
||||||
|
|
||||||
Save the uploaded torrent or metalink meta data in the directory
|
Save the uploaded torrent or metalink metadata in the directory
|
||||||
specified by :option:`--dir` option. The file name consists of SHA-1
|
specified by :option:`--dir` option. The file name consists of SHA-1
|
||||||
hash hex string of meta data plus extension. For torrent, the
|
hash hex string of metadata plus extension. For torrent, the
|
||||||
extension is '.torrent'. For metalink, it is '.meta4'. If false is
|
extension is '.torrent'. For metalink, it is '.meta4'. If false is
|
||||||
given to this option, the downloads added by
|
given to this option, the downloads added by
|
||||||
:func:`aria2.addTorrent` or :func:`aria2.addMetalink` will not be
|
:func:`aria2.addTorrent` or :func:`aria2.addMetalink` will not be
|
||||||
|
@ -1359,7 +1363,7 @@ Advanced Options
|
||||||
your best choice. It allocates large(few GiB)
|
your best choice. It allocates large(few GiB)
|
||||||
files almost instantly. Don't use ``falloc`` with
|
files almost instantly. Don't use ``falloc`` with
|
||||||
legacy file systems such as ext3 and FAT32 because it takes
|
legacy file systems such as ext3 and FAT32 because it takes
|
||||||
almost same time as ``prealloc`` and it blocks aria2
|
almost the same time as ``prealloc`` and it blocks aria2
|
||||||
entirely until allocation finishes. ``falloc`` may
|
entirely until allocation finishes. ``falloc`` may
|
||||||
not be available if your system doesn't have
|
not be available if your system doesn't have
|
||||||
:manpage:`posix_fallocate(3)` function.
|
:manpage:`posix_fallocate(3)` function.
|
||||||
|
@ -1483,7 +1487,7 @@ Advanced Options
|
||||||
.. option:: --multiple-interface=<INTERFACES>
|
.. option:: --multiple-interface=<INTERFACES>
|
||||||
|
|
||||||
Comma separated list of interfaces to bind sockets to. Requests will
|
Comma separated list of interfaces to bind sockets to. Requests will
|
||||||
be splited among the interfaces to achieve link aggregation. You can
|
be split among the interfaces to achieve link aggregation. You can
|
||||||
specify interface name, IP address and hostname. If
|
specify interface name, IP address and hostname. If
|
||||||
:option:`--interface` is used, this option will be ignored.
|
:option:`--interface` is used, this option will be ignored.
|
||||||
Possible Values: interface, IP address, hostname
|
Possible Values: interface, IP address, hostname
|
||||||
|
@ -1652,7 +1656,7 @@ Advanced Options
|
||||||
the file name.
|
the file name.
|
||||||
Please note that downloads added by
|
Please note that downloads added by
|
||||||
:func:`aria2.addTorrent` and :func:`aria2.addMetalink` RPC method
|
:func:`aria2.addTorrent` and :func:`aria2.addMetalink` RPC method
|
||||||
and whose meta data could not be saved as a file are not saved.
|
and whose metadata could not be saved as a file are not saved.
|
||||||
Downloads removed using :func:`aria2.remove` and
|
Downloads removed using :func:`aria2.remove` and
|
||||||
:func:`aria2.forceRemove` will not be saved. GID is also saved with
|
:func:`aria2.forceRemove` will not be saved. GID is also saved with
|
||||||
:option:`gid <--gid>`, but there are some restrictions, see below.
|
:option:`gid <--gid>`, but there are some restrictions, see below.
|
||||||
|
@ -1660,11 +1664,11 @@ Advanced Options
|
||||||
.. note::
|
.. note::
|
||||||
|
|
||||||
Normally, GID of the download itself is saved. But some downloads
|
Normally, GID of the download itself is saved. But some downloads
|
||||||
use meta data (e.g., BitTorrent and Metalink). In this case, there
|
use metadata (e.g., BitTorrent and Metalink). In this case, there
|
||||||
are some restrictions.
|
are some restrictions.
|
||||||
|
|
||||||
magnet URI, and followed by torrent download
|
magnet URI, and followed by torrent download
|
||||||
GID of BitTorrent meta data download is saved.
|
GID of BitTorrent metadata download is saved.
|
||||||
URI to torrent file, and followed by torrent download
|
URI to torrent file, and followed by torrent download
|
||||||
GID of torrent file download is saved.
|
GID of torrent file download is saved.
|
||||||
URI to metalink file, and followed by file downloads described in metalink file
|
URI to metalink file, and followed by file downloads described in metalink file
|
||||||
|
@ -4284,8 +4288,8 @@ Alternatively, if PEM files are supported, use a command like the following:
|
||||||
|
|
||||||
.. note::
|
.. note::
|
||||||
|
|
||||||
The file specified in :option:`--private-key` must be decrypted. The behavior when
|
The file specified in :option:`--private-key` must be decrypted; an encrypted
|
||||||
encrypted one is given is undefined.
|
key may cause undefined behavior.
|
||||||
|
|
||||||
Verify SSL/TLS servers using given CA certificates
|
Verify SSL/TLS servers using given CA certificates
|
||||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
#!/usr/bin/env python
|
#!/usr/bin/env python3
|
||||||
#
|
#
|
||||||
# aria2 - The high speed download utility
|
# aria2 - The high speed download utility
|
||||||
#
|
#
|
||||||
|
|
|
@ -112,10 +112,10 @@ they should be all zeros:
|
||||||
|
|
||||||
0 1 2 3
|
0 1 2 3
|
||||||
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
|
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
|
||||||
+---+-+---+-----+---------------+---------------+---------------+
|
+---+-+-----+---+---------------+---------------+---------------+
|
||||||
|MGC|F|VER| RSV | MTIME | RSV |LOCAL NODE ID :
|
|MGC|F| RSV |VER| MTIME | RSV |LOCAL NODE ID :
|
||||||
|(2)|M|(2)| (3) | (8) | (8) | (20) :
|
|(2)|M| (3) |(2)| (8) | (8) | (20) :
|
||||||
| |T| | | | | :
|
| |T| | | | | :
|
||||||
+---+-+---+-----+-------+-------+-------+-------+---------------+
|
+---+-+---+-----+-------+-------+-------+-------+---------------+
|
||||||
:LOCAL NODE ID | RSV | NUM | RSV |
|
:LOCAL NODE ID | RSV | NUM | RSV |
|
||||||
: (continued) | (4) | NODE | (4) |
|
: (continued) | (4) | NODE | (4) |
|
||||||
|
|
|
@ -328,28 +328,31 @@ Opções HTTP / FTP
|
||||||
|
|
||||||
.. option:: --stream-piece-selector=<SELECTOR>
|
.. option:: --stream-piece-selector=<SELECTOR>
|
||||||
|
|
||||||
Specify piece selection algorithm used in HTTP e FTP download. Piece
|
Specify piece selection algorithm used in HTTP e FTP download. A piece is a
|
||||||
means fixed length segment which is downloaded in parallel in
|
fixed length segment which is downloaded in parallel in a segmented download.
|
||||||
segmented download. If ``default`` is given, aria2 selects piece so
|
|
||||||
that it reduces the number of establishing connection. This is
|
|
||||||
reasonable default behaviour because establishing connection is an
|
|
||||||
expensive operation. If ``inorder`` is given, aria2 selects piece
|
|
||||||
which has minimum index. Index=0 means first of the file. This will
|
|
||||||
be useful to view movie while downloading it.
|
|
||||||
:option:`--enable-http-pipelining` option may
|
|
||||||
be useful to reduce reconnection overhead. Please note that aria2
|
|
||||||
honors
|
|
||||||
:option:`--min-split-size <-k>` option,
|
|
||||||
so it will be necessary to specify a reasonable value to
|
|
||||||
:option:`--min-split-size <-k>` option.
|
|
||||||
If ``geom`` is given, at the beginning aria2 selects piece which has
|
|
||||||
minimum index like ``inorder``, but it exponentially increasingly
|
|
||||||
keeps space from previously selected piece. This will reduce the
|
|
||||||
number of establishing connection and at the same time it will
|
|
||||||
download the beginning part of the file first. This will be useful
|
|
||||||
to view movie while downloading it.
|
|
||||||
Padrão: ``default``
|
Padrão: ``default``
|
||||||
|
|
||||||
|
default
|
||||||
|
Select a piece to reduce the number of connections established.
|
||||||
|
This is reasonable default behaviour because establishing a connection is an
|
||||||
|
expensive operation.
|
||||||
|
inorder
|
||||||
|
Select a piece closest to the beginning of the file. This is useful for
|
||||||
|
viewing movies while downloading. :option:`--enable-http-pipelining` option
|
||||||
|
may be useful to reduce re-connection overhead. Note that aria2 honors
|
||||||
|
:option:`--min-split-size <-k>` option, so it will be necessary to specify
|
||||||
|
a reasonable value to :option:`--min-split-size <-k>` option.
|
||||||
|
random
|
||||||
|
Select a piece randomly. Like ``inorder``, :option:`--min-split-size <-k>`
|
||||||
|
option is honored.
|
||||||
|
geom
|
||||||
|
When starting to download a file, select a piece closest to the beginning
|
||||||
|
of the file like ``inorder``, but then exponentially increases space
|
||||||
|
between pieces.
|
||||||
|
This reduces the number of connections established, while
|
||||||
|
at the same time downloads the beginning part of the file first. This is
|
||||||
|
useful for viewing movies while downloading.
|
||||||
|
|
||||||
.. option:: -t, --timeout=<SEGUNDOS>
|
.. option:: -t, --timeout=<SEGUNDOS>
|
||||||
|
|
||||||
Set timeout in seconds.
|
Set timeout in seconds.
|
||||||
|
@ -407,7 +410,7 @@ Opções Específicas de HTTP e HTTPS
|
||||||
|
|
||||||
.. option:: --http-accept-gzip [true|false]
|
.. option:: --http-accept-gzip [true|false]
|
||||||
|
|
||||||
Envia cabeçalho requisição ``Accept: deflate, gzip`` e faz (inflate) se
|
Envia cabeçalho requisição ``Accept-Encoding: deflate, gzip`` e faz (inflate) se
|
||||||
o servidor remoto responder com ``Content-Encoding: gzip`` ou
|
o servidor remoto responder com ``Content-Encoding: gzip`` ou
|
||||||
``Content-Encoding: deflate``. Padrão: ``false``
|
``Content-Encoding: deflate``. Padrão: ``false``
|
||||||
|
|
||||||
|
@ -1206,7 +1209,7 @@ Opções Avançadas
|
||||||
your best choice. It allocates large(few GiB)
|
your best choice. It allocates large(few GiB)
|
||||||
files almost instantly. Don't use ``falloc`` with
|
files almost instantly. Don't use ``falloc`` with
|
||||||
legacy file systems such as ext3 and FAT32 because it takes
|
legacy file systems such as ext3 and FAT32 because it takes
|
||||||
almost same time as ``prealloc`` and it blocks aria2
|
almost the same time as ``prealloc`` and it blocks aria2
|
||||||
entirely until allocation finishes. ``falloc`` may
|
entirely until allocation finishes. ``falloc`` may
|
||||||
not be available if your system doesn't have
|
not be available if your system doesn't have
|
||||||
:manpage:`posix_fallocate(3)` function.
|
:manpage:`posix_fallocate(3)` function.
|
||||||
|
|
|
@ -451,10 +451,10 @@ HTTP(S)/FTP, они тут же могут выгружаться в BitTorrent-
|
||||||
|
|
||||||
.. option:: --http-accept-gzip [true|false]
|
.. option:: --http-accept-gzip [true|false]
|
||||||
|
|
||||||
Посылать ``Accept: deflate, gzip`` в запросе-заголовке и добавлять в ответ,
|
Посылать ``Accept-Encoding: deflate, gzip`` в запросе-заголовке и добавлять в ответ,
|
||||||
если удаленный сервер ответит ``Content-Encoding: gzip`` или
|
если удаленный сервер ответит ``Content-Encoding: gzip`` или
|
||||||
``Content-Encoding: deflate``.
|
``Content-Encoding: deflate``.
|
||||||
По умолчанию: 'false
|
По умолчанию: ``false``
|
||||||
|
|
||||||
.. note::
|
.. note::
|
||||||
|
|
||||||
|
@ -579,6 +579,10 @@ HTTP(S)/FTP, они тут же могут выгружаться в BitTorrent-
|
||||||
Использовать метод HEAD для первого запроса к HTTP серверу.
|
Использовать метод HEAD для первого запроса к HTTP серверу.
|
||||||
По умолчанию: ``false``
|
По умолчанию: ``false``
|
||||||
|
|
||||||
|
.. option:: --no-want-digest-header [true|false]
|
||||||
|
|
||||||
|
Отключить заголовок Want-Digest при выполнении запросов.
|
||||||
|
По умолчанию: ``false``
|
||||||
|
|
||||||
.. option:: -U, --user-agent=<USER_AGENT>
|
.. option:: -U, --user-agent=<USER_AGENT>
|
||||||
|
|
||||||
|
|
|
@ -12,7 +12,7 @@ from sphinx.locale import _
|
||||||
from sphinx.util.logging import getLogger
|
from sphinx.util.logging import getLogger
|
||||||
|
|
||||||
|
|
||||||
__version__ = '1.0.0rc2'
|
__version__ = '2.0.0rc5'
|
||||||
__version_full__ = __version__
|
__version_full__ = __version__
|
||||||
|
|
||||||
logger = getLogger(__name__)
|
logger = getLogger(__name__)
|
||||||
|
@ -31,33 +31,47 @@ def config_initiated(app, config):
|
||||||
_('The canonical_url option is deprecated, use the html_baseurl option from Sphinx instead.')
|
_('The canonical_url option is deprecated, use the html_baseurl option from Sphinx instead.')
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
def extend_html_context(app, pagename, templatename, context, doctree):
|
||||||
|
# Add ``sphinx_version_info`` tuple for use in Jinja templates
|
||||||
|
context['sphinx_version_info'] = sphinx_version
|
||||||
|
|
||||||
|
|
||||||
# See http://www.sphinx-doc.org/en/stable/theming.html#distribute-your-theme-as-a-python-package
|
# See http://www.sphinx-doc.org/en/stable/theming.html#distribute-your-theme-as-a-python-package
|
||||||
def setup(app):
|
def setup(app):
|
||||||
if python_version[0] < 3:
|
if python_version[0] < 3:
|
||||||
logger.warning("Python 2 is deprecated with sphinx_rtd_theme, update to Python 3")
|
logger.error("Python 2 is not supported with sphinx_rtd_theme, update to Python 3.")
|
||||||
app.require_sphinx('1.6')
|
|
||||||
if sphinx_version <= (2, 0, 0):
|
app.require_sphinx('5.0')
|
||||||
logger.warning("Sphinx 1.x is deprecated with sphinx_rtd_theme, update to Sphinx 2.x or greater")
|
if app.config.html4_writer:
|
||||||
if not app.config.html_experimental_html5_writer:
|
logger.error("'html4_writer' is not supported with sphinx_rtd_theme.")
|
||||||
logger.warning("'html4_writer' is deprecated with sphinx_rtd_theme")
|
|
||||||
else:
|
# Since Sphinx 6, jquery isn't bundled anymore and we need to ensure that
|
||||||
if app.config.html4_writer:
|
# the sphinxcontrib-jquery extension is enabled.
|
||||||
logger.warning("'html4_writer' is deprecated with sphinx_rtd_theme")
|
# See: https://dev.readthedocs.io/en/latest/design/sphinx-jquery.html
|
||||||
|
if sphinx_version >= (6, 0, 0):
|
||||||
|
# Documentation of Sphinx guarantees that an extension is added and
|
||||||
|
# enabled at most once.
|
||||||
|
# See: https://www.sphinx-doc.org/en/master/extdev/appapi.html#sphinx.application.Sphinx.setup_extension
|
||||||
|
app.setup_extension("sphinxcontrib.jquery")
|
||||||
|
# However, we need to call the extension's callback since setup_extension doesn't do it
|
||||||
|
# See: https://github.com/sphinx-contrib/jquery/issues/23
|
||||||
|
from sphinxcontrib.jquery import add_js_files as jquery_add_js_files
|
||||||
|
jquery_add_js_files(app, app.config)
|
||||||
|
|
||||||
# Register the theme that can be referenced without adding a theme path
|
# Register the theme that can be referenced without adding a theme path
|
||||||
app.add_html_theme('sphinx_rtd_theme', path.abspath(path.dirname(__file__)))
|
app.add_html_theme('sphinx_rtd_theme', path.abspath(path.dirname(__file__)))
|
||||||
|
|
||||||
if sphinx_version >= (1, 8, 0):
|
# Add Sphinx message catalog for newer versions of Sphinx
|
||||||
# Add Sphinx message catalog for newer versions of Sphinx
|
# See http://www.sphinx-doc.org/en/master/extdev/appapi.html#sphinx.application.Sphinx.add_message_catalog
|
||||||
# See http://www.sphinx-doc.org/en/master/extdev/appapi.html#sphinx.application.Sphinx.add_message_catalog
|
rtd_locale_path = path.join(path.abspath(path.dirname(__file__)), 'locale')
|
||||||
rtd_locale_path = path.join(path.abspath(path.dirname(__file__)), 'locale')
|
app.add_message_catalog('sphinx', rtd_locale_path)
|
||||||
app.add_message_catalog('sphinx', rtd_locale_path)
|
app.connect('config-inited', config_initiated)
|
||||||
app.connect('config-inited', config_initiated)
|
|
||||||
|
|
||||||
# sphinx emits the permalink icon for headers, so choose one more in keeping with our theme
|
# sphinx emits the permalink icon for headers, so choose one more in keeping with our theme
|
||||||
if sphinx_version >= (3, 5, 0):
|
app.config.html_permalinks_icon = "\uf0c1"
|
||||||
app.config.html_permalinks_icon = "\uf0c1"
|
|
||||||
else:
|
# Extend the default context when rendering the templates.
|
||||||
app.config.html_add_permalinks = "\uf0c1"
|
app.connect("html-page-context", extend_html_context)
|
||||||
|
|
||||||
return {'parallel_read_safe': True, 'parallel_write_safe': True}
|
return {'parallel_read_safe': True, 'parallel_write_safe': True}
|
||||||
|
|
|
@ -22,11 +22,11 @@
|
||||||
<div role="navigation" aria-label="{{ _('Page navigation') }}">
|
<div role="navigation" aria-label="{{ _('Page navigation') }}">
|
||||||
<ul class="wy-breadcrumbs">
|
<ul class="wy-breadcrumbs">
|
||||||
{%- block breadcrumbs %}
|
{%- block breadcrumbs %}
|
||||||
<li><a href="{{ pathto(master_doc) }}" class="icon icon-home"></a> »</li>
|
<li><a href="{{ pathto(master_doc) }}" class="icon icon-home" aria-label="Home"></a></li>
|
||||||
{%- for doc in parents %}
|
{%- for doc in parents %}
|
||||||
<li><a href="{{ doc.link|e }}">{{ doc.title }}</a> »</li>
|
<li class="breadcrumb-item"><a href="{{ doc.link|e }}">{{ doc.title }}</a></li>
|
||||||
{%- endfor %}
|
{%- endfor %}
|
||||||
<li>{{ title }}</li>
|
<li class="breadcrumb-item active">{{ title }}</li>
|
||||||
{%- endblock %}
|
{%- endblock %}
|
||||||
{%- block breadcrumbs_aside %}
|
{%- block breadcrumbs_aside %}
|
||||||
<li class="wy-breadcrumbs-aside">
|
<li class="wy-breadcrumbs-aside">
|
||||||
|
|
|
@ -51,7 +51,7 @@
|
||||||
{%- set readthedocs_web = '<a href="https://readthedocs.org">Read the Docs</a>' %}
|
{%- set readthedocs_web = '<a href="https://readthedocs.org">Read the Docs</a>' %}
|
||||||
{#- Translators: the variable "sphinx_web" is a link to the Sphinx project documentation with the text "Sphinx" #}
|
{#- Translators: the variable "sphinx_web" is a link to the Sphinx project documentation with the text "Sphinx" #}
|
||||||
{%- trans sphinx_web=sphinx_web, readthedocs_web=readthedocs_web %}Built with {{ sphinx_web }} using a{% endtrans %}
|
{%- trans sphinx_web=sphinx_web, readthedocs_web=readthedocs_web %}Built with {{ sphinx_web }} using a{% endtrans %}
|
||||||
{#- Translators: "theme" refers to a theme for Sphinx, which alters the appearance of the generated documenation #}
|
{#- Translators: "theme" refers to a theme for Sphinx, which alters the appearance of the generated documentation #}
|
||||||
<a href="https://github.com/readthedocs/sphinx_rtd_theme">{% trans %}theme{% endtrans %}</a>
|
<a href="https://github.com/readthedocs/sphinx_rtd_theme">{% trans %}theme{% endtrans %}</a>
|
||||||
{#- Translators: this is always used as "provided by Read the Docs", and should not imply Read the Docs is an author of the generated documentation. #}
|
{#- Translators: this is always used as "provided by Read the Docs", and should not imply Read the Docs is an author of the generated documentation. #}
|
||||||
{% trans %}provided by {{ readthedocs_web }}{% endtrans %}.
|
{% trans %}provided by {{ readthedocs_web }}{% endtrans %}.
|
||||||
|
|
|
@ -10,11 +10,11 @@
|
||||||
{%- set sphinx_writer = 'writer-html5' if html5_doctype else 'writer-html4' -%}
|
{%- set sphinx_writer = 'writer-html5' if html5_doctype else 'writer-html4' -%}
|
||||||
|
|
||||||
{# Build sphinx_version_info tuple from sphinx_version string in pure Jinja #}
|
{# Build sphinx_version_info tuple from sphinx_version string in pure Jinja #}
|
||||||
{%- set (_ver_major, _ver_minor, _ver_bugfix) = sphinx_version.split('.') | map('int') -%}
|
{%- set (_ver_major, _ver_minor) = (sphinx_version.split('.') | list)[:2] | map('int') -%}
|
||||||
{%- set sphinx_version_info = (_ver_major, _ver_minor, _ver_bugfix) -%}
|
{%- set sphinx_version_info = (_ver_major, _ver_minor, -1) -%}
|
||||||
|
|
||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<html class="{{ sphinx_writer }}" lang="{{ lang_attr }}" >
|
<html class="{{ sphinx_writer }}" lang="{{ lang_attr }}"{% if sphinx_version_info >= (7, 2) %} data-content_root="{{ content_root }}"{% endif %}>
|
||||||
<head>
|
<head>
|
||||||
<meta charset="utf-8" />
|
<meta charset="utf-8" />
|
||||||
{{- metatags }}
|
{{- metatags }}
|
||||||
|
@ -28,26 +28,27 @@
|
||||||
<link rel="stylesheet" href="{{ pathto('_static/' + style, 1) }}" type="text/css" />
|
<link rel="stylesheet" href="{{ pathto('_static/' + style, 1) }}" type="text/css" />
|
||||||
<link rel="stylesheet" href="{{ pathto('_static/pygments.css', 1) }}" type="text/css" />
|
<link rel="stylesheet" href="{{ pathto('_static/pygments.css', 1) }}" type="text/css" />
|
||||||
{%- endif %}
|
{%- endif %}
|
||||||
{%- for css in css_files %}
|
{%- for css_file in css_files %}
|
||||||
{%- if css|attr("rel") %}
|
{%- if css_file|attr("filename") %}
|
||||||
<link rel="{{ css.rel }}" href="{{ pathto(css.filename, 1) }}" type="text/css"{% if css.title is not none %} title="{{ css.title }}"{% endif %} />
|
{{ css_tag(css_file) }}
|
||||||
{%- else %}
|
{%- else %}
|
||||||
<link rel="stylesheet" href="{{ pathto(css, 1) }}" type="text/css" />
|
<link rel="stylesheet" href="{{ pathto(css_file, 1)|escape }}" type="text/css" />
|
||||||
{%- endif %}
|
{%- endif %}
|
||||||
{%- endfor %}
|
{%- endfor %}
|
||||||
|
|
||||||
{%- for cssfile in extra_css_files %}
|
{# "extra_css_files" is a theme option and it's always a string #}
|
||||||
<link rel="stylesheet" href="{{ pathto(cssfile, 1) }}" type="text/css" />
|
{%- for css_file in extra_css_files %}
|
||||||
|
<link rel="stylesheet" href="{{ pathto(css_file, 1)|escape }}" type="text/css" />
|
||||||
{%- endfor -%}
|
{%- endfor -%}
|
||||||
|
|
||||||
{#- FAVICON #}
|
{#- FAVICON
|
||||||
{%- if favicon %}
|
favicon_url is the only context var necessary since Sphinx 4.
|
||||||
{%- if sphinx_version_info < (4, 0) -%}
|
In Sphinx<4, we use favicon but need to prepend path info.
|
||||||
<link rel="shortcut icon" href="{{ pathto('_static/' + favicon, 1) }}"/>
|
#}
|
||||||
{%- else %}
|
{%- set _favicon_url = favicon_url | default(pathto('_static/' + (favicon or ""), 1)) %}
|
||||||
<link rel="shortcut icon" href="{{ favicon_url }}"/>
|
{%- if favicon_url or favicon %}
|
||||||
{%- endif %}
|
<link rel="shortcut icon" href="{{ _favicon_url }}"/>
|
||||||
{%- endif -%}
|
{%- endif %}
|
||||||
|
|
||||||
{#- CANONICAL URL (deprecated) #}
|
{#- CANONICAL URL (deprecated) #}
|
||||||
{%- if theme_canonical_url and not pageurl %}
|
{%- if theme_canonical_url and not pageurl %}
|
||||||
|
@ -133,22 +134,15 @@
|
||||||
<div class="wy-side-nav-search" {% if theme_style_nav_header_background %} style="background: {{theme_style_nav_header_background}}" {% endif %}>
|
<div class="wy-side-nav-search" {% if theme_style_nav_header_background %} style="background: {{theme_style_nav_header_background}}" {% endif %}>
|
||||||
{%- block sidebartitle %}
|
{%- block sidebartitle %}
|
||||||
|
|
||||||
{%- if logo and theme_logo_only %}
|
{# the logo helper function was removed in Sphinx 6 and deprecated since Sphinx 4 #}
|
||||||
<a href="{{ pathto(master_doc) }}">
|
{# the master_doc variable was renamed to root_doc in Sphinx 4 (master_doc still exists in later Sphinx versions) #}
|
||||||
{%- else %}
|
{%- set _logo_url = logo_url|default(pathto('_static/' + (logo or ""), 1)) %}
|
||||||
<a href="{{ pathto(master_doc) }}" class="icon icon-home"> {{ project }}
|
{%- set _root_doc = root_doc|default(master_doc) %}
|
||||||
{%- endif %}
|
<a href="{{ pathto(_root_doc) }}"{% if not theme_logo_only %} class="icon icon-home"{% endif %}>
|
||||||
|
{% if not theme_logo_only %}{{ project }}{% endif %}
|
||||||
{%- if logo %}
|
{%- if logo or logo_url %}
|
||||||
{#- Not strictly valid HTML, but it's the only way to display/scale
|
<img src="{{ _logo_url }}" class="logo" alt="{{ _('Logo') }}"/>
|
||||||
it properly, without weird scripting or heaps of work
|
|
||||||
#}
|
|
||||||
{%- if sphinx_version_info < (4, 0) -%}
|
|
||||||
<img src="{{ pathto('_static/' + logo, 1) }}" class="logo" alt="{{ _('Logo') }}"/>
|
|
||||||
{%- else %}
|
|
||||||
<img src="{{ logo_url }}" class="logo" alt="{{ _('Logo') }}"/>
|
|
||||||
{%- endif %}
|
{%- endif %}
|
||||||
{%- endif %}
|
|
||||||
</a>
|
</a>
|
||||||
|
|
||||||
{%- if theme_display_version %}
|
{%- if theme_display_version %}
|
||||||
|
|
Binary file not shown.
|
@ -0,0 +1,206 @@
|
||||||
|
# English translations for sphinx_rtd_theme.
|
||||||
|
# Copyright (C) 2019 ORGANIZATION
|
||||||
|
# This file is distributed under the same license as the sphinx_rtd_theme
|
||||||
|
# project.
|
||||||
|
# FIRST AUTHOR <EMAIL@ADDRESS>, 2019.
|
||||||
|
#
|
||||||
|
# Translators:
|
||||||
|
# Benjamin Bach <benjaoming@gmail.com>, 2023
|
||||||
|
#
|
||||||
|
msgid ""
|
||||||
|
msgstr ""
|
||||||
|
"Project-Id-Version: sphinx_rtd_theme 0.4.3.dev0\n"
|
||||||
|
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
|
||||||
|
"POT-Creation-Date: 2023-02-06 15:36+0100\n"
|
||||||
|
"PO-Revision-Date: 2019-07-16 21:44+0000\n"
|
||||||
|
"Last-Translator: Benjamin Bach <benjaoming@gmail.com>, 2023\n"
|
||||||
|
"Language-Team: Danish (https://www.transifex.com/readthedocs/teams/101354/da/)\n"
|
||||||
|
"MIME-Version: 1.0\n"
|
||||||
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
|
"Generated-By: Babel 2.11.0\n"
|
||||||
|
"Language: da\n"
|
||||||
|
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||||
|
|
||||||
|
#. This is an ARIA section label for page links, including previous/next page
|
||||||
|
#. link and links to GitHub/GitLab/etc.
|
||||||
|
#: sphinx_rtd_theme/breadcrumbs.html:22
|
||||||
|
msgid "Page navigation"
|
||||||
|
msgstr "Navigation"
|
||||||
|
|
||||||
|
#: sphinx_rtd_theme/breadcrumbs.html:37 sphinx_rtd_theme/breadcrumbs.html:39
|
||||||
|
msgid "Edit on GitHub"
|
||||||
|
msgstr "Ret på GitHub"
|
||||||
|
|
||||||
|
#: sphinx_rtd_theme/breadcrumbs.html:44 sphinx_rtd_theme/breadcrumbs.html:46
|
||||||
|
msgid "Edit on Bitbucket"
|
||||||
|
msgstr "Ret på Bitbucket"
|
||||||
|
|
||||||
|
#: sphinx_rtd_theme/breadcrumbs.html:51 sphinx_rtd_theme/breadcrumbs.html:53
|
||||||
|
msgid "Edit on GitLab"
|
||||||
|
msgstr "Ret på GitLab"
|
||||||
|
|
||||||
|
#: sphinx_rtd_theme/breadcrumbs.html:56 sphinx_rtd_theme/breadcrumbs.html:58
|
||||||
|
msgid "View page source"
|
||||||
|
msgstr "Vis sidekilde"
|
||||||
|
|
||||||
|
#. This is an ARIA section label for sequential page links, such as previous
|
||||||
|
#. and next page links.
|
||||||
|
#: sphinx_rtd_theme/breadcrumbs.html:67
|
||||||
|
msgid "Sequential page navigation"
|
||||||
|
msgstr "Sekventiel navigation"
|
||||||
|
|
||||||
|
#: sphinx_rtd_theme/breadcrumbs.html:69 sphinx_rtd_theme/footer.html:6
|
||||||
|
msgid "Previous"
|
||||||
|
msgstr "Forrige"
|
||||||
|
|
||||||
|
#: sphinx_rtd_theme/breadcrumbs.html:72 sphinx_rtd_theme/footer.html:9
|
||||||
|
msgid "Next"
|
||||||
|
msgstr "Næste"
|
||||||
|
|
||||||
|
#. This is an ARIA section label for the footer section of the page.
|
||||||
|
#: sphinx_rtd_theme/footer.html:4
|
||||||
|
msgid "Footer"
|
||||||
|
msgstr "Sidefod"
|
||||||
|
|
||||||
|
#: sphinx_rtd_theme/footer.html:21
|
||||||
|
#, python-format
|
||||||
|
msgid "© <a href=\"%(path)s\">Copyright</a> %(copyright)s."
|
||||||
|
msgstr "© <a href=\"%(path)s\">Copyright</a> %(copyright)s."
|
||||||
|
|
||||||
|
#: sphinx_rtd_theme/footer.html:23
|
||||||
|
#, python-format
|
||||||
|
msgid "© Copyright %(copyright)s."
|
||||||
|
msgstr "© Copyright %(copyright)s."
|
||||||
|
|
||||||
|
#. Build is a noun, not a verb
|
||||||
|
#: sphinx_rtd_theme/footer.html:30
|
||||||
|
msgid "Build"
|
||||||
|
msgstr "Build"
|
||||||
|
|
||||||
|
#. the phrase "revision" comes from Git, referring to a commit
|
||||||
|
#: sphinx_rtd_theme/footer.html:36
|
||||||
|
msgid "Revision"
|
||||||
|
msgstr "Version"
|
||||||
|
|
||||||
|
#: sphinx_rtd_theme/footer.html:41
|
||||||
|
#, python-format
|
||||||
|
msgid "Last updated on %(last_updated)s."
|
||||||
|
msgstr "Last updated on %(last_updated)s."
|
||||||
|
|
||||||
|
#. the variable "sphinx_web" is a link to the Sphinx project documentation
|
||||||
|
#. with
|
||||||
|
#. the text "Sphinx"
|
||||||
|
#: sphinx_rtd_theme/footer.html:53
|
||||||
|
#, python-format
|
||||||
|
msgid "Built with %(sphinx_web)s using a"
|
||||||
|
msgstr "Baseret på %(sphinx_web)s med et"
|
||||||
|
|
||||||
|
#. "theme" refers to a theme for Sphinx, which alters the appearance of the
|
||||||
|
#. generated documentation
|
||||||
|
#: sphinx_rtd_theme/footer.html:55
|
||||||
|
msgid "theme"
|
||||||
|
msgstr "tema"
|
||||||
|
|
||||||
|
#. this is always used as "provided by Read the Docs", and should not imply
|
||||||
|
#. Read the Docs is an author of the generated documentation.
|
||||||
|
#: sphinx_rtd_theme/footer.html:57
|
||||||
|
#, python-format
|
||||||
|
msgid "provided by %(readthedocs_web)s"
|
||||||
|
msgstr "udviklet af%(readthedocs_web)s"
|
||||||
|
|
||||||
|
#: sphinx_rtd_theme/layout.html:97
|
||||||
|
#, python-format
|
||||||
|
msgid "Search within %(docstitle)s"
|
||||||
|
msgstr "Søg i %(docstitle)s"
|
||||||
|
|
||||||
|
#: sphinx_rtd_theme/layout.html:105
|
||||||
|
msgid "About these documents"
|
||||||
|
msgstr "Om disse dokumenter"
|
||||||
|
|
||||||
|
#: sphinx_rtd_theme/layout.html:108
|
||||||
|
msgid "Index"
|
||||||
|
msgstr "Indeks"
|
||||||
|
|
||||||
|
#: sphinx_rtd_theme/layout.html:111 sphinx_rtd_theme/search.html:11
|
||||||
|
msgid "Search"
|
||||||
|
msgstr "Søg"
|
||||||
|
|
||||||
|
#: sphinx_rtd_theme/layout.html:114
|
||||||
|
msgid "Copyright"
|
||||||
|
msgstr "Copyright"
|
||||||
|
|
||||||
|
#: sphinx_rtd_theme/layout.html:143
|
||||||
|
msgid "Logo"
|
||||||
|
msgstr "Logo"
|
||||||
|
|
||||||
|
#. This is an ARIA section label for the main navigation menu
|
||||||
|
#: sphinx_rtd_theme/layout.html:166
|
||||||
|
msgid "Navigation menu"
|
||||||
|
msgstr "Navigation"
|
||||||
|
|
||||||
|
#. This is an ARIA section label for the navigation menu that is visible when
|
||||||
|
#. viewing the page on mobile devices
|
||||||
|
#: sphinx_rtd_theme/layout.html:188
|
||||||
|
msgid "Mobile navigation menu"
|
||||||
|
msgstr "Mobil navigation"
|
||||||
|
|
||||||
|
#: sphinx_rtd_theme/search.html:31
|
||||||
|
msgid "Please activate JavaScript to enable the search functionality."
|
||||||
|
msgstr "Venligst aktivér JavaScript for at anvende søgefunktionen"
|
||||||
|
|
||||||
|
#. Search is a noun, not a verb
|
||||||
|
#: sphinx_rtd_theme/search.html:39
|
||||||
|
msgid "Search Results"
|
||||||
|
msgstr "Søgeresultater"
|
||||||
|
|
||||||
|
#: sphinx_rtd_theme/search.html:41
|
||||||
|
msgid ""
|
||||||
|
"Your search did not match any documents. Please make sure that all words are"
|
||||||
|
" spelled correctly and that you've selected enough categories."
|
||||||
|
msgstr ""
|
||||||
|
"Din søgning matchede ingen dokumenter. Tjek at alle ord er stavet korrekt og"
|
||||||
|
" at du har valgt tilstrækkeligt med kategorier."
|
||||||
|
|
||||||
|
#: sphinx_rtd_theme/searchbox.html:4
|
||||||
|
msgid "Search docs"
|
||||||
|
msgstr "Søg i dokumentation"
|
||||||
|
|
||||||
|
#: sphinx_rtd_theme/versions.html:3 sphinx_rtd_theme/versions.html:11
|
||||||
|
msgid "Versions"
|
||||||
|
msgstr "Versioner"
|
||||||
|
|
||||||
|
#: sphinx_rtd_theme/versions.html:17
|
||||||
|
msgid "Downloads"
|
||||||
|
msgstr "Downloads"
|
||||||
|
|
||||||
|
#. The phrase "Read the Docs" is not translated
|
||||||
|
#: sphinx_rtd_theme/versions.html:24
|
||||||
|
msgid "On Read the Docs"
|
||||||
|
msgstr "På Read the Docs"
|
||||||
|
|
||||||
|
#: sphinx_rtd_theme/versions.html:26
|
||||||
|
msgid "Project Home"
|
||||||
|
msgstr "Projektets startside"
|
||||||
|
|
||||||
|
#: sphinx_rtd_theme/versions.html:29
|
||||||
|
msgid "Builds"
|
||||||
|
msgstr "Builds"
|
||||||
|
|
||||||
|
#~ msgid "Docs"
|
||||||
|
#~ msgstr "Dokumentation"
|
||||||
|
|
||||||
|
#~ msgid "Free document hosting provided by"
|
||||||
|
#~ msgstr "Gratis hosting af dokumentation leveret af"
|
||||||
|
|
||||||
|
#~ msgid "Documentation Home"
|
||||||
|
#~ msgstr "Dokumentationens startside"
|
||||||
|
|
||||||
|
#~ msgid "Breadcrumbs"
|
||||||
|
#~ msgstr "Sti"
|
||||||
|
|
||||||
|
#~ msgid "Main"
|
||||||
|
#~ msgstr "Primær"
|
||||||
|
|
||||||
|
#~ msgid "Top"
|
||||||
|
#~ msgstr "Top"
|
Binary file not shown.
|
@ -11,14 +11,14 @@ msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: sphinx_rtd_theme 0.4.3.dev0\n"
|
"Project-Id-Version: sphinx_rtd_theme 0.4.3.dev0\n"
|
||||||
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
|
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
|
||||||
"POT-Creation-Date: 2021-08-17 10:02-0600\n"
|
"POT-Creation-Date: 2023-02-06 15:36+0100\n"
|
||||||
"PO-Revision-Date: 2019-07-16 21:44+0000\n"
|
"PO-Revision-Date: 2019-07-16 21:44+0000\n"
|
||||||
"Last-Translator: Tom Kunze <transifex.com@tomabrafix.de>, 2019\n"
|
"Last-Translator: Tom Kunze <transifex.com@tomabrafix.de>, 2019\n"
|
||||||
"Language-Team: German (https://www.transifex.com/readthedocs/teams/101354/de/)\n"
|
"Language-Team: German (https://www.transifex.com/readthedocs/teams/101354/de/)\n"
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"Generated-By: Babel 2.8.0\n"
|
"Generated-By: Babel 2.11.0\n"
|
||||||
"Language: de\n"
|
"Language: de\n"
|
||||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||||
|
|
||||||
|
@ -92,7 +92,7 @@ msgstr "Suche"
|
||||||
msgid "Copyright"
|
msgid "Copyright"
|
||||||
msgstr "Copyright"
|
msgstr "Copyright"
|
||||||
|
|
||||||
#: sphinx_rtd_theme/layout.html:147 sphinx_rtd_theme/layout.html:149
|
#: sphinx_rtd_theme/layout.html:143
|
||||||
msgid "Logo"
|
msgid "Logo"
|
||||||
msgstr "Logo"
|
msgstr "Logo"
|
||||||
|
|
||||||
|
@ -134,9 +134,3 @@ msgstr "Projektübersicht"
|
||||||
#: sphinx_rtd_theme/versions.html:29
|
#: sphinx_rtd_theme/versions.html:29
|
||||||
msgid "Builds"
|
msgid "Builds"
|
||||||
msgstr "Builds"
|
msgstr "Builds"
|
||||||
|
|
||||||
#~ msgid "Docs"
|
|
||||||
#~ msgstr "Dokumentation"
|
|
||||||
|
|
||||||
#~ msgid "Free document hosting provided by"
|
|
||||||
#~ msgstr "Kostenloses Dokumentationen-Hosting zur Verfügung gestellt von"
|
|
||||||
|
|
Binary file not shown.
|
@ -8,16 +8,16 @@ msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: sphinx_rtd_theme 0.4.3.dev0\n"
|
"Project-Id-Version: sphinx_rtd_theme 0.4.3.dev0\n"
|
||||||
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
|
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
|
||||||
"POT-Creation-Date: 2021-08-17 10:02-0600\n"
|
"POT-Creation-Date: 2023-02-06 15:36+0100\n"
|
||||||
"PO-Revision-Date: 2019-07-16 15:43-0600\n"
|
"PO-Revision-Date: 2019-07-16 15:43-0600\n"
|
||||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||||
"Language: en\n"
|
"Language: en\n"
|
||||||
"Language-Team: en <LL@li.org>\n"
|
"Language-Team: en <LL@li.org>\n"
|
||||||
"Plural-Forms: nplurals=2; plural=(n != 1)\n"
|
"Plural-Forms: nplurals=2; plural=(n != 1);\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"
|
||||||
"Generated-By: Babel 2.8.0\n"
|
"Generated-By: Babel 2.11.0\n"
|
||||||
|
|
||||||
#. This is an ARIA section label for page links, including previous/next page
|
#. This is an ARIA section label for page links, including previous/next page
|
||||||
#. link and links to GitHub/GitLab/etc.
|
#. link and links to GitHub/GitLab/etc.
|
||||||
|
@ -93,7 +93,7 @@ msgid "Built with %(sphinx_web)s using a"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#. "theme" refers to a theme for Sphinx, which alters the appearance of the
|
#. "theme" refers to a theme for Sphinx, which alters the appearance of the
|
||||||
#. generated documenation
|
#. generated documentation
|
||||||
#: sphinx_rtd_theme/footer.html:55
|
#: sphinx_rtd_theme/footer.html:55
|
||||||
msgid "theme"
|
msgid "theme"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
@ -126,18 +126,18 @@ msgstr ""
|
||||||
msgid "Copyright"
|
msgid "Copyright"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: sphinx_rtd_theme/layout.html:147 sphinx_rtd_theme/layout.html:149
|
#: sphinx_rtd_theme/layout.html:143
|
||||||
msgid "Logo"
|
msgid "Logo"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#. This is an ARIA section label for the main navigation menu
|
#. This is an ARIA section label for the main navigation menu
|
||||||
#: sphinx_rtd_theme/layout.html:173
|
#: sphinx_rtd_theme/layout.html:166
|
||||||
msgid "Navigation menu"
|
msgid "Navigation menu"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#. This is an ARIA section label for the navigation menu that is visible when
|
#. This is an ARIA section label for the navigation menu that is visible when
|
||||||
#. viewing the page on mobile devices
|
#. viewing the page on mobile devices
|
||||||
#: sphinx_rtd_theme/layout.html:195
|
#: sphinx_rtd_theme/layout.html:188
|
||||||
msgid "Mobile navigation menu"
|
msgid "Mobile navigation menu"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
|
Binary file not shown.
|
@ -6,23 +6,23 @@
|
||||||
#
|
#
|
||||||
# Translators:
|
# Translators:
|
||||||
# Anthony <aj@ohess.org>, 2019
|
# Anthony <aj@ohess.org>, 2019
|
||||||
# Leonardo J. Caballero G. <leonardocaballero@gmail.com>, 2020
|
|
||||||
# Radina Matic <radina.matic@gmail.com>, 2021
|
# Radina Matic <radina.matic@gmail.com>, 2021
|
||||||
|
# Leonardo J. Caballero G. <leonardocaballero@gmail.com>, 2022
|
||||||
#
|
#
|
||||||
msgid ""
|
msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: sphinx_rtd_theme 0.4.3.dev0\n"
|
"Project-Id-Version: sphinx_rtd_theme 0.4.3.dev0\n"
|
||||||
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
|
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
|
||||||
"POT-Creation-Date: 2021-08-17 10:02-0600\n"
|
"POT-Creation-Date: 2023-02-06 15:36+0100\n"
|
||||||
"PO-Revision-Date: 2019-07-16 21:44+0000\n"
|
"PO-Revision-Date: 2019-07-16 21:44+0000\n"
|
||||||
"Last-Translator: Radina Matic <radina.matic@gmail.com>, 2021\n"
|
"Last-Translator: Leonardo J. Caballero G. <leonardocaballero@gmail.com>, 2022\n"
|
||||||
"Language-Team: Spanish (https://www.transifex.com/readthedocs/teams/101354/es/)\n"
|
"Language-Team: Spanish (https://www.transifex.com/readthedocs/teams/101354/es/)\n"
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"Generated-By: Babel 2.8.0\n"
|
"Generated-By: Babel 2.11.0\n"
|
||||||
"Language: es\n"
|
"Language: es\n"
|
||||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
"Plural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
|
||||||
|
|
||||||
#: sphinx_rtd_theme/breadcrumbs.html:37 sphinx_rtd_theme/breadcrumbs.html:39
|
#: sphinx_rtd_theme/breadcrumbs.html:37 sphinx_rtd_theme/breadcrumbs.html:39
|
||||||
msgid "Edit on GitHub"
|
msgid "Edit on GitHub"
|
||||||
|
@ -48,6 +48,21 @@ msgstr "Anterior"
|
||||||
msgid "Next"
|
msgid "Next"
|
||||||
msgstr "Siguiente"
|
msgstr "Siguiente"
|
||||||
|
|
||||||
|
#. This is an ARIA section label for the footer section of the page.
|
||||||
|
#: sphinx_rtd_theme/footer.html:4
|
||||||
|
msgid "Footer"
|
||||||
|
msgstr "Pie de página"
|
||||||
|
|
||||||
|
#: sphinx_rtd_theme/footer.html:21
|
||||||
|
#, python-format
|
||||||
|
msgid "© <a href=\"%(path)s\">Copyright</a> %(copyright)s."
|
||||||
|
msgstr "© <a href=\"%(path)s\">Derechos de autor</a> %(copyright)s."
|
||||||
|
|
||||||
|
#: sphinx_rtd_theme/footer.html:23
|
||||||
|
#, python-format
|
||||||
|
msgid "© Copyright %(copyright)s."
|
||||||
|
msgstr "© Derechos de autor %(copyright)s."
|
||||||
|
|
||||||
#. Build is a noun, not a verb
|
#. Build is a noun, not a verb
|
||||||
#: sphinx_rtd_theme/footer.html:30
|
#: sphinx_rtd_theme/footer.html:30
|
||||||
msgid "Build"
|
msgid "Build"
|
||||||
|
@ -72,7 +87,7 @@ msgid "Built with %(sphinx_web)s using a"
|
||||||
msgstr "Compilado con %(sphinx_web)s usando un"
|
msgstr "Compilado con %(sphinx_web)s usando un"
|
||||||
|
|
||||||
#. "theme" refers to a theme for Sphinx, which alters the appearance of the
|
#. "theme" refers to a theme for Sphinx, which alters the appearance of the
|
||||||
#. generated documenation
|
#. generated documentation
|
||||||
#: sphinx_rtd_theme/footer.html:55
|
#: sphinx_rtd_theme/footer.html:55
|
||||||
msgid "theme"
|
msgid "theme"
|
||||||
msgstr "tema"
|
msgstr "tema"
|
||||||
|
@ -105,7 +120,7 @@ msgstr "Búsqueda"
|
||||||
msgid "Copyright"
|
msgid "Copyright"
|
||||||
msgstr "Derechos de autor"
|
msgstr "Derechos de autor"
|
||||||
|
|
||||||
#: sphinx_rtd_theme/layout.html:147 sphinx_rtd_theme/layout.html:149
|
#: sphinx_rtd_theme/layout.html:143
|
||||||
msgid "Logo"
|
msgid "Logo"
|
||||||
msgstr "Logotipo"
|
msgstr "Logotipo"
|
||||||
|
|
||||||
|
@ -152,12 +167,3 @@ msgstr "Página de Proyecto"
|
||||||
#: sphinx_rtd_theme/versions.html:29
|
#: sphinx_rtd_theme/versions.html:29
|
||||||
msgid "Builds"
|
msgid "Builds"
|
||||||
msgstr "Compilaciones"
|
msgstr "Compilaciones"
|
||||||
|
|
||||||
#~ msgid "Docs"
|
|
||||||
#~ msgstr "Documentos"
|
|
||||||
|
|
||||||
#~ msgid "Free document hosting provided by"
|
|
||||||
#~ msgstr "Alojamiento gratuito de documentación proporcionado por"
|
|
||||||
|
|
||||||
#~ msgid "Documentation Home"
|
|
||||||
#~ msgstr "Inicio de Documentación"
|
|
||||||
|
|
Binary file not shown.
|
@ -12,14 +12,14 @@ msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: sphinx_rtd_theme 0.4.3.dev0\n"
|
"Project-Id-Version: sphinx_rtd_theme 0.4.3.dev0\n"
|
||||||
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
|
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
|
||||||
"POT-Creation-Date: 2021-08-17 10:02-0600\n"
|
"POT-Creation-Date: 2023-02-06 15:36+0100\n"
|
||||||
"PO-Revision-Date: 2019-07-16 21:44+0000\n"
|
"PO-Revision-Date: 2019-07-16 21:44+0000\n"
|
||||||
"Last-Translator: Ivar Smolin <okul@linux.ee>, 2021\n"
|
"Last-Translator: Ivar Smolin <okul@linux.ee>, 2021\n"
|
||||||
"Language-Team: Estonian (https://www.transifex.com/readthedocs/teams/101354/et/)\n"
|
"Language-Team: Estonian (https://www.transifex.com/readthedocs/teams/101354/et/)\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"
|
||||||
"Generated-By: Babel 2.8.0\n"
|
"Generated-By: Babel 2.11.0\n"
|
||||||
"Language: et\n"
|
"Language: et\n"
|
||||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||||
|
|
||||||
|
@ -47,6 +47,11 @@ msgstr "Eelmine"
|
||||||
msgid "Next"
|
msgid "Next"
|
||||||
msgstr "Järgmine"
|
msgstr "Järgmine"
|
||||||
|
|
||||||
|
#. This is an ARIA section label for the footer section of the page.
|
||||||
|
#: sphinx_rtd_theme/footer.html:4
|
||||||
|
msgid "Footer"
|
||||||
|
msgstr "Jalus"
|
||||||
|
|
||||||
#: sphinx_rtd_theme/footer.html:21
|
#: sphinx_rtd_theme/footer.html:21
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "© <a href=\"%(path)s\">Copyright</a> %(copyright)s."
|
msgid "© <a href=\"%(path)s\">Copyright</a> %(copyright)s."
|
||||||
|
@ -81,7 +86,7 @@ msgid "Built with %(sphinx_web)s using a"
|
||||||
msgstr "Ehitatud %(sphinx_web)s'iga,"
|
msgstr "Ehitatud %(sphinx_web)s'iga,"
|
||||||
|
|
||||||
#. "theme" refers to a theme for Sphinx, which alters the appearance of the
|
#. "theme" refers to a theme for Sphinx, which alters the appearance of the
|
||||||
#. generated documenation
|
#. generated documentation
|
||||||
#: sphinx_rtd_theme/footer.html:55
|
#: sphinx_rtd_theme/footer.html:55
|
||||||
msgid "theme"
|
msgid "theme"
|
||||||
msgstr "kujundusteema"
|
msgstr "kujundusteema"
|
||||||
|
@ -114,7 +119,7 @@ msgstr "Otsing"
|
||||||
msgid "Copyright"
|
msgid "Copyright"
|
||||||
msgstr "Autoriõigus"
|
msgstr "Autoriõigus"
|
||||||
|
|
||||||
#: sphinx_rtd_theme/layout.html:147 sphinx_rtd_theme/layout.html:149
|
#: sphinx_rtd_theme/layout.html:143
|
||||||
msgid "Logo"
|
msgid "Logo"
|
||||||
msgstr "Logo"
|
msgstr "Logo"
|
||||||
|
|
||||||
|
@ -159,12 +164,3 @@ msgstr "Projekti kodu"
|
||||||
#: sphinx_rtd_theme/versions.html:29
|
#: sphinx_rtd_theme/versions.html:29
|
||||||
msgid "Builds"
|
msgid "Builds"
|
||||||
msgstr "Ehitused"
|
msgstr "Ehitused"
|
||||||
|
|
||||||
#~ msgid "Docs"
|
|
||||||
#~ msgstr "Dokumendid"
|
|
||||||
|
|
||||||
#~ msgid "Free document hosting provided by"
|
|
||||||
#~ msgstr "Dokumentatsiooni majutab tasuta"
|
|
||||||
|
|
||||||
#~ msgid "Documentation Home"
|
|
||||||
#~ msgstr "Dokumentatsiooni kodu"
|
|
||||||
|
|
Binary file not shown.
|
@ -6,19 +6,20 @@
|
||||||
#
|
#
|
||||||
# Translators:
|
# Translators:
|
||||||
# Anthony <aj@ohess.org>, 2021
|
# Anthony <aj@ohess.org>, 2021
|
||||||
|
# Peyman M., 2022
|
||||||
#
|
#
|
||||||
msgid ""
|
msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: sphinx_rtd_theme 0.4.3.dev0\n"
|
"Project-Id-Version: sphinx_rtd_theme 0.4.3.dev0\n"
|
||||||
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
|
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
|
||||||
"POT-Creation-Date: 2021-08-17 10:02-0600\n"
|
"POT-Creation-Date: 2023-02-06 15:36+0100\n"
|
||||||
"PO-Revision-Date: 2019-07-16 21:44+0000\n"
|
"PO-Revision-Date: 2019-07-16 21:44+0000\n"
|
||||||
"Last-Translator: Anthony <aj@ohess.org>, 2021\n"
|
"Last-Translator: Peyman M., 2022\n"
|
||||||
"Language-Team: Persian (Iran) (https://www.transifex.com/readthedocs/teams/101354/fa_IR/)\n"
|
"Language-Team: Persian (Iran) (https://www.transifex.com/readthedocs/teams/101354/fa_IR/)\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"
|
||||||
"Generated-By: Babel 2.8.0\n"
|
"Generated-By: Babel 2.11.0\n"
|
||||||
"Language: fa_IR\n"
|
"Language: fa_IR\n"
|
||||||
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
|
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
|
||||||
|
|
||||||
|
@ -80,7 +81,7 @@ msgid "Built with %(sphinx_web)s using a"
|
||||||
msgstr "ساخته شده با %(sphinx_web)s"
|
msgstr "ساخته شده با %(sphinx_web)s"
|
||||||
|
|
||||||
#. "theme" refers to a theme for Sphinx, which alters the appearance of the
|
#. "theme" refers to a theme for Sphinx, which alters the appearance of the
|
||||||
#. generated documenation
|
#. generated documentation
|
||||||
#: sphinx_rtd_theme/footer.html:55
|
#: sphinx_rtd_theme/footer.html:55
|
||||||
msgid "theme"
|
msgid "theme"
|
||||||
msgstr "پوسته"
|
msgstr "پوسته"
|
||||||
|
@ -113,7 +114,7 @@ msgstr "جستجوی"
|
||||||
msgid "Copyright"
|
msgid "Copyright"
|
||||||
msgstr "کپی رایت"
|
msgstr "کپی رایت"
|
||||||
|
|
||||||
#: sphinx_rtd_theme/layout.html:147 sphinx_rtd_theme/layout.html:149
|
#: sphinx_rtd_theme/layout.html:143
|
||||||
msgid "Logo"
|
msgid "Logo"
|
||||||
msgstr "آرم"
|
msgstr "آرم"
|
||||||
|
|
||||||
|
|
Binary file not shown.
|
@ -6,23 +6,24 @@
|
||||||
#
|
#
|
||||||
# Translators:
|
# Translators:
|
||||||
# Anthony <aj@ohess.org>, 2020
|
# Anthony <aj@ohess.org>, 2020
|
||||||
# Nicolas Friedli <nicolas.friedli@gmail.com>, 2021
|
|
||||||
# Radina Matic <radina.matic@gmail.com>, 2021
|
# Radina Matic <radina.matic@gmail.com>, 2021
|
||||||
|
# Jérémie Tarot <silopolis@gmail.com>, 2023
|
||||||
|
# CapitainFlam, 2023
|
||||||
#
|
#
|
||||||
msgid ""
|
msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: sphinx_rtd_theme 0.4.3.dev0\n"
|
"Project-Id-Version: sphinx_rtd_theme 0.4.3.dev0\n"
|
||||||
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
|
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
|
||||||
"POT-Creation-Date: 2021-08-17 10:02-0600\n"
|
"POT-Creation-Date: 2023-02-06 15:36+0100\n"
|
||||||
"PO-Revision-Date: 2019-07-16 21:44+0000\n"
|
"PO-Revision-Date: 2019-07-16 21:44+0000\n"
|
||||||
"Last-Translator: Radina Matic <radina.matic@gmail.com>, 2021\n"
|
"Last-Translator: CapitainFlam, 2023\n"
|
||||||
"Language-Team: French (https://www.transifex.com/readthedocs/teams/101354/fr/)\n"
|
"Language-Team: French (https://www.transifex.com/readthedocs/teams/101354/fr/)\n"
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"Generated-By: Babel 2.8.0\n"
|
"Generated-By: Babel 2.11.0\n"
|
||||||
"Language: fr\n"
|
"Language: fr\n"
|
||||||
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
|
"Plural-Forms: nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
|
||||||
|
|
||||||
#: sphinx_rtd_theme/breadcrumbs.html:37 sphinx_rtd_theme/breadcrumbs.html:39
|
#: sphinx_rtd_theme/breadcrumbs.html:37 sphinx_rtd_theme/breadcrumbs.html:39
|
||||||
msgid "Edit on GitHub"
|
msgid "Edit on GitHub"
|
||||||
|
@ -48,6 +49,21 @@ msgstr "Précédent"
|
||||||
msgid "Next"
|
msgid "Next"
|
||||||
msgstr "Suivant"
|
msgstr "Suivant"
|
||||||
|
|
||||||
|
#. This is an ARIA section label for the footer section of the page.
|
||||||
|
#: sphinx_rtd_theme/footer.html:4
|
||||||
|
msgid "Footer"
|
||||||
|
msgstr "Pied de page"
|
||||||
|
|
||||||
|
#: sphinx_rtd_theme/footer.html:21
|
||||||
|
#, python-format
|
||||||
|
msgid "© <a href=\"%(path)s\">Copyright</a> %(copyright)s."
|
||||||
|
msgstr "© <a href=\"%(path)s\">Droits d'auteur</a> %(copyright)s."
|
||||||
|
|
||||||
|
#: sphinx_rtd_theme/footer.html:23
|
||||||
|
#, python-format
|
||||||
|
msgid "© Copyright %(copyright)s."
|
||||||
|
msgstr "© Droits d'auteur %(copyright)s."
|
||||||
|
|
||||||
#. Build is a noun, not a verb
|
#. Build is a noun, not a verb
|
||||||
#: sphinx_rtd_theme/footer.html:30
|
#: sphinx_rtd_theme/footer.html:30
|
||||||
msgid "Build"
|
msgid "Build"
|
||||||
|
@ -72,7 +88,7 @@ msgid "Built with %(sphinx_web)s using a"
|
||||||
msgstr "Compilé avec %(sphinx_web)s en utilisant un"
|
msgstr "Compilé avec %(sphinx_web)s en utilisant un"
|
||||||
|
|
||||||
#. "theme" refers to a theme for Sphinx, which alters the appearance of the
|
#. "theme" refers to a theme for Sphinx, which alters the appearance of the
|
||||||
#. generated documenation
|
#. generated documentation
|
||||||
#: sphinx_rtd_theme/footer.html:55
|
#: sphinx_rtd_theme/footer.html:55
|
||||||
msgid "theme"
|
msgid "theme"
|
||||||
msgstr "thème"
|
msgstr "thème"
|
||||||
|
@ -105,7 +121,7 @@ msgstr "Rechercher"
|
||||||
msgid "Copyright"
|
msgid "Copyright"
|
||||||
msgstr "Droits d'auteur"
|
msgstr "Droits d'auteur"
|
||||||
|
|
||||||
#: sphinx_rtd_theme/layout.html:147 sphinx_rtd_theme/layout.html:149
|
#: sphinx_rtd_theme/layout.html:143
|
||||||
msgid "Logo"
|
msgid "Logo"
|
||||||
msgstr "Logo"
|
msgstr "Logo"
|
||||||
|
|
||||||
|
@ -151,12 +167,3 @@ msgstr "Accueil du projet"
|
||||||
#: sphinx_rtd_theme/versions.html:29
|
#: sphinx_rtd_theme/versions.html:29
|
||||||
msgid "Builds"
|
msgid "Builds"
|
||||||
msgstr "Compilations"
|
msgstr "Compilations"
|
||||||
|
|
||||||
#~ msgid "Docs"
|
|
||||||
#~ msgstr "Docs"
|
|
||||||
|
|
||||||
#~ msgid "Free document hosting provided by"
|
|
||||||
#~ msgstr "Hébergement gratuit de documents fourni par"
|
|
||||||
|
|
||||||
#~ msgid "Documentation Home"
|
|
||||||
#~ msgstr "Accueil de la documentation"
|
|
||||||
|
|
Binary file not shown.
|
@ -0,0 +1,23 @@
|
||||||
|
# English translations for sphinx_rtd_theme.
|
||||||
|
# Copyright (C) 2019 ORGANIZATION
|
||||||
|
# This file is distributed under the same license as the sphinx_rtd_theme
|
||||||
|
# project.
|
||||||
|
# FIRST AUTHOR <EMAIL@ADDRESS>, 2019.
|
||||||
|
#
|
||||||
|
# Translators:
|
||||||
|
# Ivan Bratović, 2022
|
||||||
|
#
|
||||||
|
msgid ""
|
||||||
|
msgstr ""
|
||||||
|
"Project-Id-Version: sphinx_rtd_theme 0.4.3.dev0\n"
|
||||||
|
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
|
||||||
|
"POT-Creation-Date: 2023-02-06 15:36+0100\n"
|
||||||
|
"PO-Revision-Date: 2019-07-16 21:44+0000\n"
|
||||||
|
"Last-Translator: Ivan Bratović, 2022\n"
|
||||||
|
"Language-Team: Croatian (https://www.transifex.com/readthedocs/teams/101354/hr/)\n"
|
||||||
|
"MIME-Version: 1.0\n"
|
||||||
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
|
"Generated-By: Babel 2.11.0\n"
|
||||||
|
"Language: hr\n"
|
||||||
|
"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
|
Binary file not shown.
|
@ -0,0 +1,23 @@
|
||||||
|
# English translations for sphinx_rtd_theme.
|
||||||
|
# Copyright (C) 2019 ORGANIZATION
|
||||||
|
# This file is distributed under the same license as the sphinx_rtd_theme
|
||||||
|
# project.
|
||||||
|
# FIRST AUTHOR <EMAIL@ADDRESS>, 2019.
|
||||||
|
#
|
||||||
|
# Translators:
|
||||||
|
# Balázs Úr, 2022
|
||||||
|
#
|
||||||
|
msgid ""
|
||||||
|
msgstr ""
|
||||||
|
"Project-Id-Version: sphinx_rtd_theme 0.4.3.dev0\n"
|
||||||
|
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
|
||||||
|
"POT-Creation-Date: 2023-02-06 15:36+0100\n"
|
||||||
|
"PO-Revision-Date: 2019-07-16 21:44+0000\n"
|
||||||
|
"Last-Translator: Balázs Úr, 2022\n"
|
||||||
|
"Language-Team: Hungarian (https://www.transifex.com/readthedocs/teams/101354/hu/)\n"
|
||||||
|
"MIME-Version: 1.0\n"
|
||||||
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
|
"Generated-By: Babel 2.11.0\n"
|
||||||
|
"Language: hu\n"
|
||||||
|
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
Binary file not shown.
|
@ -7,21 +7,29 @@
|
||||||
# Translators:
|
# Translators:
|
||||||
# Anthony <aj@ohess.org>, 2021
|
# Anthony <aj@ohess.org>, 2021
|
||||||
# Maurizio Paglia <mpaglia0@gmail.com>, 2021
|
# Maurizio Paglia <mpaglia0@gmail.com>, 2021
|
||||||
|
# albanobattistella <albano_battistella@hotmail.com>, 2022
|
||||||
|
# Benjamin Bach <benjaoming@gmail.com>, 2022
|
||||||
#
|
#
|
||||||
msgid ""
|
msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: sphinx_rtd_theme 0.4.3.dev0\n"
|
"Project-Id-Version: sphinx_rtd_theme 0.4.3.dev0\n"
|
||||||
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
|
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
|
||||||
"POT-Creation-Date: 2021-08-17 10:02-0600\n"
|
"POT-Creation-Date: 2023-02-06 15:36+0100\n"
|
||||||
"PO-Revision-Date: 2019-07-16 21:44+0000\n"
|
"PO-Revision-Date: 2019-07-16 21:44+0000\n"
|
||||||
"Last-Translator: Maurizio Paglia <mpaglia0@gmail.com>, 2021\n"
|
"Last-Translator: Benjamin Bach <benjaoming@gmail.com>, 2022\n"
|
||||||
"Language-Team: Italian (https://www.transifex.com/readthedocs/teams/101354/it/)\n"
|
"Language-Team: Italian (https://www.transifex.com/readthedocs/teams/101354/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"
|
||||||
"Generated-By: Babel 2.8.0\n"
|
"Generated-By: Babel 2.11.0\n"
|
||||||
"Language: it\n"
|
"Language: it\n"
|
||||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
"Plural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
|
||||||
|
|
||||||
|
#. This is an ARIA section label for page links, including previous/next page
|
||||||
|
#. link and links to GitHub/GitLab/etc.
|
||||||
|
#: sphinx_rtd_theme/breadcrumbs.html:22
|
||||||
|
msgid "Page navigation"
|
||||||
|
msgstr "Naviga tra le pagine"
|
||||||
|
|
||||||
#: sphinx_rtd_theme/breadcrumbs.html:37 sphinx_rtd_theme/breadcrumbs.html:39
|
#: sphinx_rtd_theme/breadcrumbs.html:37 sphinx_rtd_theme/breadcrumbs.html:39
|
||||||
msgid "Edit on GitHub"
|
msgid "Edit on GitHub"
|
||||||
|
@ -39,6 +47,12 @@ msgstr "Modifica su GitLab"
|
||||||
msgid "View page source"
|
msgid "View page source"
|
||||||
msgstr "Visualizza sorgente pagina"
|
msgstr "Visualizza sorgente pagina"
|
||||||
|
|
||||||
|
#. This is an ARIA section label for sequential page links, such as previous
|
||||||
|
#. and next page links.
|
||||||
|
#: sphinx_rtd_theme/breadcrumbs.html:67
|
||||||
|
msgid "Sequential page navigation"
|
||||||
|
msgstr "Naviga sequenzialmente tra le pagine"
|
||||||
|
|
||||||
#: sphinx_rtd_theme/breadcrumbs.html:69 sphinx_rtd_theme/footer.html:6
|
#: sphinx_rtd_theme/breadcrumbs.html:69 sphinx_rtd_theme/footer.html:6
|
||||||
msgid "Previous"
|
msgid "Previous"
|
||||||
msgstr "Precedente"
|
msgstr "Precedente"
|
||||||
|
@ -47,6 +61,11 @@ msgstr "Precedente"
|
||||||
msgid "Next"
|
msgid "Next"
|
||||||
msgstr "Prossimo"
|
msgstr "Prossimo"
|
||||||
|
|
||||||
|
#. This is an ARIA section label for the footer section of the page.
|
||||||
|
#: sphinx_rtd_theme/footer.html:4
|
||||||
|
msgid "Footer"
|
||||||
|
msgstr "Piè di pagina"
|
||||||
|
|
||||||
#: sphinx_rtd_theme/footer.html:21
|
#: sphinx_rtd_theme/footer.html:21
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "© <a href=\"%(path)s\">Copyright</a> %(copyright)s."
|
msgid "© <a href=\"%(path)s\">Copyright</a> %(copyright)s."
|
||||||
|
@ -78,10 +97,10 @@ msgstr "Ultimo aggiornamento il %(last_updated)s."
|
||||||
#: sphinx_rtd_theme/footer.html:53
|
#: sphinx_rtd_theme/footer.html:53
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Built with %(sphinx_web)s using a"
|
msgid "Built with %(sphinx_web)s using a"
|
||||||
msgstr "Realizzato con %(sphinx_web)s e il tema"
|
msgstr "Realizzato con %(sphinx_web)s usando un"
|
||||||
|
|
||||||
#. "theme" refers to a theme for Sphinx, which alters the appearance of the
|
#. "theme" refers to a theme for Sphinx, which alters the appearance of the
|
||||||
#. generated documenation
|
#. generated documentation
|
||||||
#: sphinx_rtd_theme/footer.html:55
|
#: sphinx_rtd_theme/footer.html:55
|
||||||
msgid "theme"
|
msgid "theme"
|
||||||
msgstr "tema"
|
msgstr "tema"
|
||||||
|
@ -114,10 +133,21 @@ msgstr "Ricerca"
|
||||||
msgid "Copyright"
|
msgid "Copyright"
|
||||||
msgstr "Copyright"
|
msgstr "Copyright"
|
||||||
|
|
||||||
#: sphinx_rtd_theme/layout.html:147 sphinx_rtd_theme/layout.html:149
|
#: sphinx_rtd_theme/layout.html:143
|
||||||
msgid "Logo"
|
msgid "Logo"
|
||||||
msgstr "Logo"
|
msgstr "Logo"
|
||||||
|
|
||||||
|
#. This is an ARIA section label for the main navigation menu
|
||||||
|
#: sphinx_rtd_theme/layout.html:166
|
||||||
|
msgid "Navigation menu"
|
||||||
|
msgstr "Menu di navigazione"
|
||||||
|
|
||||||
|
#. This is an ARIA section label for the navigation menu that is visible when
|
||||||
|
#. viewing the page on mobile devices
|
||||||
|
#: sphinx_rtd_theme/layout.html:188
|
||||||
|
msgid "Mobile navigation menu"
|
||||||
|
msgstr "Menu navigazione dispositivi mobili"
|
||||||
|
|
||||||
#: sphinx_rtd_theme/search.html:31
|
#: sphinx_rtd_theme/search.html:31
|
||||||
msgid "Please activate JavaScript to enable the search functionality."
|
msgid "Please activate JavaScript to enable the search functionality."
|
||||||
msgstr "Devi attivare JavaScript per attivare la funzione di ricerca."
|
msgstr "Devi attivare JavaScript per attivare la funzione di ricerca."
|
||||||
|
@ -160,12 +190,3 @@ msgstr "Home progetto"
|
||||||
#: sphinx_rtd_theme/versions.html:29
|
#: sphinx_rtd_theme/versions.html:29
|
||||||
msgid "Builds"
|
msgid "Builds"
|
||||||
msgstr "Rev."
|
msgstr "Rev."
|
||||||
|
|
||||||
#~ msgid "Docs"
|
|
||||||
#~ msgstr "Documenti"
|
|
||||||
|
|
||||||
#~ msgid "Free document hosting provided by"
|
|
||||||
#~ msgstr "L'archivio gratuito della documentazione è offerto da"
|
|
||||||
|
|
||||||
#~ msgid "Documentation Home"
|
|
||||||
#~ msgstr "Indice documenti"
|
|
||||||
|
|
Binary file not shown.
|
@ -11,17 +11,23 @@ msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: sphinx_rtd_theme 0.4.3.dev0\n"
|
"Project-Id-Version: sphinx_rtd_theme 0.4.3.dev0\n"
|
||||||
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
|
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
|
||||||
"POT-Creation-Date: 2021-08-17 10:02-0600\n"
|
"POT-Creation-Date: 2023-02-06 15:36+0100\n"
|
||||||
"PO-Revision-Date: 2019-07-16 21:44+0000\n"
|
"PO-Revision-Date: 2019-07-16 21:44+0000\n"
|
||||||
"Last-Translator: Tomas Straupis, 2021\n"
|
"Last-Translator: Tomas Straupis, 2021\n"
|
||||||
"Language-Team: Lithuanian (https://www.transifex.com/readthedocs/teams/101354/lt/)\n"
|
"Language-Team: Lithuanian (https://www.transifex.com/readthedocs/teams/101354/lt/)\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"
|
||||||
"Generated-By: Babel 2.8.0\n"
|
"Generated-By: Babel 2.11.0\n"
|
||||||
"Language: lt\n"
|
"Language: lt\n"
|
||||||
"Plural-Forms: nplurals=4; plural=(n % 10 == 1 && (n % 100 > 19 || n % 100 < 11) ? 0 : (n % 10 >= 2 && n % 10 <=9) && (n % 100 > 19 || n % 100 < 11) ? 1 : n % 1 != 0 ? 2: 3);\n"
|
"Plural-Forms: nplurals=4; plural=(n % 10 == 1 && (n % 100 > 19 || n % 100 < 11) ? 0 : (n % 10 >= 2 && n % 10 <=9) && (n % 100 > 19 || n % 100 < 11) ? 1 : n % 1 != 0 ? 2: 3);\n"
|
||||||
|
|
||||||
|
#. This is an ARIA section label for page links, including previous/next page
|
||||||
|
#. link and links to GitHub/GitLab/etc.
|
||||||
|
#: sphinx_rtd_theme/breadcrumbs.html:22
|
||||||
|
msgid "Page navigation"
|
||||||
|
msgstr "Puslapių navigacija"
|
||||||
|
|
||||||
#: sphinx_rtd_theme/breadcrumbs.html:37 sphinx_rtd_theme/breadcrumbs.html:39
|
#: sphinx_rtd_theme/breadcrumbs.html:37 sphinx_rtd_theme/breadcrumbs.html:39
|
||||||
msgid "Edit on GitHub"
|
msgid "Edit on GitHub"
|
||||||
msgstr "Keisti GitHub'e"
|
msgstr "Keisti GitHub'e"
|
||||||
|
@ -38,6 +44,12 @@ msgstr "Keisti GitLab'e"
|
||||||
msgid "View page source"
|
msgid "View page source"
|
||||||
msgstr "Žiūrėti puslapio šaltinį"
|
msgstr "Žiūrėti puslapio šaltinį"
|
||||||
|
|
||||||
|
#. This is an ARIA section label for sequential page links, such as previous
|
||||||
|
#. and next page links.
|
||||||
|
#: sphinx_rtd_theme/breadcrumbs.html:67
|
||||||
|
msgid "Sequential page navigation"
|
||||||
|
msgstr "Puslapių navigacija iš eilės"
|
||||||
|
|
||||||
#: sphinx_rtd_theme/breadcrumbs.html:69 sphinx_rtd_theme/footer.html:6
|
#: sphinx_rtd_theme/breadcrumbs.html:69 sphinx_rtd_theme/footer.html:6
|
||||||
msgid "Previous"
|
msgid "Previous"
|
||||||
msgstr "Ankstesnis"
|
msgstr "Ankstesnis"
|
||||||
|
@ -46,6 +58,11 @@ msgstr "Ankstesnis"
|
||||||
msgid "Next"
|
msgid "Next"
|
||||||
msgstr "Kitas"
|
msgstr "Kitas"
|
||||||
|
|
||||||
|
#. This is an ARIA section label for the footer section of the page.
|
||||||
|
#: sphinx_rtd_theme/footer.html:4
|
||||||
|
msgid "Footer"
|
||||||
|
msgstr "Poraštė"
|
||||||
|
|
||||||
#: sphinx_rtd_theme/footer.html:21
|
#: sphinx_rtd_theme/footer.html:21
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "© <a href=\"%(path)s\">Copyright</a> %(copyright)s."
|
msgid "© <a href=\"%(path)s\">Copyright</a> %(copyright)s."
|
||||||
|
@ -80,7 +97,7 @@ msgid "Built with %(sphinx_web)s using a"
|
||||||
msgstr "Surinkta su %(sphinx_web)s naudojant"
|
msgstr "Surinkta su %(sphinx_web)s naudojant"
|
||||||
|
|
||||||
#. "theme" refers to a theme for Sphinx, which alters the appearance of the
|
#. "theme" refers to a theme for Sphinx, which alters the appearance of the
|
||||||
#. generated documenation
|
#. generated documentation
|
||||||
#: sphinx_rtd_theme/footer.html:55
|
#: sphinx_rtd_theme/footer.html:55
|
||||||
msgid "theme"
|
msgid "theme"
|
||||||
msgstr "temą"
|
msgstr "temą"
|
||||||
|
@ -113,10 +130,21 @@ msgstr "Paieška"
|
||||||
msgid "Copyright"
|
msgid "Copyright"
|
||||||
msgstr "Autorių teisės"
|
msgstr "Autorių teisės"
|
||||||
|
|
||||||
#: sphinx_rtd_theme/layout.html:147 sphinx_rtd_theme/layout.html:149
|
#: sphinx_rtd_theme/layout.html:143
|
||||||
msgid "Logo"
|
msgid "Logo"
|
||||||
msgstr "Logo"
|
msgstr "Logo"
|
||||||
|
|
||||||
|
#. This is an ARIA section label for the main navigation menu
|
||||||
|
#: sphinx_rtd_theme/layout.html:166
|
||||||
|
msgid "Navigation menu"
|
||||||
|
msgstr "Navigacijos meniu"
|
||||||
|
|
||||||
|
#. This is an ARIA section label for the navigation menu that is visible when
|
||||||
|
#. viewing the page on mobile devices
|
||||||
|
#: sphinx_rtd_theme/layout.html:188
|
||||||
|
msgid "Mobile navigation menu"
|
||||||
|
msgstr "Mobilios navigacijos meniu"
|
||||||
|
|
||||||
#: sphinx_rtd_theme/search.html:31
|
#: sphinx_rtd_theme/search.html:31
|
||||||
msgid "Please activate JavaScript to enable the search functionality."
|
msgid "Please activate JavaScript to enable the search functionality."
|
||||||
msgstr "Prašome įjungti JavaScript, kad veiktų paieškos funkcionalumas."
|
msgstr "Prašome įjungti JavaScript, kad veiktų paieškos funkcionalumas."
|
||||||
|
@ -158,12 +186,3 @@ msgstr "Projekto namai"
|
||||||
#: sphinx_rtd_theme/versions.html:29
|
#: sphinx_rtd_theme/versions.html:29
|
||||||
msgid "Builds"
|
msgid "Builds"
|
||||||
msgstr "Surinkimai"
|
msgstr "Surinkimai"
|
||||||
|
|
||||||
#~ msgid "Docs"
|
|
||||||
#~ msgstr "Dokumentai"
|
|
||||||
|
|
||||||
#~ msgid "Free document hosting provided by"
|
|
||||||
#~ msgstr "Nemokamą dokumentacijos talpinimą teikia"
|
|
||||||
|
|
||||||
#~ msgid "Documentation Home"
|
|
||||||
#~ msgstr "Dokumentacijos namai"
|
|
||||||
|
|
Binary file not shown.
|
@ -5,23 +5,29 @@
|
||||||
# FIRST AUTHOR <EMAIL@ADDRESS>, 2019.
|
# FIRST AUTHOR <EMAIL@ADDRESS>, 2019.
|
||||||
#
|
#
|
||||||
# Translators:
|
# Translators:
|
||||||
# Jesse Tan, 2019
|
# Jesse Tan, 2021
|
||||||
#
|
#
|
||||||
msgid ""
|
msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: sphinx_rtd_theme 0.4.3.dev0\n"
|
"Project-Id-Version: sphinx_rtd_theme 0.4.3.dev0\n"
|
||||||
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
|
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
|
||||||
"POT-Creation-Date: 2021-08-17 10:02-0600\n"
|
"POT-Creation-Date: 2023-02-06 15:36+0100\n"
|
||||||
"PO-Revision-Date: 2019-07-16 21:44+0000\n"
|
"PO-Revision-Date: 2019-07-16 21:44+0000\n"
|
||||||
"Last-Translator: Jesse Tan, 2019\n"
|
"Last-Translator: Jesse Tan, 2021\n"
|
||||||
"Language-Team: Dutch (https://www.transifex.com/readthedocs/teams/101354/nl/)\n"
|
"Language-Team: Dutch (https://www.transifex.com/readthedocs/teams/101354/nl/)\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"
|
||||||
"Generated-By: Babel 2.8.0\n"
|
"Generated-By: Babel 2.11.0\n"
|
||||||
"Language: nl\n"
|
"Language: nl\n"
|
||||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||||
|
|
||||||
|
#. This is an ARIA section label for page links, including previous/next page
|
||||||
|
#. link and links to GitHub/GitLab/etc.
|
||||||
|
#: sphinx_rtd_theme/breadcrumbs.html:22
|
||||||
|
msgid "Page navigation"
|
||||||
|
msgstr "Paginanavigatie"
|
||||||
|
|
||||||
#: sphinx_rtd_theme/breadcrumbs.html:37 sphinx_rtd_theme/breadcrumbs.html:39
|
#: sphinx_rtd_theme/breadcrumbs.html:37 sphinx_rtd_theme/breadcrumbs.html:39
|
||||||
msgid "Edit on GitHub"
|
msgid "Edit on GitHub"
|
||||||
msgstr "Bewerk op GitHub"
|
msgstr "Bewerk op GitHub"
|
||||||
|
@ -38,6 +44,12 @@ msgstr "Bewerk op GitLab"
|
||||||
msgid "View page source"
|
msgid "View page source"
|
||||||
msgstr "Bekijk paginabron"
|
msgstr "Bekijk paginabron"
|
||||||
|
|
||||||
|
#. This is an ARIA section label for sequential page links, such as previous
|
||||||
|
#. and next page links.
|
||||||
|
#: sphinx_rtd_theme/breadcrumbs.html:67
|
||||||
|
msgid "Sequential page navigation"
|
||||||
|
msgstr "Navigatie voor gerelateerde pagina's"
|
||||||
|
|
||||||
#: sphinx_rtd_theme/breadcrumbs.html:69 sphinx_rtd_theme/footer.html:6
|
#: sphinx_rtd_theme/breadcrumbs.html:69 sphinx_rtd_theme/footer.html:6
|
||||||
msgid "Previous"
|
msgid "Previous"
|
||||||
msgstr "Vorige"
|
msgstr "Vorige"
|
||||||
|
@ -46,6 +58,21 @@ msgstr "Vorige"
|
||||||
msgid "Next"
|
msgid "Next"
|
||||||
msgstr "Volgende"
|
msgstr "Volgende"
|
||||||
|
|
||||||
|
#. This is an ARIA section label for the footer section of the page.
|
||||||
|
#: sphinx_rtd_theme/footer.html:4
|
||||||
|
msgid "Footer"
|
||||||
|
msgstr "Voettekst"
|
||||||
|
|
||||||
|
#: sphinx_rtd_theme/footer.html:21
|
||||||
|
#, python-format
|
||||||
|
msgid "© <a href=\"%(path)s\">Copyright</a> %(copyright)s."
|
||||||
|
msgstr "© <a href=\"%(path)s\">Copyright</a> %(copyright)s."
|
||||||
|
|
||||||
|
#: sphinx_rtd_theme/footer.html:23
|
||||||
|
#, python-format
|
||||||
|
msgid "© Copyright %(copyright)s."
|
||||||
|
msgstr "© Copyright %(copyright)s."
|
||||||
|
|
||||||
#. Build is a noun, not a verb
|
#. Build is a noun, not a verb
|
||||||
#: sphinx_rtd_theme/footer.html:30
|
#: sphinx_rtd_theme/footer.html:30
|
||||||
msgid "Build"
|
msgid "Build"
|
||||||
|
@ -70,7 +97,7 @@ msgid "Built with %(sphinx_web)s using a"
|
||||||
msgstr "Gebouwd met %(sphinx_web)s met een"
|
msgstr "Gebouwd met %(sphinx_web)s met een"
|
||||||
|
|
||||||
#. "theme" refers to a theme for Sphinx, which alters the appearance of the
|
#. "theme" refers to a theme for Sphinx, which alters the appearance of the
|
||||||
#. generated documenation
|
#. generated documentation
|
||||||
#: sphinx_rtd_theme/footer.html:55
|
#: sphinx_rtd_theme/footer.html:55
|
||||||
msgid "theme"
|
msgid "theme"
|
||||||
msgstr "thema"
|
msgstr "thema"
|
||||||
|
@ -103,10 +130,21 @@ msgstr "Zoek"
|
||||||
msgid "Copyright"
|
msgid "Copyright"
|
||||||
msgstr "Copyright"
|
msgstr "Copyright"
|
||||||
|
|
||||||
#: sphinx_rtd_theme/layout.html:147 sphinx_rtd_theme/layout.html:149
|
#: sphinx_rtd_theme/layout.html:143
|
||||||
msgid "Logo"
|
msgid "Logo"
|
||||||
msgstr "Logo"
|
msgstr "Logo"
|
||||||
|
|
||||||
|
#. This is an ARIA section label for the main navigation menu
|
||||||
|
#: sphinx_rtd_theme/layout.html:166
|
||||||
|
msgid "Navigation menu"
|
||||||
|
msgstr "Navigatiemenu"
|
||||||
|
|
||||||
|
#. This is an ARIA section label for the navigation menu that is visible when
|
||||||
|
#. viewing the page on mobile devices
|
||||||
|
#: sphinx_rtd_theme/layout.html:188
|
||||||
|
msgid "Mobile navigation menu"
|
||||||
|
msgstr "Navigatiemenu voor mobiel"
|
||||||
|
|
||||||
#: sphinx_rtd_theme/search.html:31
|
#: sphinx_rtd_theme/search.html:31
|
||||||
msgid "Please activate JavaScript to enable the search functionality."
|
msgid "Please activate JavaScript to enable the search functionality."
|
||||||
msgstr "Zet JavaScript aan om de zoekfunctie mogelijk te maken."
|
msgstr "Zet JavaScript aan om de zoekfunctie mogelijk te maken."
|
||||||
|
@ -148,9 +186,3 @@ msgstr "Project Home"
|
||||||
#: sphinx_rtd_theme/versions.html:29
|
#: sphinx_rtd_theme/versions.html:29
|
||||||
msgid "Builds"
|
msgid "Builds"
|
||||||
msgstr "Bouwresultaten"
|
msgstr "Bouwresultaten"
|
||||||
|
|
||||||
#~ msgid "Docs"
|
|
||||||
#~ msgstr "Documentatie"
|
|
||||||
|
|
||||||
#~ msgid "Free document hosting provided by"
|
|
||||||
#~ msgstr "Gratis hosting voor documentatie verzorgd door"
|
|
||||||
|
|
Binary file not shown.
|
@ -11,14 +11,14 @@ msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: sphinx_rtd_theme 0.4.3.dev0\n"
|
"Project-Id-Version: sphinx_rtd_theme 0.4.3.dev0\n"
|
||||||
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
|
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
|
||||||
"POT-Creation-Date: 2021-08-17 10:02-0600\n"
|
"POT-Creation-Date: 2023-02-06 15:36+0100\n"
|
||||||
"PO-Revision-Date: 2019-07-16 21:44+0000\n"
|
"PO-Revision-Date: 2019-07-16 21:44+0000\n"
|
||||||
"Last-Translator: Michal Sniatala, 2021\n"
|
"Last-Translator: Michal Sniatala, 2021\n"
|
||||||
"Language-Team: Polish (https://www.transifex.com/readthedocs/teams/101354/pl/)\n"
|
"Language-Team: Polish (https://www.transifex.com/readthedocs/teams/101354/pl/)\n"
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"Generated-By: Babel 2.8.0\n"
|
"Generated-By: Babel 2.11.0\n"
|
||||||
"Language: pl\n"
|
"Language: pl\n"
|
||||||
"Plural-Forms: nplurals=4; plural=(n==1 ? 0 : (n%10>=2 && n%10<=4) && (n%100<12 || n%100>14) ? 1 : n!=1 && (n%10>=0 && n%10<=1) || (n%10>=5 && n%10<=9) || (n%100>=12 && n%100<=14) ? 2 : 3);\n"
|
"Plural-Forms: nplurals=4; plural=(n==1 ? 0 : (n%10>=2 && n%10<=4) && (n%100<12 || n%100>14) ? 1 : n!=1 && (n%10>=0 && n%10<=1) || (n%10>=5 && n%10<=9) || (n%100>=12 && n%100<=14) ? 2 : 3);\n"
|
||||||
|
|
||||||
|
@ -135,9 +135,3 @@ msgstr "Na Read the Docs"
|
||||||
#: sphinx_rtd_theme/versions.html:26
|
#: sphinx_rtd_theme/versions.html:26
|
||||||
msgid "Project Home"
|
msgid "Project Home"
|
||||||
msgstr "Strona projektu"
|
msgstr "Strona projektu"
|
||||||
|
|
||||||
#~ msgid "Free document hosting provided by"
|
|
||||||
#~ msgstr "Bezpłatny hosting dokumentacji zapewniony przez"
|
|
||||||
|
|
||||||
#~ msgid "Documentation Home"
|
|
||||||
#~ msgstr "Strona dokumentacji"
|
|
||||||
|
|
Binary file not shown.
|
@ -0,0 +1,161 @@
|
||||||
|
# English translations for sphinx_rtd_theme.
|
||||||
|
# Copyright (C) 2019 ORGANIZATION
|
||||||
|
# This file is distributed under the same license as the sphinx_rtd_theme
|
||||||
|
# project.
|
||||||
|
# FIRST AUTHOR <EMAIL@ADDRESS>, 2019.
|
||||||
|
#
|
||||||
|
# Translators:
|
||||||
|
# Ana Costa <anacosta.xl@gmail.com>, 2021
|
||||||
|
#
|
||||||
|
msgid ""
|
||||||
|
msgstr ""
|
||||||
|
"Project-Id-Version: sphinx_rtd_theme 0.4.3.dev0\n"
|
||||||
|
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
|
||||||
|
"POT-Creation-Date: 2023-02-06 15:36+0100\n"
|
||||||
|
"PO-Revision-Date: 2019-07-16 21:44+0000\n"
|
||||||
|
"Last-Translator: Ana Costa <anacosta.xl@gmail.com>, 2021\n"
|
||||||
|
"Language-Team: Portuguese (https://www.transifex.com/readthedocs/teams/101354/pt/)\n"
|
||||||
|
"MIME-Version: 1.0\n"
|
||||||
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
|
"Generated-By: Babel 2.11.0\n"
|
||||||
|
"Language: pt\n"
|
||||||
|
"Plural-Forms: nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
|
||||||
|
|
||||||
|
#. This is an ARIA section label for page links, including previous/next page
|
||||||
|
#. link and links to GitHub/GitLab/etc.
|
||||||
|
#: sphinx_rtd_theme/breadcrumbs.html:22
|
||||||
|
msgid "Page navigation"
|
||||||
|
msgstr "Navegação da página"
|
||||||
|
|
||||||
|
#: sphinx_rtd_theme/breadcrumbs.html:37 sphinx_rtd_theme/breadcrumbs.html:39
|
||||||
|
msgid "Edit on GitHub"
|
||||||
|
msgstr "Editar no GitHub"
|
||||||
|
|
||||||
|
#: sphinx_rtd_theme/breadcrumbs.html:44 sphinx_rtd_theme/breadcrumbs.html:46
|
||||||
|
msgid "Edit on Bitbucket"
|
||||||
|
msgstr "Editar no Bitbucket"
|
||||||
|
|
||||||
|
#: sphinx_rtd_theme/breadcrumbs.html:51 sphinx_rtd_theme/breadcrumbs.html:53
|
||||||
|
msgid "Edit on GitLab"
|
||||||
|
msgstr "Editar no GitLab"
|
||||||
|
|
||||||
|
#: sphinx_rtd_theme/breadcrumbs.html:56 sphinx_rtd_theme/breadcrumbs.html:58
|
||||||
|
msgid "View page source"
|
||||||
|
msgstr "Ver código-fonte da página"
|
||||||
|
|
||||||
|
#. This is an ARIA section label for sequential page links, such as previous
|
||||||
|
#. and next page links.
|
||||||
|
#: sphinx_rtd_theme/breadcrumbs.html:67
|
||||||
|
msgid "Sequential page navigation"
|
||||||
|
msgstr "Navegação sequencial da página"
|
||||||
|
|
||||||
|
#: sphinx_rtd_theme/breadcrumbs.html:69 sphinx_rtd_theme/footer.html:6
|
||||||
|
msgid "Previous"
|
||||||
|
msgstr "Anterior"
|
||||||
|
|
||||||
|
#: sphinx_rtd_theme/breadcrumbs.html:72 sphinx_rtd_theme/footer.html:9
|
||||||
|
msgid "Next"
|
||||||
|
msgstr "Seguinte"
|
||||||
|
|
||||||
|
#. This is an ARIA section label for the footer section of the page.
|
||||||
|
#: sphinx_rtd_theme/footer.html:4
|
||||||
|
msgid "Footer"
|
||||||
|
msgstr "Rodapé"
|
||||||
|
|
||||||
|
#. the phrase "revision" comes from Git, referring to a commit
|
||||||
|
#: sphinx_rtd_theme/footer.html:36
|
||||||
|
msgid "Revision"
|
||||||
|
msgstr "Revisão"
|
||||||
|
|
||||||
|
#: sphinx_rtd_theme/footer.html:41
|
||||||
|
#, python-format
|
||||||
|
msgid "Last updated on %(last_updated)s."
|
||||||
|
msgstr "Última actualização em %(last_updated)s."
|
||||||
|
|
||||||
|
#. the variable "sphinx_web" is a link to the Sphinx project documentation
|
||||||
|
#. with
|
||||||
|
#. the text "Sphinx"
|
||||||
|
#: sphinx_rtd_theme/footer.html:53
|
||||||
|
#, python-format
|
||||||
|
msgid "Built with %(sphinx_web)s using a"
|
||||||
|
msgstr "Compilado com %(sphinx_web)s usando um"
|
||||||
|
|
||||||
|
#. "theme" refers to a theme for Sphinx, which alters the appearance of the
|
||||||
|
#. generated documentation
|
||||||
|
#: sphinx_rtd_theme/footer.html:55
|
||||||
|
msgid "theme"
|
||||||
|
msgstr "tema"
|
||||||
|
|
||||||
|
#. this is always used as "provided by Read the Docs", and should not imply
|
||||||
|
#. Read the Docs is an author of the generated documentation.
|
||||||
|
#: sphinx_rtd_theme/footer.html:57
|
||||||
|
#, python-format
|
||||||
|
msgid "provided by %(readthedocs_web)s"
|
||||||
|
msgstr "fornecido por %(readthedocs_web)s"
|
||||||
|
|
||||||
|
#: sphinx_rtd_theme/layout.html:97
|
||||||
|
#, python-format
|
||||||
|
msgid "Search within %(docstitle)s"
|
||||||
|
msgstr "Procurar em %(docstitle)s"
|
||||||
|
|
||||||
|
#: sphinx_rtd_theme/layout.html:105
|
||||||
|
msgid "About these documents"
|
||||||
|
msgstr "Sobre estes documentos"
|
||||||
|
|
||||||
|
#: sphinx_rtd_theme/layout.html:108
|
||||||
|
msgid "Index"
|
||||||
|
msgstr "Índice"
|
||||||
|
|
||||||
|
#: sphinx_rtd_theme/layout.html:111 sphinx_rtd_theme/search.html:11
|
||||||
|
msgid "Search"
|
||||||
|
msgstr "Pesquisar"
|
||||||
|
|
||||||
|
#: sphinx_rtd_theme/layout.html:143
|
||||||
|
msgid "Logo"
|
||||||
|
msgstr "Logo"
|
||||||
|
|
||||||
|
#. This is an ARIA section label for the main navigation menu
|
||||||
|
#: sphinx_rtd_theme/layout.html:166
|
||||||
|
msgid "Navigation menu"
|
||||||
|
msgstr "Menu de navegação"
|
||||||
|
|
||||||
|
#. This is an ARIA section label for the navigation menu that is visible when
|
||||||
|
#. viewing the page on mobile devices
|
||||||
|
#: sphinx_rtd_theme/layout.html:188
|
||||||
|
msgid "Mobile navigation menu"
|
||||||
|
msgstr "Menu de navegação móvel"
|
||||||
|
|
||||||
|
#: sphinx_rtd_theme/search.html:31
|
||||||
|
msgid "Please activate JavaScript to enable the search functionality."
|
||||||
|
msgstr "Por favor, active o JavaScript para permitir a função de pesquisa."
|
||||||
|
|
||||||
|
#. Search is a noun, not a verb
|
||||||
|
#: sphinx_rtd_theme/search.html:39
|
||||||
|
msgid "Search Results"
|
||||||
|
msgstr "Resultados de Pesquisa"
|
||||||
|
|
||||||
|
#: sphinx_rtd_theme/search.html:41
|
||||||
|
msgid ""
|
||||||
|
"Your search did not match any documents. Please make sure that all words are"
|
||||||
|
" spelled correctly and that you've selected enough categories."
|
||||||
|
msgstr ""
|
||||||
|
"A sua pesquisa não encontrou nenhum documento. Por favor confirme que todas "
|
||||||
|
"as palavras estão bem escritas e que selecionou categorias suficientes."
|
||||||
|
|
||||||
|
#: sphinx_rtd_theme/searchbox.html:4
|
||||||
|
msgid "Search docs"
|
||||||
|
msgstr "Pesquisar docs"
|
||||||
|
|
||||||
|
#: sphinx_rtd_theme/versions.html:3 sphinx_rtd_theme/versions.html:11
|
||||||
|
msgid "Versions"
|
||||||
|
msgstr "Versões"
|
||||||
|
|
||||||
|
#: sphinx_rtd_theme/versions.html:17
|
||||||
|
msgid "Downloads"
|
||||||
|
msgstr "Transferências"
|
||||||
|
|
||||||
|
#. The phrase "Read the Docs" is not translated
|
||||||
|
#: sphinx_rtd_theme/versions.html:24
|
||||||
|
msgid "On Read the Docs"
|
||||||
|
msgstr "No Read the Docs"
|
Binary file not shown.
|
@ -5,23 +5,29 @@
|
||||||
# FIRST AUTHOR <EMAIL@ADDRESS>, 2019.
|
# FIRST AUTHOR <EMAIL@ADDRESS>, 2019.
|
||||||
#
|
#
|
||||||
# Translators:
|
# Translators:
|
||||||
# Wellington Uemura <wellingtonuemura@gmail.com>, 2021
|
|
||||||
# Rafael Fontenelle <rffontenelle@gmail.com>, 2021
|
# Rafael Fontenelle <rffontenelle@gmail.com>, 2021
|
||||||
|
# Wellington Uemura <wellingtonuemura@gmail.com>, 2022
|
||||||
#
|
#
|
||||||
msgid ""
|
msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: sphinx_rtd_theme 0.4.3.dev0\n"
|
"Project-Id-Version: sphinx_rtd_theme 0.4.3.dev0\n"
|
||||||
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
|
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
|
||||||
"POT-Creation-Date: 2021-08-17 10:02-0600\n"
|
"POT-Creation-Date: 2023-02-06 15:36+0100\n"
|
||||||
"PO-Revision-Date: 2019-07-16 21:44+0000\n"
|
"PO-Revision-Date: 2019-07-16 21:44+0000\n"
|
||||||
"Last-Translator: Rafael Fontenelle <rffontenelle@gmail.com>, 2021\n"
|
"Last-Translator: Wellington Uemura <wellingtonuemura@gmail.com>, 2022\n"
|
||||||
"Language-Team: Portuguese (Brazil) (https://www.transifex.com/readthedocs/teams/101354/pt_BR/)\n"
|
"Language-Team: Portuguese (Brazil) (https://www.transifex.com/readthedocs/teams/101354/pt_BR/)\n"
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"Generated-By: Babel 2.8.0\n"
|
"Generated-By: Babel 2.11.0\n"
|
||||||
"Language: pt_BR\n"
|
"Language: pt_BR\n"
|
||||||
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
|
"Plural-Forms: nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
|
||||||
|
|
||||||
|
#. This is an ARIA section label for page links, including previous/next page
|
||||||
|
#. link and links to GitHub/GitLab/etc.
|
||||||
|
#: sphinx_rtd_theme/breadcrumbs.html:22
|
||||||
|
msgid "Page navigation"
|
||||||
|
msgstr "Navegação da página"
|
||||||
|
|
||||||
#: sphinx_rtd_theme/breadcrumbs.html:37 sphinx_rtd_theme/breadcrumbs.html:39
|
#: sphinx_rtd_theme/breadcrumbs.html:37 sphinx_rtd_theme/breadcrumbs.html:39
|
||||||
msgid "Edit on GitHub"
|
msgid "Edit on GitHub"
|
||||||
|
@ -39,6 +45,12 @@ msgstr "Editar no GitLab"
|
||||||
msgid "View page source"
|
msgid "View page source"
|
||||||
msgstr "Ver código-fonte da página"
|
msgstr "Ver código-fonte da página"
|
||||||
|
|
||||||
|
#. This is an ARIA section label for sequential page links, such as previous
|
||||||
|
#. and next page links.
|
||||||
|
#: sphinx_rtd_theme/breadcrumbs.html:67
|
||||||
|
msgid "Sequential page navigation"
|
||||||
|
msgstr "Navegação sequencial da página"
|
||||||
|
|
||||||
#: sphinx_rtd_theme/breadcrumbs.html:69 sphinx_rtd_theme/footer.html:6
|
#: sphinx_rtd_theme/breadcrumbs.html:69 sphinx_rtd_theme/footer.html:6
|
||||||
msgid "Previous"
|
msgid "Previous"
|
||||||
msgstr "Anterior"
|
msgstr "Anterior"
|
||||||
|
@ -47,6 +59,11 @@ msgstr "Anterior"
|
||||||
msgid "Next"
|
msgid "Next"
|
||||||
msgstr "Próximo"
|
msgstr "Próximo"
|
||||||
|
|
||||||
|
#. This is an ARIA section label for the footer section of the page.
|
||||||
|
#: sphinx_rtd_theme/footer.html:4
|
||||||
|
msgid "Footer"
|
||||||
|
msgstr "Rodapé"
|
||||||
|
|
||||||
#: sphinx_rtd_theme/footer.html:21
|
#: sphinx_rtd_theme/footer.html:21
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "© <a href=\"%(path)s\">Copyright</a> %(copyright)s."
|
msgid "© <a href=\"%(path)s\">Copyright</a> %(copyright)s."
|
||||||
|
@ -81,7 +98,7 @@ msgid "Built with %(sphinx_web)s using a"
|
||||||
msgstr "Compilado com %(sphinx_web)s usando um"
|
msgstr "Compilado com %(sphinx_web)s usando um"
|
||||||
|
|
||||||
#. "theme" refers to a theme for Sphinx, which alters the appearance of the
|
#. "theme" refers to a theme for Sphinx, which alters the appearance of the
|
||||||
#. generated documenation
|
#. generated documentation
|
||||||
#: sphinx_rtd_theme/footer.html:55
|
#: sphinx_rtd_theme/footer.html:55
|
||||||
msgid "theme"
|
msgid "theme"
|
||||||
msgstr "tema"
|
msgstr "tema"
|
||||||
|
@ -114,10 +131,21 @@ msgstr "Pesquisar"
|
||||||
msgid "Copyright"
|
msgid "Copyright"
|
||||||
msgstr "Copyright"
|
msgstr "Copyright"
|
||||||
|
|
||||||
#: sphinx_rtd_theme/layout.html:147 sphinx_rtd_theme/layout.html:149
|
#: sphinx_rtd_theme/layout.html:143
|
||||||
msgid "Logo"
|
msgid "Logo"
|
||||||
msgstr "Logo"
|
msgstr "Logo"
|
||||||
|
|
||||||
|
#. This is an ARIA section label for the main navigation menu
|
||||||
|
#: sphinx_rtd_theme/layout.html:166
|
||||||
|
msgid "Navigation menu"
|
||||||
|
msgstr "Menu de navegação"
|
||||||
|
|
||||||
|
#. This is an ARIA section label for the navigation menu that is visible when
|
||||||
|
#. viewing the page on mobile devices
|
||||||
|
#: sphinx_rtd_theme/layout.html:188
|
||||||
|
msgid "Mobile navigation menu"
|
||||||
|
msgstr "Menu de navegação móvel"
|
||||||
|
|
||||||
#: sphinx_rtd_theme/search.html:31
|
#: sphinx_rtd_theme/search.html:31
|
||||||
msgid "Please activate JavaScript to enable the search functionality."
|
msgid "Please activate JavaScript to enable the search functionality."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
@ -161,12 +189,3 @@ msgstr "Página inicial"
|
||||||
#: sphinx_rtd_theme/versions.html:29
|
#: sphinx_rtd_theme/versions.html:29
|
||||||
msgid "Builds"
|
msgid "Builds"
|
||||||
msgstr "Compilações"
|
msgstr "Compilações"
|
||||||
|
|
||||||
#~ msgid "Docs"
|
|
||||||
#~ msgstr "Docs"
|
|
||||||
|
|
||||||
#~ msgid "Free document hosting provided by"
|
|
||||||
#~ msgstr "Hospedagem de documentos livres fornecida por"
|
|
||||||
|
|
||||||
#~ msgid "Documentation Home"
|
|
||||||
#~ msgstr "Página inicial da documentação"
|
|
||||||
|
|
Binary file not shown.
|
@ -5,24 +5,30 @@
|
||||||
# FIRST AUTHOR <EMAIL@ADDRESS>, 2019.
|
# FIRST AUTHOR <EMAIL@ADDRESS>, 2019.
|
||||||
#
|
#
|
||||||
# Translators:
|
# Translators:
|
||||||
# Dmitry Shachnev <mitya57@gmail.com>, 2019
|
|
||||||
# lvv83 <vlozhkin83@gmail.com>, 2019
|
# lvv83 <vlozhkin83@gmail.com>, 2019
|
||||||
|
# Dmitry Shachnev <mitya57@gmail.com>, 2021
|
||||||
#
|
#
|
||||||
msgid ""
|
msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: sphinx_rtd_theme 0.4.3.dev0\n"
|
"Project-Id-Version: sphinx_rtd_theme 0.4.3.dev0\n"
|
||||||
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
|
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
|
||||||
"POT-Creation-Date: 2021-08-17 10:02-0600\n"
|
"POT-Creation-Date: 2023-02-06 15:36+0100\n"
|
||||||
"PO-Revision-Date: 2019-07-16 21:44+0000\n"
|
"PO-Revision-Date: 2019-07-16 21:44+0000\n"
|
||||||
"Last-Translator: lvv83 <vlozhkin83@gmail.com>, 2019\n"
|
"Last-Translator: Dmitry Shachnev <mitya57@gmail.com>, 2021\n"
|
||||||
"Language-Team: Russian (https://www.transifex.com/readthedocs/teams/101354/ru/)\n"
|
"Language-Team: Russian (https://www.transifex.com/readthedocs/teams/101354/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"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"Generated-By: Babel 2.8.0\n"
|
"Generated-By: Babel 2.11.0\n"
|
||||||
"Language: ru\n"
|
"Language: ru\n"
|
||||||
"Plural-Forms: nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n%100>=11 && n%100<=14)? 2 : 3);\n"
|
"Plural-Forms: nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n%100>=11 && n%100<=14)? 2 : 3);\n"
|
||||||
|
|
||||||
|
#. This is an ARIA section label for page links, including previous/next page
|
||||||
|
#. link and links to GitHub/GitLab/etc.
|
||||||
|
#: sphinx_rtd_theme/breadcrumbs.html:22
|
||||||
|
msgid "Page navigation"
|
||||||
|
msgstr "Навигация по страницам"
|
||||||
|
|
||||||
#: sphinx_rtd_theme/breadcrumbs.html:37 sphinx_rtd_theme/breadcrumbs.html:39
|
#: sphinx_rtd_theme/breadcrumbs.html:37 sphinx_rtd_theme/breadcrumbs.html:39
|
||||||
msgid "Edit on GitHub"
|
msgid "Edit on GitHub"
|
||||||
msgstr "Редактировать на GitHub"
|
msgstr "Редактировать на GitHub"
|
||||||
|
@ -39,6 +45,12 @@ msgstr "Редактировать на GitLab"
|
||||||
msgid "View page source"
|
msgid "View page source"
|
||||||
msgstr "Просмотреть исходный код страницы"
|
msgstr "Просмотреть исходный код страницы"
|
||||||
|
|
||||||
|
#. This is an ARIA section label for sequential page links, such as previous
|
||||||
|
#. and next page links.
|
||||||
|
#: sphinx_rtd_theme/breadcrumbs.html:67
|
||||||
|
msgid "Sequential page navigation"
|
||||||
|
msgstr "Навигация по соседним страницам"
|
||||||
|
|
||||||
#: sphinx_rtd_theme/breadcrumbs.html:69 sphinx_rtd_theme/footer.html:6
|
#: sphinx_rtd_theme/breadcrumbs.html:69 sphinx_rtd_theme/footer.html:6
|
||||||
msgid "Previous"
|
msgid "Previous"
|
||||||
msgstr "Предыдущая"
|
msgstr "Предыдущая"
|
||||||
|
@ -47,6 +59,21 @@ msgstr "Предыдущая"
|
||||||
msgid "Next"
|
msgid "Next"
|
||||||
msgstr "Следующая"
|
msgstr "Следующая"
|
||||||
|
|
||||||
|
#. This is an ARIA section label for the footer section of the page.
|
||||||
|
#: sphinx_rtd_theme/footer.html:4
|
||||||
|
msgid "Footer"
|
||||||
|
msgstr "Нижняя область"
|
||||||
|
|
||||||
|
#: sphinx_rtd_theme/footer.html:21
|
||||||
|
#, python-format
|
||||||
|
msgid "© <a href=\"%(path)s\">Copyright</a> %(copyright)s."
|
||||||
|
msgstr "© <a href=\"%(path)s\">Авторские права</a> %(copyright)s. "
|
||||||
|
|
||||||
|
#: sphinx_rtd_theme/footer.html:23
|
||||||
|
#, python-format
|
||||||
|
msgid "© Copyright %(copyright)s."
|
||||||
|
msgstr "© Авторские права %(copyright)s. "
|
||||||
|
|
||||||
#. Build is a noun, not a verb
|
#. Build is a noun, not a verb
|
||||||
#: sphinx_rtd_theme/footer.html:30
|
#: sphinx_rtd_theme/footer.html:30
|
||||||
msgid "Build"
|
msgid "Build"
|
||||||
|
@ -71,7 +98,7 @@ msgid "Built with %(sphinx_web)s using a"
|
||||||
msgstr "Собрано при помощи %(sphinx_web)s с использованием"
|
msgstr "Собрано при помощи %(sphinx_web)s с использованием"
|
||||||
|
|
||||||
#. "theme" refers to a theme for Sphinx, which alters the appearance of the
|
#. "theme" refers to a theme for Sphinx, which alters the appearance of the
|
||||||
#. generated documenation
|
#. generated documentation
|
||||||
#: sphinx_rtd_theme/footer.html:55
|
#: sphinx_rtd_theme/footer.html:55
|
||||||
msgid "theme"
|
msgid "theme"
|
||||||
msgstr "темы,"
|
msgstr "темы,"
|
||||||
|
@ -104,10 +131,21 @@ msgstr "Поиск"
|
||||||
msgid "Copyright"
|
msgid "Copyright"
|
||||||
msgstr "Авторские права"
|
msgstr "Авторские права"
|
||||||
|
|
||||||
#: sphinx_rtd_theme/layout.html:147 sphinx_rtd_theme/layout.html:149
|
#: sphinx_rtd_theme/layout.html:143
|
||||||
msgid "Logo"
|
msgid "Logo"
|
||||||
msgstr "Логотип"
|
msgstr "Логотип"
|
||||||
|
|
||||||
|
#. This is an ARIA section label for the main navigation menu
|
||||||
|
#: sphinx_rtd_theme/layout.html:166
|
||||||
|
msgid "Navigation menu"
|
||||||
|
msgstr "Меню навигации"
|
||||||
|
|
||||||
|
#. This is an ARIA section label for the navigation menu that is visible when
|
||||||
|
#. viewing the page on mobile devices
|
||||||
|
#: sphinx_rtd_theme/layout.html:188
|
||||||
|
msgid "Mobile navigation menu"
|
||||||
|
msgstr "Меню навигации для мобильных устройств"
|
||||||
|
|
||||||
#: sphinx_rtd_theme/search.html:31
|
#: sphinx_rtd_theme/search.html:31
|
||||||
msgid "Please activate JavaScript to enable the search functionality."
|
msgid "Please activate JavaScript to enable the search functionality."
|
||||||
msgstr "Активируйте JavaScript, чтобы использовать функционал поиска."
|
msgstr "Активируйте JavaScript, чтобы использовать функционал поиска."
|
||||||
|
@ -149,9 +187,3 @@ msgstr "Домашняя страница проекта"
|
||||||
#: sphinx_rtd_theme/versions.html:29
|
#: sphinx_rtd_theme/versions.html:29
|
||||||
msgid "Builds"
|
msgid "Builds"
|
||||||
msgstr "Сборки"
|
msgstr "Сборки"
|
||||||
|
|
||||||
#~ msgid "Docs"
|
|
||||||
#~ msgstr "Документация"
|
|
||||||
|
|
||||||
#~ msgid "Free document hosting provided by"
|
|
||||||
#~ msgstr "Бесплатный хостинг документов, предоставленный"
|
|
||||||
|
|
|
@ -1,22 +1,22 @@
|
||||||
# Translations template for sphinx_rtd_theme.
|
# Translations template for sphinx_rtd_theme.
|
||||||
# Copyright (C) 2021 ORGANIZATION
|
# Copyright (C) 2023 ORGANIZATION
|
||||||
# This file is distributed under the same license as the sphinx_rtd_theme
|
# This file is distributed under the same license as the sphinx_rtd_theme
|
||||||
# project.
|
# project.
|
||||||
# FIRST AUTHOR <EMAIL@ADDRESS>, 2021.
|
# FIRST AUTHOR <EMAIL@ADDRESS>, 2023.
|
||||||
#
|
#
|
||||||
#, fuzzy
|
#, fuzzy
|
||||||
msgid ""
|
msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: sphinx_rtd_theme 1.0.0rc1\n"
|
"Project-Id-Version: sphinx_rtd_theme 1.2.0rc4\n"
|
||||||
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
|
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
|
||||||
"POT-Creation-Date: 2021-08-17 10:02-0600\n"
|
"POT-Creation-Date: 2023-02-06 15:36+0100\n"
|
||||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
"Language-Team: LANGUAGE <LL@li.org>\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"
|
||||||
"Generated-By: Babel 2.8.0\n"
|
"Generated-By: Babel 2.11.0\n"
|
||||||
|
|
||||||
#. This is an ARIA section label for page links, including previous/next page
|
#. This is an ARIA section label for page links, including previous/next page
|
||||||
#. link and links to GitHub/GitLab/etc.
|
#. link and links to GitHub/GitLab/etc.
|
||||||
|
@ -92,7 +92,7 @@ msgid "Built with %(sphinx_web)s using a"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#. "theme" refers to a theme for Sphinx, which alters the appearance of the
|
#. "theme" refers to a theme for Sphinx, which alters the appearance of the
|
||||||
#. generated documenation
|
#. generated documentation
|
||||||
#: sphinx_rtd_theme/footer.html:55
|
#: sphinx_rtd_theme/footer.html:55
|
||||||
msgid "theme"
|
msgid "theme"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
@ -125,18 +125,18 @@ msgstr ""
|
||||||
msgid "Copyright"
|
msgid "Copyright"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: sphinx_rtd_theme/layout.html:147 sphinx_rtd_theme/layout.html:149
|
#: sphinx_rtd_theme/layout.html:143
|
||||||
msgid "Logo"
|
msgid "Logo"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#. This is an ARIA section label for the main navigation menu
|
#. This is an ARIA section label for the main navigation menu
|
||||||
#: sphinx_rtd_theme/layout.html:173
|
#: sphinx_rtd_theme/layout.html:166
|
||||||
msgid "Navigation menu"
|
msgid "Navigation menu"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#. This is an ARIA section label for the navigation menu that is visible when
|
#. This is an ARIA section label for the navigation menu that is visible when
|
||||||
#. viewing the page on mobile devices
|
#. viewing the page on mobile devices
|
||||||
#: sphinx_rtd_theme/layout.html:195
|
#: sphinx_rtd_theme/layout.html:188
|
||||||
msgid "Mobile navigation menu"
|
msgid "Mobile navigation menu"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
|
Binary file not shown.
|
@ -11,14 +11,14 @@ msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: sphinx_rtd_theme 0.4.3.dev0\n"
|
"Project-Id-Version: sphinx_rtd_theme 0.4.3.dev0\n"
|
||||||
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
|
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
|
||||||
"POT-Creation-Date: 2021-08-17 10:02-0600\n"
|
"POT-Creation-Date: 2023-02-06 15:36+0100\n"
|
||||||
"PO-Revision-Date: 2019-07-16 21:44+0000\n"
|
"PO-Revision-Date: 2019-07-16 21:44+0000\n"
|
||||||
"Last-Translator: Daniel Holmberg <daniel.holmberg97@gmail.com>, 2020\n"
|
"Last-Translator: Daniel Holmberg <daniel.holmberg97@gmail.com>, 2020\n"
|
||||||
"Language-Team: Swedish (https://www.transifex.com/readthedocs/teams/101354/sv/)\n"
|
"Language-Team: Swedish (https://www.transifex.com/readthedocs/teams/101354/sv/)\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"
|
||||||
"Generated-By: Babel 2.8.0\n"
|
"Generated-By: Babel 2.11.0\n"
|
||||||
"Language: sv\n"
|
"Language: sv\n"
|
||||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||||
|
|
||||||
|
@ -70,7 +70,7 @@ msgid "Built with %(sphinx_web)s using a"
|
||||||
msgstr "Gjord med %(sphinx_web)s med hjälp av"
|
msgstr "Gjord med %(sphinx_web)s med hjälp av"
|
||||||
|
|
||||||
#. "theme" refers to a theme for Sphinx, which alters the appearance of the
|
#. "theme" refers to a theme for Sphinx, which alters the appearance of the
|
||||||
#. generated documenation
|
#. generated documentation
|
||||||
#: sphinx_rtd_theme/footer.html:55
|
#: sphinx_rtd_theme/footer.html:55
|
||||||
msgid "theme"
|
msgid "theme"
|
||||||
msgstr "tema"
|
msgstr "tema"
|
||||||
|
@ -103,7 +103,7 @@ msgstr "Sök"
|
||||||
msgid "Copyright"
|
msgid "Copyright"
|
||||||
msgstr "Upphovsrätt"
|
msgstr "Upphovsrätt"
|
||||||
|
|
||||||
#: sphinx_rtd_theme/layout.html:147 sphinx_rtd_theme/layout.html:149
|
#: sphinx_rtd_theme/layout.html:143
|
||||||
msgid "Logo"
|
msgid "Logo"
|
||||||
msgstr "Logo"
|
msgstr "Logo"
|
||||||
|
|
||||||
|
@ -149,12 +149,3 @@ msgstr "Projekt Hem"
|
||||||
#: sphinx_rtd_theme/versions.html:29
|
#: sphinx_rtd_theme/versions.html:29
|
||||||
msgid "Builds"
|
msgid "Builds"
|
||||||
msgstr "Versioner"
|
msgstr "Versioner"
|
||||||
|
|
||||||
#~ msgid "Docs"
|
|
||||||
#~ msgstr "Dokumentation"
|
|
||||||
|
|
||||||
#~ msgid "Free document hosting provided by"
|
|
||||||
#~ msgstr "Gratis dokumentations hysning erhållen av"
|
|
||||||
|
|
||||||
#~ msgid "Documentation Home"
|
|
||||||
#~ msgstr "Dokumentation Hem"
|
|
||||||
|
|
Binary file not shown.
|
@ -11,14 +11,14 @@ msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: sphinx_rtd_theme 0.4.3.dev0\n"
|
"Project-Id-Version: sphinx_rtd_theme 0.4.3.dev0\n"
|
||||||
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
|
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
|
||||||
"POT-Creation-Date: 2021-08-17 10:02-0600\n"
|
"POT-Creation-Date: 2023-02-06 15:36+0100\n"
|
||||||
"PO-Revision-Date: 2019-07-16 21:44+0000\n"
|
"PO-Revision-Date: 2019-07-16 21:44+0000\n"
|
||||||
"Last-Translator: BouRock, 2020\n"
|
"Last-Translator: BouRock, 2020\n"
|
||||||
"Language-Team: Turkish (https://www.transifex.com/readthedocs/teams/101354/tr/)\n"
|
"Language-Team: Turkish (https://www.transifex.com/readthedocs/teams/101354/tr/)\n"
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"Generated-By: Babel 2.8.0\n"
|
"Generated-By: Babel 2.11.0\n"
|
||||||
"Language: tr\n"
|
"Language: tr\n"
|
||||||
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
|
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
|
||||||
|
|
||||||
|
@ -62,7 +62,7 @@ msgid "Last updated on %(last_updated)s."
|
||||||
msgstr "Son olarak %(last_updated)s tarihinde güncellendi."
|
msgstr "Son olarak %(last_updated)s tarihinde güncellendi."
|
||||||
|
|
||||||
#. "theme" refers to a theme for Sphinx, which alters the appearance of the
|
#. "theme" refers to a theme for Sphinx, which alters the appearance of the
|
||||||
#. generated documenation
|
#. generated documentation
|
||||||
#: sphinx_rtd_theme/footer.html:55
|
#: sphinx_rtd_theme/footer.html:55
|
||||||
msgid "theme"
|
msgid "theme"
|
||||||
msgstr "tema"
|
msgstr "tema"
|
||||||
|
@ -95,7 +95,7 @@ msgstr "Arama"
|
||||||
msgid "Copyright"
|
msgid "Copyright"
|
||||||
msgstr "Telif hakkı"
|
msgstr "Telif hakkı"
|
||||||
|
|
||||||
#: sphinx_rtd_theme/layout.html:147 sphinx_rtd_theme/layout.html:149
|
#: sphinx_rtd_theme/layout.html:143
|
||||||
msgid "Logo"
|
msgid "Logo"
|
||||||
msgstr "Logo"
|
msgstr "Logo"
|
||||||
|
|
||||||
|
@ -141,12 +141,3 @@ msgstr "Proje Ana Sayfa"
|
||||||
#: sphinx_rtd_theme/versions.html:29
|
#: sphinx_rtd_theme/versions.html:29
|
||||||
msgid "Builds"
|
msgid "Builds"
|
||||||
msgstr "Oluşturmalar"
|
msgstr "Oluşturmalar"
|
||||||
|
|
||||||
#~ msgid "Docs"
|
|
||||||
#~ msgstr "Belgeler"
|
|
||||||
|
|
||||||
#~ msgid "Free document hosting provided by"
|
|
||||||
#~ msgstr "Ücretsiz belge barındırmayı sağlayan"
|
|
||||||
|
|
||||||
#~ msgid "Documentation Home"
|
|
||||||
#~ msgstr "Belgelendirme Giriş"
|
|
||||||
|
|
Binary file not shown.
|
@ -5,40 +5,53 @@
|
||||||
# FIRST AUTHOR <EMAIL@ADDRESS>, 2019.
|
# FIRST AUTHOR <EMAIL@ADDRESS>, 2019.
|
||||||
#
|
#
|
||||||
# Translators:
|
# Translators:
|
||||||
# Anthony <aj@ohess.org>, 2020
|
# 王赛 <wangsai@bootcss.com>, 2019
|
||||||
# 王赛 <wangsai@bootcss.com>, 2020
|
# Anthony <aj@ohess.org>, 2022
|
||||||
|
# JY3, 2022
|
||||||
#
|
#
|
||||||
msgid ""
|
msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: sphinx_rtd_theme 0.4.3.dev0\n"
|
"Project-Id-Version: sphinx_rtd_theme 0.4.3.dev0\n"
|
||||||
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
|
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
|
||||||
"POT-Creation-Date: 2021-08-17 10:02-0600\n"
|
"POT-Creation-Date: 2023-02-06 15:36+0100\n"
|
||||||
"PO-Revision-Date: 2019-07-16 21:44+0000\n"
|
"PO-Revision-Date: 2019-07-16 21:44+0000\n"
|
||||||
"Last-Translator: 王赛 <wangsai@bootcss.com>, 2020\n"
|
"Last-Translator: JY3, 2022\n"
|
||||||
"Language-Team: Chinese (China) (https://www.transifex.com/readthedocs/teams/101354/zh_CN/)\n"
|
"Language-Team: Chinese (China) (https://www.transifex.com/readthedocs/teams/101354/zh_CN/)\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"
|
||||||
"Generated-By: Babel 2.8.0\n"
|
"Generated-By: Babel 2.11.0\n"
|
||||||
"Language: zh_CN\n"
|
"Language: zh_CN\n"
|
||||||
"Plural-Forms: nplurals=1; plural=0;\n"
|
"Plural-Forms: nplurals=1; plural=0;\n"
|
||||||
|
|
||||||
|
#. This is an ARIA section label for page links, including previous/next page
|
||||||
|
#. link and links to GitHub/GitLab/etc.
|
||||||
|
#: sphinx_rtd_theme/breadcrumbs.html:22
|
||||||
|
msgid "Page navigation"
|
||||||
|
msgstr "页面导航"
|
||||||
|
|
||||||
#: sphinx_rtd_theme/breadcrumbs.html:37 sphinx_rtd_theme/breadcrumbs.html:39
|
#: sphinx_rtd_theme/breadcrumbs.html:37 sphinx_rtd_theme/breadcrumbs.html:39
|
||||||
msgid "Edit on GitHub"
|
msgid "Edit on GitHub"
|
||||||
msgstr "在 GitHub 上修改"
|
msgstr "在 GitHub 上编辑"
|
||||||
|
|
||||||
#: sphinx_rtd_theme/breadcrumbs.html:44 sphinx_rtd_theme/breadcrumbs.html:46
|
#: sphinx_rtd_theme/breadcrumbs.html:44 sphinx_rtd_theme/breadcrumbs.html:46
|
||||||
msgid "Edit on Bitbucket"
|
msgid "Edit on Bitbucket"
|
||||||
msgstr "在 Bitbucket 上修改"
|
msgstr "在 Bitbucket 上编辑"
|
||||||
|
|
||||||
#: sphinx_rtd_theme/breadcrumbs.html:51 sphinx_rtd_theme/breadcrumbs.html:53
|
#: sphinx_rtd_theme/breadcrumbs.html:51 sphinx_rtd_theme/breadcrumbs.html:53
|
||||||
msgid "Edit on GitLab"
|
msgid "Edit on GitLab"
|
||||||
msgstr "在 GitLab 上修改"
|
msgstr "在 GitLab 上编辑"
|
||||||
|
|
||||||
#: sphinx_rtd_theme/breadcrumbs.html:56 sphinx_rtd_theme/breadcrumbs.html:58
|
#: sphinx_rtd_theme/breadcrumbs.html:56 sphinx_rtd_theme/breadcrumbs.html:58
|
||||||
msgid "View page source"
|
msgid "View page source"
|
||||||
msgstr "查看页面源码"
|
msgstr "查看页面源码"
|
||||||
|
|
||||||
|
#. This is an ARIA section label for sequential page links, such as previous
|
||||||
|
#. and next page links.
|
||||||
|
#: sphinx_rtd_theme/breadcrumbs.html:67
|
||||||
|
msgid "Sequential page navigation"
|
||||||
|
msgstr "顺序式页面导航"
|
||||||
|
|
||||||
#: sphinx_rtd_theme/breadcrumbs.html:69 sphinx_rtd_theme/footer.html:6
|
#: sphinx_rtd_theme/breadcrumbs.html:69 sphinx_rtd_theme/footer.html:6
|
||||||
msgid "Previous"
|
msgid "Previous"
|
||||||
msgstr "上一页"
|
msgstr "上一页"
|
||||||
|
@ -47,6 +60,21 @@ msgstr "上一页"
|
||||||
msgid "Next"
|
msgid "Next"
|
||||||
msgstr "下一页"
|
msgstr "下一页"
|
||||||
|
|
||||||
|
#. This is an ARIA section label for the footer section of the page.
|
||||||
|
#: sphinx_rtd_theme/footer.html:4
|
||||||
|
msgid "Footer"
|
||||||
|
msgstr "页脚"
|
||||||
|
|
||||||
|
#: sphinx_rtd_theme/footer.html:21
|
||||||
|
#, python-format
|
||||||
|
msgid "© <a href=\"%(path)s\">Copyright</a> %(copyright)s."
|
||||||
|
msgstr "© <a href=\"%(path)s\">版权所有</a> %(copyright)s。"
|
||||||
|
|
||||||
|
#: sphinx_rtd_theme/footer.html:23
|
||||||
|
#, python-format
|
||||||
|
msgid "© Copyright %(copyright)s."
|
||||||
|
msgstr "© 版权所有 %(copyright)s。"
|
||||||
|
|
||||||
#. Build is a noun, not a verb
|
#. Build is a noun, not a verb
|
||||||
#: sphinx_rtd_theme/footer.html:30
|
#: sphinx_rtd_theme/footer.html:30
|
||||||
msgid "Build"
|
msgid "Build"
|
||||||
|
@ -55,7 +83,7 @@ msgstr "构建"
|
||||||
#. the phrase "revision" comes from Git, referring to a commit
|
#. the phrase "revision" comes from Git, referring to a commit
|
||||||
#: sphinx_rtd_theme/footer.html:36
|
#: sphinx_rtd_theme/footer.html:36
|
||||||
msgid "Revision"
|
msgid "Revision"
|
||||||
msgstr "修订"
|
msgstr "版本"
|
||||||
|
|
||||||
#: sphinx_rtd_theme/footer.html:41
|
#: sphinx_rtd_theme/footer.html:41
|
||||||
#, python-format
|
#, python-format
|
||||||
|
@ -68,10 +96,10 @@ msgstr "最后更新时间 %(last_updated)s。"
|
||||||
#: sphinx_rtd_theme/footer.html:53
|
#: sphinx_rtd_theme/footer.html:53
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Built with %(sphinx_web)s using a"
|
msgid "Built with %(sphinx_web)s using a"
|
||||||
msgstr "利用 %(sphinx_web)s 构建,使用了 "
|
msgstr "利用 %(sphinx_web)s 构建,使用的 "
|
||||||
|
|
||||||
#. "theme" refers to a theme for Sphinx, which alters the appearance of the
|
#. "theme" refers to a theme for Sphinx, which alters the appearance of the
|
||||||
#. generated documenation
|
#. generated documentation
|
||||||
#: sphinx_rtd_theme/footer.html:55
|
#: sphinx_rtd_theme/footer.html:55
|
||||||
msgid "theme"
|
msgid "theme"
|
||||||
msgstr "主题"
|
msgstr "主题"
|
||||||
|
@ -81,12 +109,12 @@ msgstr "主题"
|
||||||
#: sphinx_rtd_theme/footer.html:57
|
#: sphinx_rtd_theme/footer.html:57
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "provided by %(readthedocs_web)s"
|
msgid "provided by %(readthedocs_web)s"
|
||||||
msgstr "由 %(readthedocs_web)s开发"
|
msgstr "由 %(readthedocs_web)s 开发"
|
||||||
|
|
||||||
#: sphinx_rtd_theme/layout.html:97
|
#: sphinx_rtd_theme/layout.html:97
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Search within %(docstitle)s"
|
msgid "Search within %(docstitle)s"
|
||||||
msgstr "在 %(docstitle)s中搜索"
|
msgstr "在 %(docstitle)s 中搜索"
|
||||||
|
|
||||||
#: sphinx_rtd_theme/layout.html:105
|
#: sphinx_rtd_theme/layout.html:105
|
||||||
msgid "About these documents"
|
msgid "About these documents"
|
||||||
|
@ -104,10 +132,21 @@ msgstr "搜索"
|
||||||
msgid "Copyright"
|
msgid "Copyright"
|
||||||
msgstr "版权所有"
|
msgstr "版权所有"
|
||||||
|
|
||||||
#: sphinx_rtd_theme/layout.html:147 sphinx_rtd_theme/layout.html:149
|
#: sphinx_rtd_theme/layout.html:143
|
||||||
msgid "Logo"
|
msgid "Logo"
|
||||||
msgstr "Logo"
|
msgstr "Logo"
|
||||||
|
|
||||||
|
#. This is an ARIA section label for the main navigation menu
|
||||||
|
#: sphinx_rtd_theme/layout.html:166
|
||||||
|
msgid "Navigation menu"
|
||||||
|
msgstr "导航菜单"
|
||||||
|
|
||||||
|
#. This is an ARIA section label for the navigation menu that is visible when
|
||||||
|
#. viewing the page on mobile devices
|
||||||
|
#: sphinx_rtd_theme/layout.html:188
|
||||||
|
msgid "Mobile navigation menu"
|
||||||
|
msgstr "移动版导航菜单"
|
||||||
|
|
||||||
#: sphinx_rtd_theme/search.html:31
|
#: sphinx_rtd_theme/search.html:31
|
||||||
msgid "Please activate JavaScript to enable the search functionality."
|
msgid "Please activate JavaScript to enable the search functionality."
|
||||||
msgstr "请启用 JavaScript 以便使用搜索功能"
|
msgstr "请启用 JavaScript 以便使用搜索功能"
|
||||||
|
@ -125,15 +164,15 @@ msgstr "您的搜索没有匹配到任何文档。请确保所有单词拼写正
|
||||||
|
|
||||||
#: sphinx_rtd_theme/searchbox.html:4
|
#: sphinx_rtd_theme/searchbox.html:4
|
||||||
msgid "Search docs"
|
msgid "Search docs"
|
||||||
msgstr "在文档中搜索"
|
msgstr "搜索文档"
|
||||||
|
|
||||||
#: sphinx_rtd_theme/versions.html:3 sphinx_rtd_theme/versions.html:11
|
#: sphinx_rtd_theme/versions.html:3 sphinx_rtd_theme/versions.html:11
|
||||||
msgid "Versions"
|
msgid "Versions"
|
||||||
msgstr "版本列表"
|
msgstr "版本"
|
||||||
|
|
||||||
#: sphinx_rtd_theme/versions.html:17
|
#: sphinx_rtd_theme/versions.html:17
|
||||||
msgid "Downloads"
|
msgid "Downloads"
|
||||||
msgstr "下载链接"
|
msgstr "下载"
|
||||||
|
|
||||||
#. The phrase "Read the Docs" is not translated
|
#. The phrase "Read the Docs" is not translated
|
||||||
#: sphinx_rtd_theme/versions.html:24
|
#: sphinx_rtd_theme/versions.html:24
|
||||||
|
@ -142,17 +181,8 @@ msgstr "托管于 Read the Docs"
|
||||||
|
|
||||||
#: sphinx_rtd_theme/versions.html:26
|
#: sphinx_rtd_theme/versions.html:26
|
||||||
msgid "Project Home"
|
msgid "Project Home"
|
||||||
msgstr "项目首页"
|
msgstr "项目主页"
|
||||||
|
|
||||||
#: sphinx_rtd_theme/versions.html:29
|
#: sphinx_rtd_theme/versions.html:29
|
||||||
msgid "Builds"
|
msgid "Builds"
|
||||||
msgstr "构建"
|
msgstr "构建"
|
||||||
|
|
||||||
#~ msgid "Docs"
|
|
||||||
#~ msgstr "文档"
|
|
||||||
|
|
||||||
#~ msgid "Free document hosting provided by"
|
|
||||||
#~ msgstr "此文档免费托管于"
|
|
||||||
|
|
||||||
#~ msgid "Documentation Home"
|
|
||||||
#~ msgstr "文档首页"
|
|
||||||
|
|
Binary file not shown.
|
@ -0,0 +1,23 @@
|
||||||
|
# English translations for sphinx_rtd_theme.
|
||||||
|
# Copyright (C) 2019 ORGANIZATION
|
||||||
|
# This file is distributed under the same license as the sphinx_rtd_theme
|
||||||
|
# project.
|
||||||
|
# FIRST AUTHOR <EMAIL@ADDRESS>, 2019.
|
||||||
|
#
|
||||||
|
# Translators:
|
||||||
|
# Jason Zhou, 2023
|
||||||
|
#
|
||||||
|
msgid ""
|
||||||
|
msgstr ""
|
||||||
|
"Project-Id-Version: sphinx_rtd_theme 0.4.3.dev0\n"
|
||||||
|
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
|
||||||
|
"POT-Creation-Date: 2023-02-06 15:36+0100\n"
|
||||||
|
"PO-Revision-Date: 2019-07-16 21:44+0000\n"
|
||||||
|
"Last-Translator: Jason Zhou, 2023\n"
|
||||||
|
"Language-Team: Chinese (Taiwan) (https://www.transifex.com/readthedocs/teams/101354/zh_TW/)\n"
|
||||||
|
"MIME-Version: 1.0\n"
|
||||||
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
|
"Generated-By: Babel 2.11.0\n"
|
||||||
|
"Language: zh_TW\n"
|
||||||
|
"Plural-Forms: nplurals=1; plural=0;\n"
|
|
@ -1,7 +1,7 @@
|
||||||
{%- if 'singlehtml' not in builder %}
|
{%- if 'singlehtml' not in builder %}
|
||||||
<div role="search">
|
<div role="search">
|
||||||
<form id="rtd-search-form" class="wy-form" action="{{ pathto('search') }}" method="get">
|
<form id="rtd-search-form" class="wy-form" action="{{ pathto('search') }}" method="get">
|
||||||
<input type="text" name="q" placeholder="{{ _('Search docs') }}" />
|
<input type="text" name="q" placeholder="{{ _('Search docs') }}" aria-label="{{ _('Search docs') }}" />
|
||||||
<input type="hidden" name="check_keywords" value="yes" />
|
<input type="hidden" name="check_keywords" value="yes" />
|
||||||
<input type="hidden" name="area" value="default" />
|
<input type="hidden" name="area" value="default" />
|
||||||
</form>
|
</form>
|
||||||
|
|
|
@ -1 +1 @@
|
||||||
.fa:before{-webkit-font-smoothing:antialiased}.clearfix{*zoom:1}.clearfix:after,.clearfix:before{display:table;content:""}.clearfix:after{clear:both}@font-face{font-family:FontAwesome;font-style:normal;font-weight:400;src:url(fonts/fontawesome-webfont.eot?674f50d287a8c48dc19ba404d20fe713?#iefix) format("embedded-opentype"),url(fonts/fontawesome-webfont.woff2?af7ae505a9eed503f8b8e6982036873e) format("woff2"),url(fonts/fontawesome-webfont.woff?fee66e712a8a08eef5805a46892932ad) format("woff"),url(fonts/fontawesome-webfont.ttf?b06871f281fee6b241d60582ae9369b9) format("truetype"),url(fonts/fontawesome-webfont.svg?912ec66d7572ff821749319396470bde#FontAwesome) format("svg")}.fa:before{font-family:FontAwesome;font-style:normal;font-weight:400;line-height:1}.fa:before,a .fa{text-decoration:inherit}.fa:before,a .fa,li .fa{display:inline-block}li .fa-large:before{width:1.875em}ul.fas{list-style-type:none;margin-left:2em;text-indent:-.8em}ul.fas li .fa{width:.8em}ul.fas li .fa-large:before{vertical-align:baseline}.fa-book:before,.icon-book:before{content:"\f02d"}.fa-caret-down:before,.icon-caret-down:before{content:"\f0d7"}.fa-caret-up:before,.icon-caret-up:before{content:"\f0d8"}.fa-caret-left:before,.icon-caret-left:before{content:"\f0d9"}.fa-caret-right:before,.icon-caret-right:before{content:"\f0da"}.rst-versions{position:fixed;bottom:0;left:0;width:300px;color:#fcfcfc;background:#1f1d1d;font-family:Lato,proxima-nova,Helvetica Neue,Arial,sans-serif;z-index:400}.rst-versions a{color:#2980b9;text-decoration:none}.rst-versions .rst-badge-small{display:none}.rst-versions .rst-current-version{padding:12px;background-color:#272525;display:block;text-align:right;font-size:90%;cursor:pointer;color:#27ae60}.rst-versions .rst-current-version:after{clear:both;content:"";display:block}.rst-versions .rst-current-version .fa{color:#fcfcfc}.rst-versions .rst-current-version .fa-book,.rst-versions .rst-current-version .icon-book{float:left}.rst-versions .rst-current-version.rst-out-of-date{background-color:#e74c3c;color:#fff}.rst-versions .rst-current-version.rst-active-old-version{background-color:#f1c40f;color:#000}.rst-versions.shift-up{height:auto;max-height:100%;overflow-y:scroll}.rst-versions.shift-up .rst-other-versions{display:block}.rst-versions .rst-other-versions{font-size:90%;padding:12px;color:grey;display:none}.rst-versions .rst-other-versions hr{display:block;height:1px;border:0;margin:20px 0;padding:0;border-top:1px solid #413d3d}.rst-versions .rst-other-versions dd{display:inline-block;margin:0}.rst-versions .rst-other-versions dd a{display:inline-block;padding:6px;color:#fcfcfc}.rst-versions.rst-badge{width:auto;bottom:20px;right:20px;left:auto;border:none;max-width:300px;max-height:90%}.rst-versions.rst-badge .fa-book,.rst-versions.rst-badge .icon-book{float:none;line-height:30px}.rst-versions.rst-badge.shift-up .rst-current-version{text-align:right}.rst-versions.rst-badge.shift-up .rst-current-version .fa-book,.rst-versions.rst-badge.shift-up .rst-current-version .icon-book{float:left}.rst-versions.rst-badge>.rst-current-version{width:auto;height:30px;line-height:30px;padding:0 6px;display:block;text-align:center}@media screen and (max-width:768px){.rst-versions{width:85%;display:none}.rst-versions.shift{display:block}}
|
.clearfix{*zoom:1}.clearfix:after,.clearfix:before{display:table;content:""}.clearfix:after{clear:both}@font-face{font-family:FontAwesome;font-style:normal;font-weight:400;src:url(fonts/fontawesome-webfont.eot?674f50d287a8c48dc19ba404d20fe713?#iefix) format("embedded-opentype"),url(fonts/fontawesome-webfont.woff2?af7ae505a9eed503f8b8e6982036873e) format("woff2"),url(fonts/fontawesome-webfont.woff?fee66e712a8a08eef5805a46892932ad) format("woff"),url(fonts/fontawesome-webfont.ttf?b06871f281fee6b241d60582ae9369b9) format("truetype"),url(fonts/fontawesome-webfont.svg?912ec66d7572ff821749319396470bde#FontAwesome) format("svg")}.fa:before{font-family:FontAwesome;font-style:normal;font-weight:400;line-height:1}.fa:before,a .fa{text-decoration:inherit}.fa:before,a .fa,li .fa{display:inline-block}li .fa-large:before{width:1.875em}ul.fas{list-style-type:none;margin-left:2em;text-indent:-.8em}ul.fas li .fa{width:.8em}ul.fas li .fa-large:before{vertical-align:baseline}.fa-book:before,.icon-book:before{content:"\f02d"}.fa-caret-down:before,.icon-caret-down:before{content:"\f0d7"}.fa-caret-up:before,.icon-caret-up:before{content:"\f0d8"}.fa-caret-left:before,.icon-caret-left:before{content:"\f0d9"}.fa-caret-right:before,.icon-caret-right:before{content:"\f0da"}.rst-versions{position:fixed;bottom:0;left:0;width:300px;color:#fcfcfc;background:#1f1d1d;font-family:Lato,proxima-nova,Helvetica Neue,Arial,sans-serif;z-index:400}.rst-versions a{color:#2980b9;text-decoration:none}.rst-versions .rst-badge-small{display:none}.rst-versions .rst-current-version{padding:12px;background-color:#272525;display:block;text-align:right;font-size:90%;cursor:pointer;color:#27ae60}.rst-versions .rst-current-version:after{clear:both;content:"";display:block}.rst-versions .rst-current-version .fa{color:#fcfcfc}.rst-versions .rst-current-version .fa-book,.rst-versions .rst-current-version .icon-book{float:left}.rst-versions .rst-current-version.rst-out-of-date{background-color:#e74c3c;color:#fff}.rst-versions .rst-current-version.rst-active-old-version{background-color:#f1c40f;color:#000}.rst-versions.shift-up{height:auto;max-height:100%;overflow-y:scroll}.rst-versions.shift-up .rst-other-versions{display:block}.rst-versions .rst-other-versions{font-size:90%;padding:12px;color:grey;display:none}.rst-versions .rst-other-versions hr{display:block;height:1px;border:0;margin:20px 0;padding:0;border-top:1px solid #413d3d}.rst-versions .rst-other-versions dd{display:inline-block;margin:0}.rst-versions .rst-other-versions dd a{display:inline-block;padding:6px;color:#fcfcfc}.rst-versions.rst-badge{width:auto;bottom:20px;right:20px;left:auto;border:none;max-width:300px;max-height:90%}.rst-versions.rst-badge .fa-book,.rst-versions.rst-badge .icon-book{float:none;line-height:30px}.rst-versions.rst-badge.shift-up .rst-current-version{text-align:right}.rst-versions.rst-badge.shift-up .rst-current-version .fa-book,.rst-versions.rst-badge.shift-up .rst-current-version .icon-book{float:left}.rst-versions.rst-badge>.rst-current-version{width:auto;height:30px;line-height:30px;padding:0 6px;display:block;text-align:center}@media screen and (max-width:768px){.rst-versions{width:85%;display:none}.rst-versions.shift{display:block}}
|
File diff suppressed because one or more lines are too long
|
@ -33,7 +33,7 @@ echo -n "en@quot en@boldquot" > "$PO_DIR"/LINGUAS
|
||||||
for file in "$WORK_DIR"/*.po; do
|
for file in "$WORK_DIR"/*.po; do
|
||||||
# First remove useless '\r' in messages
|
# First remove useless '\r' in messages
|
||||||
sed -i -e 's/\\r//' "$file"
|
sed -i -e 's/\\r//' "$file"
|
||||||
bn=`basename "$file"`
|
bn=$(basename "$file")
|
||||||
bn=${bn#aria2-}
|
bn=${bn#aria2-}
|
||||||
dst="$PO_DIR"/"$bn"
|
dst="$PO_DIR"/"$bn"
|
||||||
# copy file to po directory
|
# copy file to po directory
|
||||||
|
|
1018
m4/ax_cxx_compile_stdcxx.m4
Normal file
1018
m4/ax_cxx_compile_stdcxx.m4
Normal file
File diff suppressed because it is too large
Load diff
|
@ -1,148 +0,0 @@
|
||||||
# ============================================================================
|
|
||||||
# http://www.gnu.org/software/autoconf-archive/ax_cxx_compile_stdcxx_11.html
|
|
||||||
# ============================================================================
|
|
||||||
#
|
|
||||||
# SYNOPSIS
|
|
||||||
#
|
|
||||||
# AX_CXX_COMPILE_STDCXX_11([ext|noext],[mandatory|optional])
|
|
||||||
#
|
|
||||||
# DESCRIPTION
|
|
||||||
#
|
|
||||||
# Check for baseline language coverage in the compiler for the C++11
|
|
||||||
# standard; if necessary, add switches to CXXFLAGS to enable support.
|
|
||||||
#
|
|
||||||
# The first argument, if specified, indicates whether you insist on an
|
|
||||||
# extended mode (e.g. -std=gnu++11) or a strict conformance mode (e.g.
|
|
||||||
# -std=c++11). If neither is specified, you get whatever works, with
|
|
||||||
# preference for an extended mode.
|
|
||||||
#
|
|
||||||
# The second argument, if specified 'mandatory' or if left unspecified,
|
|
||||||
# indicates that baseline C++11 support is required and that the macro
|
|
||||||
# should error out if no mode with that support is found. If specified
|
|
||||||
# 'optional', then configuration proceeds regardless, after defining
|
|
||||||
# HAVE_CXX11 if and only if a supporting mode is found.
|
|
||||||
#
|
|
||||||
# This version of AX_CXX_COMPILE_STDCXX_11 will also check if specifying
|
|
||||||
# `-stdlib=libc++`` is required, as it is on current OSX systems using
|
|
||||||
# a clang which defaults to an old libstdc++.
|
|
||||||
#
|
|
||||||
# LICENSE
|
|
||||||
#
|
|
||||||
# Copyright (c) 2008 Benjamin Kosnik <bkoz@redhat.com>
|
|
||||||
# Copyright (c) 2012 Zack Weinberg <zackw@panix.com>
|
|
||||||
# Copyright (c) 2013 Roy Stogner <roystgnr@ices.utexas.edu>
|
|
||||||
# Copyright (c) 2013 Nils Maier <maierman@web.de>
|
|
||||||
#
|
|
||||||
# Copying and distribution of this file, with or without modification, are
|
|
||||||
# permitted in any medium without royalty provided the copyright notice
|
|
||||||
# and this notice are preserved. This file is offered as-is, without any
|
|
||||||
# warranty.
|
|
||||||
|
|
||||||
#serial 3
|
|
||||||
#modified to check fo -stdlib=libc++ (required on OSX)
|
|
||||||
|
|
||||||
m4_define([_AX_CXX_COMPILE_STDCXX_11_testbody], [
|
|
||||||
#include <memory>
|
|
||||||
|
|
||||||
template <typename T>
|
|
||||||
struct check
|
|
||||||
{
|
|
||||||
static_assert(sizeof(int) <= sizeof(T), "not big enough");
|
|
||||||
};
|
|
||||||
|
|
||||||
typedef check<check<bool>> right_angle_brackets;
|
|
||||||
|
|
||||||
int a;
|
|
||||||
decltype(a) b;
|
|
||||||
|
|
||||||
typedef check<int> check_type;
|
|
||||||
check_type c;
|
|
||||||
check_type&& cr = static_cast<check_type&&>(c);
|
|
||||||
|
|
||||||
auto d = a;
|
|
||||||
|
|
||||||
// Check std::shared_ptr is available, which might require -stdlib=libc++.
|
|
||||||
std::shared_ptr<check_type> ptr;
|
|
||||||
])
|
|
||||||
|
|
||||||
AC_DEFUN([AX_CXX_COMPILE_STDCXX_11], [dnl
|
|
||||||
m4_if([$1], [], [],
|
|
||||||
[$1], [ext], [],
|
|
||||||
[$1], [noext], [],
|
|
||||||
[m4_fatal([invalid argument `$1' to AX_CXX_COMPILE_STDCXX_11])])dnl
|
|
||||||
m4_if([$2], [], [ax_cxx_compile_cxx11_required=true],
|
|
||||||
[$2], [mandatory], [ax_cxx_compile_cxx11_required=true],
|
|
||||||
[$2], [optional], [ax_cxx_compile_cxx11_required=false],
|
|
||||||
[m4_fatal([invalid second argument `$2' to AX_CXX_COMPILE_STDCXX_11])])
|
|
||||||
AC_LANG_PUSH([C++])dnl
|
|
||||||
ac_success=no
|
|
||||||
AC_CACHE_CHECK(whether $CXX supports C++11 features by default,
|
|
||||||
ax_cv_cxx_compile_cxx11,
|
|
||||||
[AC_COMPILE_IFELSE([AC_LANG_SOURCE([_AX_CXX_COMPILE_STDCXX_11_testbody])],
|
|
||||||
[ax_cv_cxx_compile_cxx11=yes],
|
|
||||||
[ax_cv_cxx_compile_cxx11=no])])
|
|
||||||
if test x$ax_cv_cxx_compile_cxx11 = xyes; then
|
|
||||||
ac_success=yes
|
|
||||||
fi
|
|
||||||
|
|
||||||
m4_if([$1], [noext], [], [dnl
|
|
||||||
if test x$ac_success = xno; then
|
|
||||||
for switch in -std=gnu++11 -std=gnu++0x; do
|
|
||||||
for lib in "" -stdlib=libc++; do
|
|
||||||
cachevar=AS_TR_SH([ax_cv_cxx_compile_cxx11_$switch$lib])
|
|
||||||
AC_CACHE_CHECK(whether $CXX supports C++11 features with $switch $lib,
|
|
||||||
$cachevar,
|
|
||||||
[ac_save_CXXFLAGS="$CXXFLAGS"
|
|
||||||
CXXFLAGS="$CXXFLAGS $switch $lib"
|
|
||||||
AC_COMPILE_IFELSE([AC_LANG_SOURCE([_AX_CXX_COMPILE_STDCXX_11_testbody])],
|
|
||||||
[eval $cachevar=yes],
|
|
||||||
[eval $cachevar=no])
|
|
||||||
CXXFLAGS="$ac_save_CXXFLAGS"])
|
|
||||||
if eval test x\$$cachevar = xyes; then
|
|
||||||
CXXFLAGS="$CXXFLAGS $switch $lib"
|
|
||||||
ac_success=yes
|
|
||||||
break 2
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
done
|
|
||||||
fi])
|
|
||||||
|
|
||||||
m4_if([$1], [ext], [], [dnl
|
|
||||||
if test x$ac_success = xno; then
|
|
||||||
for switch in -std=c++11 -std=c++0x; do
|
|
||||||
for lib in "" -stdlib=libc++; do
|
|
||||||
cachevar=AS_TR_SH([ax_cv_cxx_compile_cxx11_$switch$lib])
|
|
||||||
AC_CACHE_CHECK(whether $CXX supports C++11 features with $switch $lib,
|
|
||||||
$cachevar,
|
|
||||||
[ac_save_CXXFLAGS="$CXXFLAGS"
|
|
||||||
CXXFLAGS="$CXXFLAGS $switch $lib"
|
|
||||||
AC_COMPILE_IFELSE([AC_LANG_SOURCE([_AX_CXX_COMPILE_STDCXX_11_testbody])],
|
|
||||||
[eval $cachevar=yes],
|
|
||||||
[eval $cachevar=no])
|
|
||||||
CXXFLAGS="$ac_save_CXXFLAGS"])
|
|
||||||
if eval test x\$$cachevar = xyes; then
|
|
||||||
CXXFLAGS="$CXXFLAGS $switch $lib"
|
|
||||||
ac_success=yes
|
|
||||||
break 2
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
done
|
|
||||||
fi])
|
|
||||||
AC_LANG_POP([C++])
|
|
||||||
if test x$ax_cxx_compile_cxx11_required = xtrue; then
|
|
||||||
if test x$ac_success = xno; then
|
|
||||||
AC_MSG_ERROR([*** A compiler with support for C++11 language features is required.])
|
|
||||||
fi
|
|
||||||
else
|
|
||||||
if test x$ac_success = xno; then
|
|
||||||
HAVE_CXX11=0
|
|
||||||
AC_MSG_NOTICE([No compiler with C++11 support was found])
|
|
||||||
else
|
|
||||||
HAVE_CXX11=1
|
|
||||||
AC_DEFINE(HAVE_CXX11,1,
|
|
||||||
[define if the compiler supports basic C++11 syntax])
|
|
||||||
fi
|
|
||||||
|
|
||||||
AC_SUBST(HAVE_CXX11)
|
|
||||||
fi
|
|
||||||
])
|
|
60
makerelease
60
makerelease
|
@ -1,14 +1,5 @@
|
||||||
#!/bin/sh -e
|
#!/bin/sh -e
|
||||||
|
|
||||||
if [ -z "$ANDROID_HOME" ]; then
|
|
||||||
echo 'No $ANDROID_HOME specified.'
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
if [ -z "$NDK" ]; then
|
|
||||||
echo 'No $NDK specified.'
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
VERSION=$1
|
VERSION=$1
|
||||||
PREV_VERSION=$2
|
PREV_VERSION=$2
|
||||||
|
|
||||||
|
@ -18,29 +9,48 @@ git log --pretty=fuller --date=short refs/tags/release-$PREV_VERSION..HEAD > Cha
|
||||||
autoreconf -i
|
autoreconf -i
|
||||||
|
|
||||||
./configure && \
|
./configure && \
|
||||||
make dist-bzip2 && make dist-gzip && make dist-xz || echo "error"
|
make dist-bzip2 && make dist-gzip && make dist-xz
|
||||||
make distclean
|
make distclean
|
||||||
|
|
||||||
|
release_mingw()
|
||||||
|
{
|
||||||
|
export HOST=$1
|
||||||
|
export LABEL=$2
|
||||||
|
|
||||||
|
mkdir -p mingw-out
|
||||||
|
|
||||||
|
docker build \
|
||||||
|
--build-arg HOST=$HOST \
|
||||||
|
--build-arg ARIA2_VERSION=release-$VERSION \
|
||||||
|
--build-arg ARIA2_REF=refs/tags/release-$VERSION \
|
||||||
|
-t aria2-mingw-$HOST - < Dockerfile.mingw
|
||||||
|
|
||||||
|
docker run --rm -it -v $PWD/mingw-out:/out aria2-mingw-$HOST \
|
||||||
|
cp /aria2/src/aria2c.exe /out
|
||||||
|
|
||||||
|
./mingw-release
|
||||||
|
|
||||||
|
rm -rf mingw-out
|
||||||
|
}
|
||||||
|
|
||||||
# mingw 32bit
|
# mingw 32bit
|
||||||
export HOST=i686-w64-mingw32
|
release_mingw i686-w64-mingw32 win-32bit
|
||||||
export LABEL=win-32bit
|
|
||||||
./mingw-config
|
|
||||||
make -j8
|
|
||||||
./mingw-release
|
|
||||||
make distclean
|
|
||||||
|
|
||||||
# mingw 64bit
|
# mingw 64bit
|
||||||
export HOST=x86_64-w64-mingw32
|
release_mingw x86_64-w64-mingw32 win-64bit
|
||||||
export LABEL=win-64bit
|
|
||||||
./mingw-config
|
|
||||||
make -j8
|
|
||||||
./mingw-release
|
|
||||||
make distclean
|
|
||||||
|
|
||||||
# android
|
# android
|
||||||
./android-config
|
mkdir -p android-out
|
||||||
make -j8
|
|
||||||
|
docker build \
|
||||||
|
--build-arg ARIA2_VERSION=release-$VERSION \
|
||||||
|
-t aria2-android - < Dockerfile.android
|
||||||
|
|
||||||
|
docker run --rm -it -v $PWD/android-out:/out aria2-android \
|
||||||
|
cp /root/build/aria2/src/aria2c /out
|
||||||
|
|
||||||
./android-release
|
./android-release
|
||||||
make distclean
|
|
||||||
|
rm -rf android-out
|
||||||
|
|
||||||
# OSX builds are created separately using makerelease-osx.mk
|
# OSX builds are created separately using makerelease-osx.mk
|
||||||
|
|
|
@ -238,7 +238,7 @@ endef
|
||||||
export ARIA2_DISTXML
|
export ARIA2_DISTXML
|
||||||
|
|
||||||
|
|
||||||
# Detect numer of CPUs to be used with make -j
|
# Detect number of CPUs to be used with make -j
|
||||||
CPUS = $(shell sysctl hw.ncpu | cut -d" " -f2)
|
CPUS = $(shell sysctl hw.ncpu | cut -d" " -f2)
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -36,7 +36,7 @@ test -z "$BUILD_VER" && BUILD_VER=1
|
||||||
test -z "$LABEL" && LABEL=$HOST
|
test -z "$LABEL" && LABEL=$HOST
|
||||||
|
|
||||||
# cd to the directory where this script exists.
|
# cd to the directory where this script exists.
|
||||||
cd $(dirname $0)
|
cd "$(dirname "$0")"
|
||||||
. ./script-helper
|
. ./script-helper
|
||||||
|
|
||||||
get_version
|
get_version
|
||||||
|
@ -48,9 +48,8 @@ fi
|
||||||
|
|
||||||
DIST_DIR=aria2-${VERSION}-${LABEL}-build${BUILD_VER}
|
DIST_DIR=aria2-${VERSION}-${LABEL}-build${BUILD_VER}
|
||||||
|
|
||||||
/usr/bin/$HOST-strip src/aria2c.exe
|
mkdir "$DIST_DIR"
|
||||||
mkdir $DIST_DIR
|
|
||||||
cp AUTHORS COPYING ChangeLog LICENSE.OpenSSL NEWS README.html README.mingw \
|
cp AUTHORS COPYING ChangeLog LICENSE.OpenSSL NEWS README.html README.mingw \
|
||||||
src/aria2c.exe $DIST_DIR
|
mingw-out/aria2c.exe "$DIST_DIR"
|
||||||
zip -9 -r $DIST_DIR.zip $DIST_DIR
|
zip -9 -r "$DIST_DIR.zip" "$DIST_DIR"
|
||||||
rm -rf $DIST_DIR
|
rm -rf "$DIST_DIR"
|
||||||
|
|
|
@ -29,7 +29,7 @@
|
||||||
# version. If you delete this exception statement from all source
|
# version. If you delete this exception statement from all source
|
||||||
# files in the program, then also delete it here.
|
# files in the program, then also delete it here.
|
||||||
|
|
||||||
get_version () {
|
get_version() {
|
||||||
VERSION=`grep AC_INIT configure.ac | sed '/AC_INIT/ s/AC_INIT(\[aria2\],\[\([^]]\+\)\],.*/\1/'`
|
VERSION=$(grep AC_INIT configure.ac | sed '/AC_INIT/ s/AC_INIT(\[aria2\],\[\([^]]\+\)\],.*/\1/')
|
||||||
echo "Version: $VERSION"
|
echo "Version: $VERSION"
|
||||||
}
|
}
|
||||||
|
|
|
@ -258,7 +258,7 @@ ssize_t AbstractDiskWriter::writeDataInternal(const unsigned char* data,
|
||||||
size_t len, int64_t offset)
|
size_t len, int64_t offset)
|
||||||
{
|
{
|
||||||
if (mapaddr_) {
|
if (mapaddr_) {
|
||||||
memcpy(mapaddr_ + offset, data, len);
|
std::copy_n(data, len, mapaddr_ + offset);
|
||||||
return len;
|
return len;
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
|
@ -298,7 +298,7 @@ ssize_t AbstractDiskWriter::readDataInternal(unsigned char* data, size_t len,
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
auto readlen = std::min(maplen_ - offset, static_cast<int64_t>(len));
|
auto readlen = std::min(maplen_ - offset, static_cast<int64_t>(len));
|
||||||
memcpy(data, mapaddr_ + offset, readlen);
|
std::copy_n(mapaddr_ + offset, readlen, data);
|
||||||
return readlen;
|
return readlen;
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
|
@ -597,7 +597,7 @@ void AbstractDiskWriter::flushOSBuffers()
|
||||||
}
|
}
|
||||||
#ifdef __MINGW32__
|
#ifdef __MINGW32__
|
||||||
FlushFileBuffers(fd_);
|
FlushFileBuffers(fd_);
|
||||||
#else // !__MINGW32__
|
#else // !__MINGW32__
|
||||||
fsync(fd_);
|
fsync(fd_);
|
||||||
#endif // __MINGW32__
|
#endif // __MINGW32__
|
||||||
}
|
}
|
||||||
|
|
|
@ -122,7 +122,7 @@ bool AbstractHttpServerResponseCommand::execute()
|
||||||
else {
|
else {
|
||||||
if (timeoutTimer_.difference(global::wallclock()) >= 30_s) {
|
if (timeoutTimer_.difference(global::wallclock()) >= 30_s) {
|
||||||
A2_LOG_INFO(fmt("CUID#%" PRId64
|
A2_LOG_INFO(fmt("CUID#%" PRId64
|
||||||
" - HttpServer: Timeout while trasmitting response.",
|
" - HttpServer: Timeout while transmitting response.",
|
||||||
getCuid()));
|
getCuid()));
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
|
@ -131,7 +131,7 @@ struct hash_finder {
|
||||||
|
|
||||||
std::string errToString(OSStatus err)
|
std::string errToString(OSStatus err)
|
||||||
{
|
{
|
||||||
std::string rv = "Unkown error";
|
std::string rv = "Unknown error";
|
||||||
CFRef<CFStringRef> cerr(SecCopyErrorMessageString(err, nullptr));
|
CFRef<CFStringRef> cerr(SecCopyErrorMessageString(err, nullptr));
|
||||||
if (!cerr) {
|
if (!cerr) {
|
||||||
return rv;
|
return rv;
|
||||||
|
|
|
@ -40,10 +40,11 @@
|
||||||
#include "LogFactory.h"
|
#include "LogFactory.h"
|
||||||
#include "SocketCore.h"
|
#include "SocketCore.h"
|
||||||
#include "util.h"
|
#include "util.h"
|
||||||
|
#include "EventPoll.h"
|
||||||
|
|
||||||
namespace aria2 {
|
namespace aria2 {
|
||||||
|
|
||||||
void callback(void* arg, int status, int timeouts, struct hostent* host)
|
void callback(void* arg, int status, int timeouts, ares_addrinfo* result)
|
||||||
{
|
{
|
||||||
AsyncNameResolver* resolverPtr = reinterpret_cast<AsyncNameResolver*>(arg);
|
AsyncNameResolver* resolverPtr = reinterpret_cast<AsyncNameResolver*>(arg);
|
||||||
if (status != ARES_SUCCESS) {
|
if (status != ARES_SUCCESS) {
|
||||||
|
@ -51,12 +52,15 @@ void callback(void* arg, int status, int timeouts, struct hostent* host)
|
||||||
resolverPtr->status_ = AsyncNameResolver::STATUS_ERROR;
|
resolverPtr->status_ = AsyncNameResolver::STATUS_ERROR;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
for (char** ap = host->h_addr_list; *ap; ++ap) {
|
for (auto ap = result->nodes; ap; ap = ap->ai_next) {
|
||||||
char addrstring[NI_MAXHOST];
|
char addrstring[NI_MAXHOST];
|
||||||
if (inetNtop(host->h_addrtype, *ap, addrstring, sizeof(addrstring)) == 0) {
|
auto rv = getnameinfo(ap->ai_addr, ap->ai_addrlen, addrstring,
|
||||||
|
sizeof(addrstring), nullptr, 0, NI_NUMERICHOST);
|
||||||
|
if (rv == 0) {
|
||||||
resolverPtr->resolvedAddresses_.push_back(addrstring);
|
resolverPtr->resolvedAddresses_.push_back(addrstring);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
ares_freeaddrinfo(result);
|
||||||
if (resolverPtr->resolvedAddresses_.empty()) {
|
if (resolverPtr->resolvedAddresses_.empty()) {
|
||||||
resolverPtr->error_ = "no address returned or address conversion failed";
|
resolverPtr->error_ = "no address returned or address conversion failed";
|
||||||
resolverPtr->status_ = AsyncNameResolver::STATUS_ERROR;
|
resolverPtr->status_ = AsyncNameResolver::STATUS_ERROR;
|
||||||
|
@ -66,24 +70,63 @@ void callback(void* arg, int status, int timeouts, struct hostent* host)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
AsyncNameResolver::AsyncNameResolver(int family
|
namespace {
|
||||||
#ifdef HAVE_ARES_ADDR_NODE
|
void sock_state_cb(void* arg, ares_socket_t fd, int read, int write)
|
||||||
,
|
{
|
||||||
ares_addr_node* servers
|
auto resolver = static_cast<AsyncNameResolver*>(arg);
|
||||||
#endif // HAVE_ARES_ADDR_NODE
|
|
||||||
)
|
resolver->handle_sock_state(fd, read, write);
|
||||||
|
}
|
||||||
|
} // namespace
|
||||||
|
|
||||||
|
void AsyncNameResolver::handle_sock_state(ares_socket_t fd, int read, int write)
|
||||||
|
{
|
||||||
|
int events = 0;
|
||||||
|
|
||||||
|
if (read) {
|
||||||
|
events |= EventPoll::EVENT_READ;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (write) {
|
||||||
|
events |= EventPoll::EVENT_WRITE;
|
||||||
|
}
|
||||||
|
|
||||||
|
auto it = std::find_if(
|
||||||
|
std::begin(socks_), std::end(socks_),
|
||||||
|
[fd](const AsyncNameResolverSocketEntry& ent) { return ent.fd == fd; });
|
||||||
|
if (it == std::end(socks_)) {
|
||||||
|
if (!events) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
socks_.emplace_back(AsyncNameResolverSocketEntry{fd, events});
|
||||||
|
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!events) {
|
||||||
|
socks_.erase(it);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
(*it).events = events;
|
||||||
|
}
|
||||||
|
|
||||||
|
AsyncNameResolver::AsyncNameResolver(int family, const std::string& servers)
|
||||||
: status_(STATUS_READY), family_(family)
|
: status_(STATUS_READY), family_(family)
|
||||||
{
|
{
|
||||||
|
ares_options opts{};
|
||||||
|
opts.sock_state_cb = sock_state_cb;
|
||||||
|
opts.sock_state_cb_data = this;
|
||||||
|
|
||||||
// TODO evaluate return value
|
// TODO evaluate return value
|
||||||
ares_init(&channel_);
|
ares_init_options(&channel_, &opts, ARES_OPT_SOCK_STATE_CB);
|
||||||
#if defined(HAVE_ARES_SET_SERVERS) && defined(HAVE_ARES_ADDR_NODE)
|
|
||||||
if (servers) {
|
if (!servers.empty()) {
|
||||||
// ares_set_servers has been added since c-ares 1.7.1
|
if (ares_set_servers_csv(channel_, servers.c_str()) != ARES_SUCCESS) {
|
||||||
if (ares_set_servers(channel_, servers) != ARES_SUCCESS) {
|
A2_LOG_DEBUG("ares_set_servers_csv failed");
|
||||||
A2_LOG_DEBUG("ares_set_servers failed");
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endif // HAVE_ARES_SET_SERVERS && HAVE_ARES_ADDR_NODE
|
|
||||||
}
|
}
|
||||||
|
|
||||||
AsyncNameResolver::~AsyncNameResolver() { ares_destroy(channel_); }
|
AsyncNameResolver::~AsyncNameResolver() { ares_destroy(channel_); }
|
||||||
|
@ -92,25 +135,58 @@ void AsyncNameResolver::resolve(const std::string& name)
|
||||||
{
|
{
|
||||||
hostname_ = name;
|
hostname_ = name;
|
||||||
status_ = STATUS_QUERYING;
|
status_ = STATUS_QUERYING;
|
||||||
ares_gethostbyname(channel_, name.c_str(), family_, callback, this);
|
|
||||||
|
ares_addrinfo_hints hints{};
|
||||||
|
hints.ai_family = family_;
|
||||||
|
|
||||||
|
ares_getaddrinfo(channel_, name.c_str(), nullptr, &hints, callback, this);
|
||||||
}
|
}
|
||||||
|
|
||||||
int AsyncNameResolver::getFds(fd_set* rfdsPtr, fd_set* wfdsPtr) const
|
ares_socket_t AsyncNameResolver::getFds(fd_set* rfdsPtr, fd_set* wfdsPtr) const
|
||||||
{
|
{
|
||||||
return ares_fds(channel_, rfdsPtr, wfdsPtr);
|
ares_socket_t nfds = 0;
|
||||||
|
|
||||||
|
for (const auto& ent : socks_) {
|
||||||
|
if (ent.events & EventPoll::EVENT_READ) {
|
||||||
|
FD_SET(ent.fd, rfdsPtr);
|
||||||
|
nfds = std::max(nfds, ent.fd + 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (ent.events & EventPoll::EVENT_WRITE) {
|
||||||
|
FD_SET(ent.fd, wfdsPtr);
|
||||||
|
nfds = std::max(nfds, ent.fd + 1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return nfds;
|
||||||
}
|
}
|
||||||
|
|
||||||
void AsyncNameResolver::process(fd_set* rfdsPtr, fd_set* wfdsPtr)
|
void AsyncNameResolver::process(fd_set* rfdsPtr, fd_set* wfdsPtr)
|
||||||
{
|
{
|
||||||
ares_process(channel_, rfdsPtr, wfdsPtr);
|
for (const auto& ent : socks_) {
|
||||||
|
ares_socket_t readfd = ARES_SOCKET_BAD;
|
||||||
|
ares_socket_t writefd = ARES_SOCKET_BAD;
|
||||||
|
|
||||||
|
if (FD_ISSET(ent.fd, rfdsPtr) && (ent.events & EventPoll::EVENT_READ)) {
|
||||||
|
readfd = ent.fd;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (FD_ISSET(ent.fd, wfdsPtr) && (ent.events & EventPoll::EVENT_WRITE)) {
|
||||||
|
writefd = ent.fd;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (readfd != ARES_SOCKET_BAD || writefd != ARES_SOCKET_BAD) {
|
||||||
|
process(readfd, writefd);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef HAVE_LIBCARES
|
#ifdef HAVE_LIBCARES
|
||||||
|
|
||||||
int AsyncNameResolver::getsock(sock_t* sockets) const
|
const std::vector<AsyncNameResolverSocketEntry>&
|
||||||
|
AsyncNameResolver::getsock() const
|
||||||
{
|
{
|
||||||
return ares_getsock(channel_, reinterpret_cast<ares_socket_t*>(sockets),
|
return socks_;
|
||||||
ARES_GETSOCK_MAXNUM);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void AsyncNameResolver::process(ares_socket_t readfd, ares_socket_t writefd)
|
void AsyncNameResolver::process(ares_socket_t readfd, ares_socket_t writefd)
|
||||||
|
@ -125,41 +201,4 @@ bool AsyncNameResolver::operator==(const AsyncNameResolver& resolver) const
|
||||||
return this == &resolver;
|
return this == &resolver;
|
||||||
}
|
}
|
||||||
|
|
||||||
void AsyncNameResolver::reset()
|
|
||||||
{
|
|
||||||
hostname_ = A2STR::NIL;
|
|
||||||
resolvedAddresses_.clear();
|
|
||||||
status_ = STATUS_READY;
|
|
||||||
ares_destroy(channel_);
|
|
||||||
// TODO evaluate return value
|
|
||||||
ares_init(&channel_);
|
|
||||||
}
|
|
||||||
|
|
||||||
#ifdef HAVE_ARES_ADDR_NODE
|
|
||||||
|
|
||||||
ares_addr_node* parseAsyncDNSServers(const std::string& serversOpt)
|
|
||||||
{
|
|
||||||
std::vector<std::string> servers;
|
|
||||||
util::split(std::begin(serversOpt), std::end(serversOpt),
|
|
||||||
std::back_inserter(servers), ',', true /* doStrip */);
|
|
||||||
ares_addr_node root;
|
|
||||||
root.next = nullptr;
|
|
||||||
ares_addr_node* tail = &root;
|
|
||||||
for (const auto& s : servers) {
|
|
||||||
auto node = make_unique<ares_addr_node>();
|
|
||||||
|
|
||||||
size_t len = net::getBinAddr(&node->addr, s.c_str());
|
|
||||||
if (len != 0) {
|
|
||||||
node->next = nullptr;
|
|
||||||
node->family = (len == 4 ? AF_INET : AF_INET6);
|
|
||||||
tail->next = node.release();
|
|
||||||
tail = tail->next;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return root.next;
|
|
||||||
}
|
|
||||||
|
|
||||||
#endif // HAVE_ARES_ADDR_NODE
|
|
||||||
|
|
||||||
} // namespace aria2
|
} // namespace aria2
|
||||||
|
|
|
@ -46,9 +46,14 @@
|
||||||
|
|
||||||
namespace aria2 {
|
namespace aria2 {
|
||||||
|
|
||||||
|
struct AsyncNameResolverSocketEntry {
|
||||||
|
ares_socket_t fd;
|
||||||
|
int events;
|
||||||
|
};
|
||||||
|
|
||||||
class AsyncNameResolver {
|
class AsyncNameResolver {
|
||||||
friend void callback(void* arg, int status, int timeouts,
|
friend void callback(void* arg, int status, int timeouts,
|
||||||
struct hostent* host);
|
ares_addrinfo* result);
|
||||||
|
|
||||||
public:
|
public:
|
||||||
enum STATUS {
|
enum STATUS {
|
||||||
|
@ -59,6 +64,7 @@ public:
|
||||||
};
|
};
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
std::vector<AsyncNameResolverSocketEntry> socks_;
|
||||||
STATUS status_;
|
STATUS status_;
|
||||||
int family_;
|
int family_;
|
||||||
ares_channel channel_;
|
ares_channel channel_;
|
||||||
|
@ -68,12 +74,7 @@ private:
|
||||||
std::string hostname_;
|
std::string hostname_;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
AsyncNameResolver(int family
|
AsyncNameResolver(int family, const std::string& servers);
|
||||||
#ifdef HAVE_ARES_ADDR_NODE
|
|
||||||
,
|
|
||||||
ares_addr_node* servers
|
|
||||||
#endif // HAVE_ARES_ADDR_NODE
|
|
||||||
);
|
|
||||||
|
|
||||||
~AsyncNameResolver();
|
~AsyncNameResolver();
|
||||||
|
|
||||||
|
@ -88,14 +89,14 @@ public:
|
||||||
|
|
||||||
STATUS getStatus() const { return status_; }
|
STATUS getStatus() const { return status_; }
|
||||||
|
|
||||||
int getFds(fd_set* rfdsPtr, fd_set* wfdsPtr) const;
|
ares_socket_t getFds(fd_set* rfdsPtr, fd_set* wfdsPtr) const;
|
||||||
|
|
||||||
void process(fd_set* rfdsPtr, fd_set* wfdsPtr);
|
void process(fd_set* rfdsPtr, fd_set* wfdsPtr);
|
||||||
|
|
||||||
int getFamily() const { return family_; }
|
int getFamily() const { return family_; }
|
||||||
#ifdef HAVE_LIBCARES
|
#ifdef HAVE_LIBCARES
|
||||||
|
|
||||||
int getsock(sock_t* sockets) const;
|
const std::vector<AsyncNameResolverSocketEntry>& getsock() const;
|
||||||
|
|
||||||
void process(ares_socket_t readfd, ares_socket_t writefd);
|
void process(ares_socket_t readfd, ares_socket_t writefd);
|
||||||
|
|
||||||
|
@ -105,17 +106,11 @@ public:
|
||||||
|
|
||||||
void setAddr(const std::string& addrString);
|
void setAddr(const std::string& addrString);
|
||||||
|
|
||||||
void reset();
|
|
||||||
|
|
||||||
const std::string& getHostname() const { return hostname_; }
|
const std::string& getHostname() const { return hostname_; }
|
||||||
|
|
||||||
|
void handle_sock_state(ares_socket_t sock, int read, int write);
|
||||||
};
|
};
|
||||||
|
|
||||||
#ifdef HAVE_ARES_ADDR_NODE
|
|
||||||
|
|
||||||
ares_addr_node* parseAsyncDNSServers(const std::string& serversOpt);
|
|
||||||
|
|
||||||
#endif // HAVE_ARES_ADDR_NODE
|
|
||||||
|
|
||||||
} // namespace aria2
|
} // namespace aria2
|
||||||
|
|
||||||
#endif // D_ASYNC_NAME_RESOLVER_H
|
#endif // D_ASYNC_NAME_RESOLVER_H
|
||||||
|
|
|
@ -88,12 +88,7 @@ void AsyncNameResolverMan::startAsyncFamily(const std::string& hostname,
|
||||||
Command* command)
|
Command* command)
|
||||||
{
|
{
|
||||||
asyncNameResolver_[numResolver_] =
|
asyncNameResolver_[numResolver_] =
|
||||||
std::make_shared<AsyncNameResolver>(family
|
std::make_shared<AsyncNameResolver>(family, servers_);
|
||||||
#ifdef HAVE_ARES_ADDR_NODE
|
|
||||||
,
|
|
||||||
e->getAsyncDNSServers()
|
|
||||||
#endif // HAVE_ARES_ADDR_NODE
|
|
||||||
);
|
|
||||||
asyncNameResolver_[numResolver_]->resolve(hostname);
|
asyncNameResolver_[numResolver_]->resolve(hostname);
|
||||||
setNameResolverCheck(numResolver_, e, command);
|
setNameResolverCheck(numResolver_, e, command);
|
||||||
}
|
}
|
||||||
|
@ -222,6 +217,7 @@ void configureAsyncNameResolverMan(AsyncNameResolverMan* asyncNameResolverMan,
|
||||||
if (!net::getIPv6AddrConfigured() || option->getAsBool(PREF_DISABLE_IPV6)) {
|
if (!net::getIPv6AddrConfigured() || option->getAsBool(PREF_DISABLE_IPV6)) {
|
||||||
asyncNameResolverMan->setIPv6(false);
|
asyncNameResolverMan->setIPv6(false);
|
||||||
}
|
}
|
||||||
|
asyncNameResolverMan->setServers(option->get(PREF_ASYNC_DNS_SERVER));
|
||||||
}
|
}
|
||||||
|
|
||||||
} // namespace aria2
|
} // namespace aria2
|
||||||
|
|
|
@ -79,6 +79,8 @@ public:
|
||||||
// Resets state. Also removes resolvers from DownloadEngine.
|
// Resets state. Also removes resolvers from DownloadEngine.
|
||||||
void reset(DownloadEngine* e, Command* command);
|
void reset(DownloadEngine* e, Command* command);
|
||||||
|
|
||||||
|
void setServers(std::string servers) { servers_ = std::move(servers); }
|
||||||
|
|
||||||
private:
|
private:
|
||||||
void startAsyncFamily(const std::string& hostname, int family,
|
void startAsyncFamily(const std::string& hostname, int family,
|
||||||
DownloadEngine* e, Command* command);
|
DownloadEngine* e, Command* command);
|
||||||
|
@ -88,6 +90,7 @@ private:
|
||||||
Command* command);
|
Command* command);
|
||||||
|
|
||||||
std::shared_ptr<AsyncNameResolver> asyncNameResolver_[2];
|
std::shared_ptr<AsyncNameResolver> asyncNameResolver_[2];
|
||||||
|
std::string servers_;
|
||||||
size_t numResolver_;
|
size_t numResolver_;
|
||||||
int resolverCheck_;
|
int resolverCheck_;
|
||||||
bool ipv4_;
|
bool ipv4_;
|
||||||
|
|
|
@ -64,8 +64,8 @@ BitfieldMan::BitfieldMan(int32_t blockLength, int64_t totalLength)
|
||||||
bitfieldLength_ = blocks_ / 8 + (blocks_ % 8 ? 1 : 0);
|
bitfieldLength_ = blocks_ / 8 + (blocks_ % 8 ? 1 : 0);
|
||||||
bitfield_ = new unsigned char[bitfieldLength_];
|
bitfield_ = new unsigned char[bitfieldLength_];
|
||||||
useBitfield_ = new unsigned char[bitfieldLength_];
|
useBitfield_ = new unsigned char[bitfieldLength_];
|
||||||
memset(bitfield_, 0, bitfieldLength_);
|
std::fill_n(bitfield_, bitfieldLength_, 0);
|
||||||
memset(useBitfield_, 0, bitfieldLength_);
|
std::fill_n(useBitfield_, bitfieldLength_, 0);
|
||||||
updateCache();
|
updateCache();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -85,11 +85,11 @@ BitfieldMan::BitfieldMan(const BitfieldMan& bitfieldMan)
|
||||||
blockLength_(bitfieldMan.blockLength_),
|
blockLength_(bitfieldMan.blockLength_),
|
||||||
filterEnabled_(bitfieldMan.filterEnabled_)
|
filterEnabled_(bitfieldMan.filterEnabled_)
|
||||||
{
|
{
|
||||||
memcpy(bitfield_, bitfieldMan.bitfield_, bitfieldLength_);
|
std::copy_n(bitfieldMan.bitfield_, bitfieldLength_, bitfield_);
|
||||||
memcpy(useBitfield_, bitfieldMan.useBitfield_, bitfieldLength_);
|
std::copy_n(bitfieldMan.useBitfield_, bitfieldLength_, useBitfield_);
|
||||||
if (filterEnabled_) {
|
if (filterEnabled_) {
|
||||||
filterBitfield_ = new unsigned char[bitfieldLength_];
|
filterBitfield_ = new unsigned char[bitfieldLength_];
|
||||||
memcpy(filterBitfield_, bitfieldMan.filterBitfield_, bitfieldLength_);
|
std::copy_n(bitfieldMan.filterBitfield_, bitfieldLength_, filterBitfield_);
|
||||||
}
|
}
|
||||||
updateCache();
|
updateCache();
|
||||||
}
|
}
|
||||||
|
@ -105,16 +105,17 @@ BitfieldMan& BitfieldMan::operator=(const BitfieldMan& bitfieldMan)
|
||||||
|
|
||||||
delete[] bitfield_;
|
delete[] bitfield_;
|
||||||
bitfield_ = new unsigned char[bitfieldLength_];
|
bitfield_ = new unsigned char[bitfieldLength_];
|
||||||
memcpy(bitfield_, bitfieldMan.bitfield_, bitfieldLength_);
|
std::copy_n(bitfieldMan.bitfield_, bitfieldLength_, bitfield_);
|
||||||
|
|
||||||
delete[] useBitfield_;
|
delete[] useBitfield_;
|
||||||
useBitfield_ = new unsigned char[bitfieldLength_];
|
useBitfield_ = new unsigned char[bitfieldLength_];
|
||||||
memcpy(useBitfield_, bitfieldMan.useBitfield_, bitfieldLength_);
|
std::copy_n(bitfieldMan.useBitfield_, bitfieldLength_, useBitfield_);
|
||||||
|
|
||||||
delete[] filterBitfield_;
|
delete[] filterBitfield_;
|
||||||
if (filterEnabled_) {
|
if (filterEnabled_) {
|
||||||
filterBitfield_ = new unsigned char[bitfieldLength_];
|
filterBitfield_ = new unsigned char[bitfieldLength_];
|
||||||
memcpy(filterBitfield_, bitfieldMan.filterBitfield_, bitfieldLength_);
|
std::copy_n(bitfieldMan.filterBitfield_, bitfieldLength_,
|
||||||
|
filterBitfield_);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
filterBitfield_ = nullptr;
|
filterBitfield_ = nullptr;
|
||||||
|
@ -662,17 +663,17 @@ bool BitfieldMan::isUseBitSet(size_t index) const
|
||||||
void BitfieldMan::setBitfield(const unsigned char* bitfield,
|
void BitfieldMan::setBitfield(const unsigned char* bitfield,
|
||||||
size_t bitfieldLength)
|
size_t bitfieldLength)
|
||||||
{
|
{
|
||||||
if (bitfieldLength_ != bitfieldLength) {
|
if (bitfieldLength_ == 0 || bitfieldLength_ != bitfieldLength) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
memcpy(bitfield_, bitfield, bitfieldLength_);
|
std::copy_n(bitfield, bitfieldLength_, bitfield_);
|
||||||
memset(useBitfield_, 0, bitfieldLength_);
|
std::fill_n(useBitfield_, bitfieldLength_, 0);
|
||||||
updateCache();
|
updateCache();
|
||||||
}
|
}
|
||||||
|
|
||||||
void BitfieldMan::clearAllBit()
|
void BitfieldMan::clearAllBit()
|
||||||
{
|
{
|
||||||
memset(bitfield_, 0, bitfieldLength_);
|
std::fill_n(bitfield_, bitfieldLength_, 0);
|
||||||
updateCache();
|
updateCache();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -686,7 +687,7 @@ void BitfieldMan::setAllBit()
|
||||||
|
|
||||||
void BitfieldMan::clearAllUseBit()
|
void BitfieldMan::clearAllUseBit()
|
||||||
{
|
{
|
||||||
memset(useBitfield_, 0, bitfieldLength_);
|
std::fill_n(useBitfield_, bitfieldLength_, 0);
|
||||||
updateCache();
|
updateCache();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -706,7 +707,7 @@ void BitfieldMan::ensureFilterBitfield()
|
||||||
{
|
{
|
||||||
if (!filterBitfield_) {
|
if (!filterBitfield_) {
|
||||||
filterBitfield_ = new unsigned char[bitfieldLength_];
|
filterBitfield_ = new unsigned char[bitfieldLength_];
|
||||||
memset(filterBitfield_, 0, bitfieldLength_);
|
std::fill_n(filterBitfield_, bitfieldLength_, 0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -39,8 +39,7 @@
|
||||||
|
|
||||||
namespace aria2 {
|
namespace aria2 {
|
||||||
|
|
||||||
class BtChokingEvent {
|
class BtChokingEvent {};
|
||||||
};
|
|
||||||
|
|
||||||
} // namespace aria2
|
} // namespace aria2
|
||||||
|
|
||||||
|
|
|
@ -72,8 +72,8 @@ void BtLeecherStateChoke::PeerEntry::swap(PeerEntry& c)
|
||||||
swap(regularUnchoker_, c.regularUnchoker_);
|
swap(regularUnchoker_, c.regularUnchoker_);
|
||||||
}
|
}
|
||||||
|
|
||||||
BtLeecherStateChoke::PeerEntry& BtLeecherStateChoke::PeerEntry::
|
BtLeecherStateChoke::PeerEntry&
|
||||||
operator=(const PeerEntry& c)
|
BtLeecherStateChoke::PeerEntry::operator=(const PeerEntry& c)
|
||||||
{
|
{
|
||||||
if (this != &c) {
|
if (this != &c) {
|
||||||
peer_ = c.peer_;
|
peer_ = c.peer_;
|
||||||
|
@ -130,8 +130,8 @@ void swap(BtLeecherStateChoke::PeerEntry& a, BtLeecherStateChoke::PeerEntry& b)
|
||||||
a.swap(b);
|
a.swap(b);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool BtLeecherStateChoke::PeerFilter::
|
bool BtLeecherStateChoke::PeerFilter::operator()(
|
||||||
operator()(const PeerEntry& peerEntry) const
|
const PeerEntry& peerEntry) const
|
||||||
{
|
{
|
||||||
return peerEntry.getPeer()->amChoking() == amChoking_ &&
|
return peerEntry.getPeer()->amChoking() == amChoking_ &&
|
||||||
peerEntry.getPeer()->peerInterested() == peerInterested_;
|
peerEntry.getPeer()->peerInterested() == peerInterested_;
|
||||||
|
|
|
@ -79,8 +79,8 @@ void BtSeederStateChoke::PeerEntry::swap(PeerEntry& c)
|
||||||
swap(uploadSpeed_, c.uploadSpeed_);
|
swap(uploadSpeed_, c.uploadSpeed_);
|
||||||
}
|
}
|
||||||
|
|
||||||
BtSeederStateChoke::PeerEntry& BtSeederStateChoke::PeerEntry::
|
BtSeederStateChoke::PeerEntry&
|
||||||
operator=(const PeerEntry& c)
|
BtSeederStateChoke::PeerEntry::operator=(const PeerEntry& c)
|
||||||
{
|
{
|
||||||
if (this != &c) {
|
if (this != &c) {
|
||||||
peer_ = c.peer_;
|
peer_ = c.peer_;
|
||||||
|
|
|
@ -86,7 +86,9 @@ int BufferedFile::onClose()
|
||||||
#else // __MINGW32__
|
#else // __MINGW32__
|
||||||
_commit(fileno(fp_));
|
_commit(fileno(fp_));
|
||||||
#endif // __MINGW32__
|
#endif // __MINGW32__
|
||||||
rv = fclose(fp_);
|
if (fp_ != stdin && fp_ != stderr) {
|
||||||
|
rv = fclose(fp_);
|
||||||
|
}
|
||||||
fp_ = nullptr;
|
fp_ = nullptr;
|
||||||
}
|
}
|
||||||
return rv;
|
return rv;
|
||||||
|
|
|
@ -49,7 +49,7 @@ private:
|
||||||
void clear();
|
void clear();
|
||||||
|
|
||||||
public:
|
public:
|
||||||
ByteArrayDiskWriter(size_t maxLength = 5_m);
|
ByteArrayDiskWriter(size_t maxLength = 15_m);
|
||||||
virtual ~ByteArrayDiskWriter();
|
virtual ~ByteArrayDiskWriter();
|
||||||
|
|
||||||
virtual void initAndOpenFile(int64_t totalLength = 0) CXX11_OVERRIDE;
|
virtual void initAndOpenFile(int64_t totalLength = 0) CXX11_OVERRIDE;
|
||||||
|
|
|
@ -45,7 +45,7 @@
|
||||||
|
|
||||||
namespace aria2 {
|
namespace aria2 {
|
||||||
|
|
||||||
class SizeFormatter : public std::unary_function<int64_t, std::string> {
|
class SizeFormatter {
|
||||||
protected:
|
protected:
|
||||||
virtual std::string format(int64_t size) const = 0;
|
virtual std::string format(int64_t size) const = 0;
|
||||||
|
|
||||||
|
|
|
@ -270,23 +270,23 @@ Context::Context(bool standalone, int argc, char** argv, const KeyVals& options)
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
#endif // ENABLE_METALINK
|
#endif // ENABLE_METALINK
|
||||||
if (!op->blank(PREF_INPUT_FILE)) {
|
if (!op->blank(PREF_INPUT_FILE)) {
|
||||||
if (op->getAsBool(PREF_DEFERRED_INPUT)) {
|
if (op->getAsBool(PREF_DEFERRED_INPUT)) {
|
||||||
uriListParser = openUriListParser(op->get(PREF_INPUT_FILE));
|
uriListParser = openUriListParser(op->get(PREF_INPUT_FILE));
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
createRequestGroupForUriList(requestGroups, op);
|
||||||
|
}
|
||||||
|
#if defined(ENABLE_BITTORRENT) || defined(ENABLE_METALINK)
|
||||||
|
}
|
||||||
|
else if (op->get(PREF_SHOW_FILES) == A2_V_TRUE) {
|
||||||
|
showFiles(args, op);
|
||||||
|
return;
|
||||||
|
#endif // ENABLE_METALINK || ENABLE_METALINK
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
createRequestGroupForUriList(requestGroups, op);
|
createRequestGroupForUri(requestGroups, op, args, false, false, true);
|
||||||
}
|
}
|
||||||
#if defined(ENABLE_BITTORRENT) || defined(ENABLE_METALINK)
|
|
||||||
}
|
|
||||||
else if (op->get(PREF_SHOW_FILES) == A2_V_TRUE) {
|
|
||||||
showFiles(args, op);
|
|
||||||
return;
|
|
||||||
#endif // ENABLE_METALINK || ENABLE_METALINK
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
createRequestGroupForUri(requestGroups, op, args, false, false, true);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Remove option values which is only valid for URIs specified in
|
// Remove option values which is only valid for URIs specified in
|
||||||
// command-line. If they are left, because op is used as a template
|
// command-line. If they are left, because op is used as a template
|
||||||
|
|
|
@ -352,7 +352,7 @@ public:
|
||||||
} // namespace
|
} // namespace
|
||||||
|
|
||||||
namespace {
|
namespace {
|
||||||
class OrderByPathDepthDesc : public std::binary_function<Cookie, Cookie, bool> {
|
class OrderByPathDepthDesc {
|
||||||
public:
|
public:
|
||||||
bool operator()(const CookiePathDivider& lhs,
|
bool operator()(const CookiePathDivider& lhs,
|
||||||
const CookiePathDivider& rhs) const
|
const CookiePathDivider& rhs) const
|
||||||
|
|
|
@ -57,9 +57,9 @@ DHTPeerAnnounceStorage::DHTPeerAnnounceStorage()
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
bool DHTPeerAnnounceStorage::InfoHashLess::
|
bool DHTPeerAnnounceStorage::InfoHashLess::operator()(
|
||||||
operator()(const std::shared_ptr<DHTPeerAnnounceEntry>& lhs,
|
const std::shared_ptr<DHTPeerAnnounceEntry>& lhs,
|
||||||
const std::shared_ptr<DHTPeerAnnounceEntry>& rhs) const
|
const std::shared_ptr<DHTPeerAnnounceEntry>& rhs) const
|
||||||
{
|
{
|
||||||
return memcmp(lhs->getInfoHash(), rhs->getInfoHash(), DHT_ID_LENGTH) < 0;
|
return memcmp(lhs->getInfoHash(), rhs->getInfoHash(), DHT_ID_LENGTH) < 0;
|
||||||
}
|
}
|
||||||
|
|
|
@ -196,8 +196,8 @@ void DHTRoutingTableDeserializer::deserialize(const std::string& filename)
|
||||||
|
|
||||||
nodes.push_back(node);
|
nodes.push_back(node);
|
||||||
}
|
}
|
||||||
localNode_ = localNode;
|
localNode_ = std::move(localNode);
|
||||||
nodes_ = nodes;
|
nodes_ = std::move(nodes);
|
||||||
A2_LOG_INFO("DHT routing table was loaded successfully");
|
A2_LOG_INFO("DHT routing table was loaded successfully");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -52,7 +52,7 @@ public:
|
||||||
~DHTSetup();
|
~DHTSetup();
|
||||||
|
|
||||||
// Returns two vector of Commands. First one contains regular
|
// Returns two vector of Commands. First one contains regular
|
||||||
// commands. Secod one contains so called routine commands, which
|
// commands. Second one contains so called routine commands, which
|
||||||
// executed once per event poll returns.
|
// executed once per event poll returns.
|
||||||
std::pair<std::vector<std::unique_ptr<Command>>,
|
std::pair<std::vector<std::unique_ptr<Command>>,
|
||||||
std::vector<std::unique_ptr<Command>>>
|
std::vector<std::unique_ptr<Command>>>
|
||||||
|
|
|
@ -36,6 +36,7 @@
|
||||||
|
|
||||||
#include <cstring>
|
#include <cstring>
|
||||||
#include <cstdio>
|
#include <cstdio>
|
||||||
|
#include <array>
|
||||||
|
|
||||||
#include "PieceStorage.h"
|
#include "PieceStorage.h"
|
||||||
#include "Piece.h"
|
#include "Piece.h"
|
||||||
|
@ -56,6 +57,7 @@
|
||||||
#include "DownloadContext.h"
|
#include "DownloadContext.h"
|
||||||
#include "BufferedFile.h"
|
#include "BufferedFile.h"
|
||||||
#include "SHA1IOFile.h"
|
#include "SHA1IOFile.h"
|
||||||
|
#include "BtConstants.h"
|
||||||
#ifdef ENABLE_BITTORRENT
|
#ifdef ENABLE_BITTORRENT
|
||||||
# include "PeerStorage.h"
|
# include "PeerStorage.h"
|
||||||
# include "BtRuntime.h"
|
# include "BtRuntime.h"
|
||||||
|
@ -263,21 +265,21 @@ void DefaultBtProgressInfoFile::load()
|
||||||
if (version >= 1) {
|
if (version >= 1) {
|
||||||
infoHashLength = ntohl(infoHashLength);
|
infoHashLength = ntohl(infoHashLength);
|
||||||
}
|
}
|
||||||
if (infoHashLength == 0 && infoHashCheckEnabled) {
|
if (infoHashLength > INFO_HASH_LENGTH ||
|
||||||
|
(infoHashLength != INFO_HASH_LENGTH && infoHashCheckEnabled)) {
|
||||||
throw DL_ABORT_EX(fmt("Invalid info hash length: %d", infoHashLength));
|
throw DL_ABORT_EX(fmt("Invalid info hash length: %d", infoHashLength));
|
||||||
}
|
}
|
||||||
if (infoHashLength > 0) {
|
if (infoHashLength > 0) {
|
||||||
auto savedInfoHash = make_unique<unsigned char[]>((size_t)infoHashLength);
|
std::array<unsigned char, INFO_HASH_LENGTH> savedInfoHash;
|
||||||
READ_CHECK(fp, savedInfoHash.get(), infoHashLength);
|
READ_CHECK(fp, savedInfoHash.data(), infoHashLength);
|
||||||
#ifdef ENABLE_BITTORRENT
|
#ifdef ENABLE_BITTORRENT
|
||||||
if (infoHashCheckEnabled) {
|
if (infoHashCheckEnabled) {
|
||||||
const unsigned char* infoHash = bittorrent::getInfoHash(dctx_);
|
const unsigned char* infoHash = bittorrent::getInfoHash(dctx_);
|
||||||
if (infoHashLength != INFO_HASH_LENGTH ||
|
if (memcmp(savedInfoHash.data(), infoHash, INFO_HASH_LENGTH) != 0) {
|
||||||
memcmp(savedInfoHash.get(), infoHash, INFO_HASH_LENGTH) != 0) {
|
|
||||||
throw DL_ABORT_EX(
|
throw DL_ABORT_EX(
|
||||||
fmt("info hash mismatch. expected: %s, actual: %s",
|
fmt("info hash mismatch. expected: %s, actual: %s",
|
||||||
util::toHex(infoHash, INFO_HASH_LENGTH).c_str(),
|
util::toHex(infoHash, INFO_HASH_LENGTH).c_str(),
|
||||||
util::toHex(savedInfoHash.get(), infoHashLength).c_str()));
|
util::toHex(savedInfoHash.data(), infoHashLength).c_str()));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endif // ENABLE_BITTORRENT
|
#endif // ENABLE_BITTORRENT
|
||||||
|
@ -289,6 +291,10 @@ void DefaultBtProgressInfoFile::load()
|
||||||
pieceLength = ntohl(pieceLength);
|
pieceLength = ntohl(pieceLength);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (pieceLength == 0) {
|
||||||
|
throw DL_ABORT_EX("piece length must not be 0");
|
||||||
|
}
|
||||||
|
|
||||||
uint64_t totalLength;
|
uint64_t totalLength;
|
||||||
READ_CHECK(fp, &totalLength, sizeof(totalLength));
|
READ_CHECK(fp, &totalLength, sizeof(totalLength));
|
||||||
if (version >= 1) {
|
if (version >= 1) {
|
||||||
|
|
|
@ -115,7 +115,7 @@ public:
|
||||||
virtual void writeCache(const WrDiskCacheEntry* entry) = 0;
|
virtual void writeCache(const WrDiskCacheEntry* entry) = 0;
|
||||||
|
|
||||||
// Force physical write of data from OS buffer cache.
|
// Force physical write of data from OS buffer cache.
|
||||||
virtual void flushOSBuffers() {};
|
virtual void flushOSBuffers(){};
|
||||||
|
|
||||||
void setFileAllocationMethod(FileAllocationMethod method)
|
void setFileAllocationMethod(FileAllocationMethod method)
|
||||||
{
|
{
|
||||||
|
|
|
@ -62,7 +62,7 @@ public:
|
||||||
virtual void closeFile() = 0;
|
virtual void closeFile() = 0;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Opens a file. If the file doesnot exists, an exception may be
|
* Opens a file. If the file does not exist, an exception may be
|
||||||
* thrown.
|
* thrown.
|
||||||
*/
|
*/
|
||||||
virtual void openExistingFile(int64_t totalLength = 0) = 0;
|
virtual void openExistingFile(int64_t totalLength = 0) = 0;
|
||||||
|
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Add a link
Reference in a new issue