Compare commits

...

149 commits

Author SHA1 Message Date
Tatsuhiro Tsujikawa
b519ce04e3
Merge pull request #2229 from aria2/fix-typo
Fix typo
2024-06-30 21:47:36 +09:00
Tatsuhiro Tsujikawa
e2eb5f82e2
Merge pull request #2228 from aria2/fix-build-failure
Use ares_socket_t where appropriate
2024-06-30 21:40:13 +09:00
Tatsuhiro Tsujikawa
a6660c6c4b Fix typo 2024-06-30 21:24:45 +09:00
Tatsuhiro Tsujikawa
700ec654b2 Use ares_socket_t where appropriate 2024-06-30 21:22:52 +09:00
Tatsuhiro Tsujikawa
b63f67d040
Merge pull request #2225 from aria2/fix-cares-deprecation
c-ares: Avoid deprecated functions
2024-06-30 17:52:32 +09:00
Tatsuhiro Tsujikawa
bddce8063c
Merge pull request #2226 from aria2/fix-levenshtein-init
Fix levenshtein init
2024-06-30 17:47:48 +09:00
Tatsuhiro Tsujikawa
392f713ba1 c-ares: Avoid deprecated functions
Avoid deprecated functions by newer c-ares.  Now aria2 requires c-ares
>= 1.16.0 to get ares_getaddrinfo.
2024-06-30 17:32:02 +09:00
Tatsuhiro Tsujikawa
1a4cb1d070 Update levenshtein costs 2024-06-30 17:29:23 +09:00
Tatsuhiro Tsujikawa
cfa7e9cde0 Fix levenshtein initialization 2024-06-30 17:29:23 +09:00
Tatsuhiro Tsujikawa
1be304e90e
Merge pull request #2224 from aria2/bump-macos
Bump macos
2024-06-30 17:27:18 +09:00
Tatsuhiro Tsujikawa
c13821a103 Fix runtime error: left shift of negative value 2024-06-30 17:07:46 +09:00
Tatsuhiro Tsujikawa
e950640b4c Bump macos to macos-14 2024-06-30 16:18:40 +09:00
Tatsuhiro Tsujikawa
c78560f6d4
Merge pull request #2223 from aria2/dependabot/github_actions/docker/build-push-action-6
Bump docker/build-push-action from 5 to 6
2024-06-24 18:23:39 +09:00
dependabot[bot]
54795dfa34
Bump docker/build-push-action from 5 to 6
Bumps [docker/build-push-action](https://github.com/docker/build-push-action) from 5 to 6.
- [Release notes](https://github.com/docker/build-push-action/releases)
- [Commits](https://github.com/docker/build-push-action/compare/v5...v6)

---
updated-dependencies:
- dependency-name: docker/build-push-action
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-06-24 06:37:27 +00:00
Tatsuhiro Tsujikawa
999a5915b2
Merge pull request #2221 from aria2/dependabot/github_actions/actions/checkout-4
Bump actions/checkout from 3 to 4
2024-06-10 20:21:53 +09:00
dependabot[bot]
a860673c26
Bump actions/checkout from 3 to 4
Bumps [actions/checkout](https://github.com/actions/checkout) from 3 to 4.
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](https://github.com/actions/checkout/compare/v3...v4)

---
updated-dependencies:
- dependency-name: actions/checkout
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-06-10 10:13:52 +00:00
Tatsuhiro Tsujikawa
3e903cda97
Merge pull request #2219 from aria2/dependabot
Let dependabot update GitHub Actions
2024-06-10 19:13:06 +09:00
Tatsuhiro Tsujikawa
300cb8f9d4
Merge pull request #2220 from aria2/update-c-ares-url
Update c-ares download URLs
2024-06-10 18:51:35 +09:00
Tatsuhiro Tsujikawa
468b8db61b Let dependabot update GitHub Actions 2024-06-10 17:53:53 +09:00
Tatsuhiro Tsujikawa
e872577704 Update c-ares download URLs 2024-06-10 17:45:55 +09:00
Tatsuhiro Tsujikawa
a8cb271b04
Merge pull request #2165 from aria2/bump-zlib
Bump zlib to 1.3.1
2024-01-24 21:20:55 +09:00
Tatsuhiro Tsujikawa
bd29175cdd Bump zlib to 1.3.1 2024-01-24 20:16:15 +09:00
Tatsuhiro Tsujikawa
4effc39e5a
Merge pull request #2166 from aria2/apt-get-update
ci: Run apt-get update
2024-01-24 20:15:45 +09:00
Tatsuhiro Tsujikawa
b0b6b14997 ci: Run apt-get update 2024-01-24 19:50:47 +09:00
Tatsuhiro Tsujikawa
218b817071
Merge pull request #2162 from luzpaz/typos
Fix various typos
2024-01-15 17:28:19 +09:00
luzpaz
0aa23a39d9 Fix various typos
Found via `codespell -q 3 -S "./deps,./ChangeLog.old,./LICENSE.OpenSSL,./doc/manual-src/pt,./doc/sphinx_themes/sphinx_rtd_theme/locale" -L ans,anull,clen,dependant,filetest,fo,hel,nd,orign,padd,parm,servent,tennant,worl,windows`
2024-01-14 16:22:28 +00:00
Tatsuhiro Tsujikawa
8a6b75acc7
Merge pull request #2160 from JanthonAlyn/patch-1
Update configure.ac to Fixed autoreconf warning
2024-01-07 16:23:48 +09:00
Janthon
8c4e138571
Update configure.ac
Fixed autoreconf warning.

configure.ac:731: warning: The 'AM_PROG_MKDIR_P' macro is deprecated, and its use is discouraged.
configure.ac:731: You should use the Autoconf-provided 'AC_PROG_MKDIR_P' macro instead,
configure.ac:731: and use '$(MKDIR_P)' instead of '$(mkdir_p)'in your Makefile.am files.
2024-01-07 10:43:30 +08:00
Tatsuhiro Tsujikawa
5c87f1b7b6 Fix makerelease 2023-11-15 21:09:36 +09:00
Tatsuhiro Tsujikawa
2e65308ca2 Dockerfile: Add missing python3-docutils 2023-11-15 21:08:57 +09:00
Tatsuhiro Tsujikawa
02f2d0d847 Update bash_completion 2023-11-15 18:46:08 +09:00
Tatsuhiro Tsujikawa
58d06624d2 Fix python scripts 2023-11-15 18:45:57 +09:00
Tatsuhiro Tsujikawa
35f1e326ec Update sphinx_rtd_theme 2023-11-15 18:19:21 +09:00
Tatsuhiro Tsujikawa
936d64d555 Bump package version 2023-11-15 18:16:49 +09:00
Tatsuhiro Tsujikawa
2973186e75 Update AUTHORS 2023-11-15 18:16:08 +09:00
Tatsuhiro Tsujikawa
40f45246f4 Update NEWS 2023-11-15 18:13:59 +09:00
Tatsuhiro Tsujikawa
0d0d606a85
Merge pull request #2135 from aria2/docker-mingw-revert-cares
Dockerfile.mingw: Downgrade c-ares to 1.19.1
2023-11-15 18:09:21 +09:00
Tatsuhiro Tsujikawa
ec899c30cf Dockerfile.mingw: Downgrade c-ares to 1.19.1
Downgrade c-ares to 1.19.1 in Dockerfile.mingw because it does not
build on x86_64 host.
2023-11-14 23:10:43 +09:00
Tatsuhiro Tsujikawa
706d9492f2
Merge pull request #2132 from aria2/docker-bump-cares
Dockerfile: Bump c-ares to 1.21.0
2023-11-12 21:29:34 +09:00
Tatsuhiro Tsujikawa
89551e7153 Dockerfile: Bump c-ares to 1.21.0 2023-11-12 21:02:23 +09:00
Tatsuhiro Tsujikawa
08b48dccb6 Merge branch 'pr1802'
This resolves conflicts on https://github.com/aria2/aria2/pull/1802
and does fixups.
2023-11-05 10:58:40 +09:00
a1346054
8cfaceaf43 Trim excess whitespace 2023-11-05 10:33:13 +09:00
a1346054
a6cd75a596 Fix spelling 2023-11-05 10:33:13 +09:00
a1346054
aea080969c Fix shellcheck warnings 2023-11-05 10:33:13 +09:00
a1346054
bbef0f0492 Use license file from gnu.org
Downloaded from:
https://www.gnu.org/licenses/old-licenses/gpl-2.0.txt
2023-11-05 10:27:15 +09:00
Tatsuhiro Tsujikawa
aa03612397
Merge pull request #1982 from h3xx/update-docs
Various documenation fixes and rewords
2023-11-05 10:07:29 +09:00
Tatsuhiro Tsujikawa
71f5d1be5f
Merge pull request #2129 from aria2/fix-non-bt-build-error
Fix non bt build error
2023-11-03 12:12:48 +09:00
Tatsuhiro Tsujikawa
7a490fe497 ci: Check build without bittorrent 2023-11-03 11:45:41 +09:00
Tatsuhiro Tsujikawa
94725a0371 Fix build error without bittorrent
Amends #2127
2023-11-03 11:45:41 +09:00
Tatsuhiro Tsujikawa
d066c72a0d
Merge pull request #2127 from aria2/cap-infohashlen
Cap infoHashLength in .aria2 file
2023-11-02 22:20:58 +09:00
Tatsuhiro Tsujikawa
3330110caf Cap infoHashLength in .aria2 file
Cap infoHashLength in .aria2 file, and save an extra allocation.
2023-11-02 21:22:37 +09:00
Tatsuhiro Tsujikawa
d607327ea6 clang-format 2023-11-02 19:27:35 +09:00
Tatsuhiro Tsujikawa
df27e60385
Merge pull request #2126 from aria2/cpp-ext
Do not require strict C++ mode and update ax_cxx_compile_stdcxx.m4
2023-11-02 19:13:47 +09:00
Tatsuhiro Tsujikawa
1acfd13c35 Do not require strict C++ mode and update ax_cxx_compile_stdcxx.m4 2023-11-02 18:43:23 +09:00
Tatsuhiro Tsujikawa
35a1b0ff1d
Merge pull request #2125 from aria2/bump-compiler
ci: Bump gcc and clang
2023-11-02 18:41:03 +09:00
Tatsuhiro Tsujikawa
be6d819488 ci: Bump gcc and clang 2023-11-02 17:24:22 +09:00
Tatsuhiro Tsujikawa
076dea3896
Merge pull request #2117 from egorenar/fix-formatr-string-overflow-in-logger-writeheader
Logger: Fix format string overflow in writeHeader()
2023-10-09 17:28:41 +09:00
Alexander Egorenkov
8718757e6c Logger: Fix format string overflow in writeHeader()
This problem occurred on a 32-bit ARM OpenWRT router running Linux 6.1.
The method writeHeader() assumes that the size of struct timeval is 8 bytes
which is not true on this machine, it is 16 bytes large. Therefore, first
cast tv.tv_usec to the unsigned long type.

=========
GDB trace
=========

 (gdb) c
 Continuing.

 Program received signal SIGSEGV, Segmentation fault.
 0xb6f4f9b4 in memchr (src=src@entry=0x3b6a, c=c@entry=0x0, n=n@entry=0x7fffffff) at src/string/memchr.c:16
 16              for (; ((uintptr_t)s & ALIGN) && n && *s != c; s++, n--);
    0xb6f4f98c <memchr+12>:      00 00 52 e3     cmp     r2, #0
    0xb6f4f990 <memchr+16>:      00 30 a0 e1     mov     r3, r0
    0xb6f4f994 <memchr+20>:      05 00 00 1a     bne     0xb6f4f9b0 <memchr+48>
    0xb6f4f998 <memchr+24>:      32 00 00 ea     b       0xb6f4fa68 <memchr+232>
    0xb6f4f99c <memchr+28>:      03 00 13 e3     tst     r3, #3
    0xb6f4f9a0 <memchr+32>:      01 20 42 e2     sub     r2, r2, #1
    0xb6f4f9a4 <memchr+36>:      36 00 00 0a     beq     0xb6f4fa84 <memchr+260>
    0xb6f4f9a8 <memchr+40>:      00 00 52 e3     cmp     r2, #0
    0xb6f4f9ac <memchr+44>:      2d 00 00 0a     beq     0xb6f4fa68 <memchr+232>
    0xb6f4f9b0 <memchr+48>:      03 00 a0 e1     mov     r0, r3
 => 0xb6f4f9b4 <memchr+52>:      01 c0 d3 e4     ldrb    r12, [r3], #1
    0xb6f4f9b8 <memchr+56>:      01 00 5c e1     cmp     r12, r1
    0xb6f4f9bc <memchr+60>:      f6 ff ff 1a     bne     0xb6f4f99c <memchr+28>
 (gdb) bt
 #0  0xb6f4f9b4 in memchr (src=src@entry=0x3b6a, c=c@entry=0x0, n=n@entry=0x7fffffff) at src/string/memchr.c:16
 #1  0xb6f512b4 in strnlen (s=s@entry=0x3b6a <error: Cannot access memory at address 0x3b6a>, n=n@entry=0x7fffffff) at src/string/strnlen.c:5
 #2  0xb6f19eb4 in printf_core (f=f@entry=0xb67d35b0, fmt=fmt@entry=0x101856 "%s.%06ld [%s] [%s:%d] ", ap=ap@entry=0xbe8f5a1c, nl_arg=nl_arg@entry=0xbe8f5a48, nl_type=<optimized out>, nl_type@entry=0xbe8f5a20) at
 src/stdio/vfprintf.c:599
 #3  0xb6f4b86c in vfprintf (f=0xb67d35b0, fmt=0x101856 "%s.%06ld [%s] [%s:%d] ", ap=...) at src/stdio/vfprintf.c:688
 #4  0x0001d92c in aria2::OutputFile::printf (this=<optimized out>, format=0x101856 "%s.%06ld [%s] [%s:%d] ") at OutputFile.h:58
 #5  0x00027910 in aria2::(anonymous namespace)::writeHeader<aria2::OutputFile> (lineNum=0xba, sourceFile=0x10d842 "HttpServer.cc", level=aria2::Logger::A2_INFO, fp=...) at Logger.cc:136
 #6  aria2::Logger::writeLog (this=0xb67cf78c, level=aria2::Logger::A2_INFO, sourceFile=0x10d842 "HttpServer.cc", lineNum=0xba, msg=0xb6766280 "HTTP Server received request\nPOST /jsonrpc HTTP/1.1\r\nHost: 192.168
 .1.1:6800\r\nUser-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:109.0) Gecko/20100101 Firefox/118.0\r\nAccept: application/json, text/plain, *"..., msg@entry=0x10d842 "HttpServer.cc", trace=trace@entry=0x124806 "") a
 t Logger.cc:196
 #7  0x00028bf0 in aria2::Logger::log (this=<optimized out>, level=<optimized out>, sourceFile=<optimized out>, lineNum=<optimized out>, msg=0xb6766280 "HTTP Server received request\nPOST /jsonrpc HTTP/1.1\r\nHost
 : 192.168.1.1:6800\r\nUser-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:109.0) Gecko/20100101 Firefox/118.0\r\nAccept: application/json, text/plain, *"...) at Logger.cc:213
 #8  0x00081708 in aria2::HttpServer::receiveRequest (this=0xb6774430) at /home/egorenar/Repositories/openwrt-rel/staging_dir/toolchain-arm_cortex-a15+neon-vfpv4_gcc-12.3.0_musl_eabi/arm-openwrt-linux-muslgnueabi/
 include/c++/12.3.0/bits/basic_string.h:233
 #9  aria2::HttpServerCommand::execute (this=0xb6772620) at HttpServerCommand.cc:194
 #10 0x00076de4 in aria2::(anonymous namespace)::executeCommand (commands=..., statusFilter=aria2::Command::STATUS_ALL) at DownloadEngine.cc:139
 #11 0x0001913c in aria2::DownloadEngine::run (oneshot=0x0, this=0xb67967e0) at DownloadEngine.cc:180
 #12 aria2::MultiUrlRequestInfo::execute (this=0xb67dee6c) at MultiUrlRequestInfo.cc:361
 #13 aria2::main (argv=<optimized out>, argc=<optimized out>) at main.cc:78
 #14 main (argc=<optimized out>, argv=<optimized out>) at main.cc:91

 (gdb) p tv
 $13 = {
   tv_sec = 0x652134fd,
   tv_usec = 0x3b6a
 }
 (gdb) call sizeof(tv)
 $14 = 0x10
 (gdb) call sizeof(tv.tv_usec)
 $15 = 0x8
 (gdb) call sizeof(long)
 $16 = 0x4
 (gdb) call sizeof(unsigned long)
 $17 = 0x4
 (gdb) call sizeof(time_t)
 $18 = 0x8

Signed-off-by: Alexander Egorenkov <egorenar-dev@posteo.net>
2023-10-07 14:29:01 +02:00
Tatsuhiro Tsujikawa
80d53a9e80
Merge pull request #2108 from aria2/memcpy
Avoid non-nil argument errors
2023-09-18 18:35:14 +09:00
Tatsuhiro Tsujikawa
d53735bf49
Merge pull request #2107 from aria2/dont-close-stderr-stdout
Do not close stdout and stderr
2023-09-18 18:17:19 +09:00
Tatsuhiro Tsujikawa
4fdcd22d69 Avoid non-nil argument errors
Use std::copy_n and std::fill_n to avoid a non-nil argument error with
memcpy/memset.
2023-09-18 17:29:48 +09:00
Tatsuhiro Tsujikawa
5047e4a4ab Do not close stdout and stderr 2023-09-18 17:28:47 +09:00
Tatsuhiro Tsujikawa
f05deb0cb2
Merge pull request #2106 from aria2/static-check-fix
Static check fix
2023-09-18 11:29:23 +09:00
Tatsuhiro Tsujikawa
4c250f8a5d Bail out if pieceLength is 0 2023-09-18 11:00:00 +09:00
Tatsuhiro Tsujikawa
1fd0e52c41 Call the member function of IOFile 2023-09-18 10:55:26 +09:00
Tatsuhiro Tsujikawa
c2109a5aca Move instead of copy 2023-09-18 10:22:22 +09:00
Tatsuhiro Tsujikawa
f0015d2175
Merge pull request #2105 from aria2/update-sphinx_rtd_theme
Update sphinx_rtd_theme
2023-09-18 01:10:22 +09:00
Tatsuhiro Tsujikawa
dfc607ae74
Merge pull request #2104 from aria2/docker-mingw-update-cp
Dockerfile.mingw: Update how to get aria2c.exe from a container
2023-09-18 01:09:57 +09:00
Tatsuhiro Tsujikawa
b18d47c60b
Merge pull request #2103 from aria2/docker-mingw-update-libssh2-flags
Dockerfile.mingw: Remove deprecated libssh2 configure flags
2023-09-18 01:09:30 +09:00
Tatsuhiro Tsujikawa
274e5048cb Update sphinx_rtd_theme 2023-09-17 21:32:27 +09:00
Tatsuhiro Tsujikawa
376a07df00 Dockerfile.mingw: Update how to get aria2c.exe from a container 2023-09-17 21:28:42 +09:00
Tatsuhiro Tsujikawa
e2209a8ae1
Merge pull request #2102 from aria2/docker-android-add-dpkg-dev
Dockerfile.android: Add dpkg-dev for dpkg-architecture
2023-09-17 21:26:28 +09:00
Tatsuhiro Tsujikawa
4352a31e6b Dockerfile.mingw: Remove deprecated libssh2 configure flags 2023-09-17 21:25:11 +09:00
Tatsuhiro Tsujikawa
506aac6b4e
Merge pull request #2101 from aria2/docker-mingw-parallel-build
Dockerfile.mingw: Parallel build
2023-09-17 21:24:24 +09:00
Tatsuhiro Tsujikawa
6b50ff403c Dockerfile.android: Add dpkg-dev for dpkg-architecture 2023-09-17 20:49:31 +09:00
Tatsuhiro Tsujikawa
8907b8355c Dockerfile.mingw: Parallel build 2023-09-17 20:48:19 +09:00
Tatsuhiro Tsujikawa
06e3fdbd48
Merge pull request #2100 from aria2/release-with-docker
Make releases with docker
2023-09-17 20:46:56 +09:00
Tatsuhiro Tsujikawa
85142435c6 Make releases with docker
This is slightly different from the current procedure because now
android and mingw binaries are built from source code fetched from the
remote repository.
2023-09-17 19:59:50 +09:00
Tatsuhiro Tsujikawa
80534d869f
Merge pull request #2099 from aria2/fix-overflow
Fix overflow
2023-09-16 20:00:42 +09:00
Tatsuhiro Tsujikawa
52469aba85 Fix overflow 2023-09-16 19:17:40 +09:00
Tatsuhiro Tsujikawa
2a809a99cd
Merge pull request #2098 from aria2/revert-ci-docker-mingw
Revert "ci: Build mingw image"
2023-09-16 19:14:47 +09:00
Tatsuhiro Tsujikawa
997efc88bb Revert "ci: Build mingw image"
This reverts commit a02ceeb646.
2023-09-16 18:42:23 +09:00
Tatsuhiro Tsujikawa
3a0057257c
Merge pull request #2097 from aria2/ci-docker-mingw
ci: Build mingw image
2023-09-16 18:29:27 +09:00
Tatsuhiro Tsujikawa
42b9893463
Merge pull request #2096 from aria2/ci-gnutls
ci: Build with gnutls
2023-09-16 18:29:12 +09:00
Tatsuhiro Tsujikawa
a02ceeb646 ci: Build mingw image 2023-09-16 18:06:11 +09:00
Tatsuhiro Tsujikawa
81244a16dd ci: Build with gnutls 2023-09-16 17:45:55 +09:00
Tatsuhiro Tsujikawa
dbbd1bfbf9
Merge pull request #2095 from aria2/fix-undefined
Fix test errors with ubsan
2023-09-16 17:45:35 +09:00
Tatsuhiro Tsujikawa
e5d9ad2f0b Fix test errors with ubsan 2023-09-16 17:22:33 +09:00
Tatsuhiro Tsujikawa
dfdbc22b23
Merge pull request #2094 from aria2/update-wslay
Update wslay
2023-09-16 17:18:00 +09:00
Tatsuhiro Tsujikawa
66048398e5 Update wslay 2023-09-16 16:53:03 +09:00
Tatsuhiro Tsujikawa
ef28a269ae
Merge pull request #2093 from aria2/remove-deprecated-unary-binary-fun
Remove deprecated std::unary_function and std::binary_function
2023-09-16 16:50:14 +09:00
Tatsuhiro Tsujikawa
8956c58d12 Remove deprecated std::unary_function and std::binary_function 2023-09-16 16:24:23 +09:00
Tatsuhiro Tsujikawa
ea6d4240d0
Merge pull request #2092 from aria2/dockerfile-android
Add Dockerfile.android
2023-09-16 16:23:58 +09:00
Tatsuhiro Tsujikawa
13ba7a297f Add Dockerfile.android 2023-09-16 15:52:33 +09:00
Tatsuhiro Tsujikawa
e5bc00d449
Merge pull request #1822 from FH0/master
android(ndk r23) has timegm
2023-09-16 15:40:34 +09:00
Tatsuhiro Tsujikawa
8ae5ce5df3
Merge pull request #2091 from aria2/crypto-lib-rand
Prefer random number generator from crypto libraries
2023-09-16 11:56:50 +09:00
Tatsuhiro Tsujikawa
fa2eb95a00 Prefer random number generator from crypto libraries 2023-09-16 11:37:01 +09:00
Tatsuhiro Tsujikawa
f7b9d0fdd4
Merge pull request #2089 from aria2/update-dockerfile-mingw
Update Dockerfile.mingw
2023-09-16 00:26:43 +09:00
Tatsuhiro Tsujikawa
5546d73322 Update Dockerfile.mingw 2023-09-15 22:17:03 +09:00
Tatsuhiro Tsujikawa
385ad3a04c
Merge pull request #2088 from aria2/fix-libssh2-static-link
Fix static link failure against libssh2
2023-09-15 22:00:36 +09:00
Tatsuhiro Tsujikawa
ae5e5fdf73 Fix static link failure against libssh2 2023-09-15 21:39:51 +09:00
Tatsuhiro Tsujikawa
13c893b34a
Merge pull request #1804 from nkh0472/patch-1
Minor grammar improvements
2023-09-15 19:10:44 +09:00
Tatsuhiro Tsujikawa
7e7f549ef1
Merge pull request #1893 from kelson42/increase-bytearraydiskwriter-max
Increase ByteArrayDiskWriter maximum size
2023-09-15 19:08:29 +09:00
Tatsuhiro Tsujikawa
b642ee8380
Merge pull request #2068 from yixinBC/patch-1
fix wrong `dht.dat` binary file structure in docs
2023-09-15 19:05:03 +09:00
yixinBC
a787a80495
fix typo 2023-06-20 20:30:44 +08:00
yixinBC
40cabe7519
fix wrong dht.dat binary file structure in docs 2023-06-20 20:28:08 +08:00
Dan Church
c7a3b6acb1
Fix grammar, rework layout of --stream-piece-selector section 2022-09-27 16:22:42 -05:00
Dan Church
54af7ad1c5
Fix misspelled word 2022-09-27 16:22:05 -05:00
Dan Church
5436b758b7
Re-word warning about undefined behavior 2022-09-27 15:23:46 -05:00
Dan Church
3567789325
Concise-ify note 2022-09-27 15:18:06 -05:00
Dan Church
e5cd195045
Change 'meta data' to 'metadata' 2022-09-27 15:15:14 -05:00
Tatsuhiro Tsujikawa
f4cbc7bb31
Merge pull request #1969 from himikof/patch-1
Fix Metalink4 parsing with foreign namespaces
2022-08-25 16:23:39 +09:00
Tatsuhiro Tsujikawa
8d5989db22
Merge pull request #1970 from himikof/patch-2
Fix undefined behavior/crash in GZipEncoder
2022-08-25 16:21:08 +09:00
Nikita Ofitserov
42038422f6
Fix undefined behavior/crash in GZipEncoder
When the output buffer is full, outbuf[produced] references past the buffer end, leading to UB and a possible assertion failure.
Fixes #1968, #1964
2022-08-24 17:28:04 +03:00
Nikita Ofitserov
15a96209cd
Fix Metalink4 parsing with foreign namespaces
Rename local checkNsUri helper function to make boolean conditions easily readable,
as the issue was not apparent with the old helper function name.
2022-08-23 20:27:39 +03:00
Tatsuhiro Tsujikawa
05f3c47988
Merge pull request #1943 from hmartinez82/FixBuild
Add missing <array> include to WinTLSSession.h
2022-08-19 21:22:19 +09:00
Hernan Martinez
182f4f9ca2 Add missing <array> 2022-06-23 00:00:25 -06:00
Tatsuhiro Tsujikawa
a433352b67 Move runs-on under strategy 2022-05-22 12:23:38 +09:00
Tatsuhiro Tsujikawa
190ce569e4
Merge pull request #1929 from aria2/bump-ubuntu
Bump workflow ubuntu
2022-05-22 12:19:37 +09:00
Tatsuhiro Tsujikawa
e0ef02d243 Bump workflow ubuntu 2022-05-22 11:33:13 +09:00
Tatsuhiro Tsujikawa
73cf6d110d
Merge pull request #1923 from aria2/bump-actions
Bump actions
2022-05-15 17:59:10 +09:00
Tatsuhiro Tsujikawa
d4b96e24ed
Merge pull request #1924 from aria2/fix-nproc
Deal with missing nproc on macos
2022-05-15 17:58:55 +09:00
Tatsuhiro Tsujikawa
31b773de54 Deal with missing nproc on macos 2022-05-15 17:32:52 +09:00
Tatsuhiro Tsujikawa
2c21331ab6 Bump macos 2022-05-15 17:20:46 +09:00
Tatsuhiro Tsujikawa
9e412c9dc6 Bump actions/checkout to v3 2022-05-15 17:20:17 +09:00
Tatsuhiro Tsujikawa
0065c179ca
Merge pull request #1907 from aria2/getentropy
Better entropy for getRandomBytes
2022-04-09 18:01:49 +09:00
Tatsuhiro Tsujikawa
ba3396f7bb Better entropy for getRandomBytes 2022-04-09 17:23:00 +09:00
Tatsuhiro Tsujikawa
851a74f53e Fix configure 2022-04-09 15:50:42 +09:00
Tatsuhiro Tsujikawa
893c096aa6 Update configure.ac 2022-04-09 15:47:11 +09:00
Tatsuhiro Tsujikawa
55f4bc139a nproc 2022-04-09 15:07:25 +09:00
Tatsuhiro Tsujikawa
998f203288
Merge pull request #1905 from aria2/bt-bencode-allow-empty-dict-name
Allow empty dist name in bencode which is needed for hybrid torrent
2022-04-08 23:29:13 +09:00
Tatsuhiro Tsujikawa
ba36a38a6c Allow empty dist name in bencode which is needed for hybrid torrent 2022-04-08 22:54:11 +09:00
Tatsuhiro Tsujikawa
37a7419fed
Merge pull request #1902 from ITriskTI/patch-1
Update aria2c.rst
2022-04-07 21:52:27 +09:00
ITriskTI
0dcd4e9f29 Update aria2c.rst 2022-04-07 13:22:35 +03:00
Tatsuhiro Tsujikawa
85733e5980 Merge branch 'Frefreak-master' 2022-04-03 18:59:24 +09:00
carsonzhu
839dd2caf7 add no-want-digest-header option 2022-04-03 18:58:56 +09:00
Tatsuhiro Tsujikawa
c651d563d0 Fix a failed test 2022-04-03 18:54:40 +09:00
Tatsuhiro Tsujikawa
d8c5f74c1c Run workflow on a pull request 2022-04-03 18:54:40 +09:00
Tatsuhiro Tsujikawa
aaf090d1a6
Merge pull request #1877 from h3xx/fix-doc-typo
Fix typo in documentation, --help text
2022-04-03 18:32:21 +09:00
Tatsuhiro Tsujikawa
fee8e41d85
Merge pull request #1824 from richardnias/fix-accept-encoding-docs
Fix header in --http-accept-gzip documentation
2022-04-03 18:31:38 +09:00
Emmanuel Engelhart
56d1e1146b
Increase ByteArrayDiskWriter maximum size 2022-03-05 19:15:48 +01:00
Dan Church
de99fc170e
Fix typo 2022-01-19 09:57:01 -06:00
Tatsuhiro Tsujikawa
c546fa492c clang-format-12 2021-10-30 19:04:29 +09:00
Tatsuhiro Tsujikawa
177939d6ac Cosmetic change 2021-10-30 19:03:53 +09:00
Tatsuhiro Tsujikawa
c197373db7 Simplify 2021-10-30 18:25:29 +09:00
Tatsuhiro Tsujikawa
869aae8264 Build with OpenSSL 3.0.0 2021-10-29 21:05:57 +09:00
Richard Nias
6c96589244 Fix header in --http-accept-gzip documentation 2021-09-17 10:17:39 +02:00
FH0
11fa3e9fe4
android(ndk r23) has timegm 2021-09-16 14:37:31 +08:00
nkh0472
b850338c44
Minor grammar improvements
Fix a typo 'Anroid' --> 'Android';
Minor grammar improvements.
2021-08-22 10:47:40 +08:00
166 changed files with 3047 additions and 1154 deletions

6
.github/dependabot.yml vendored Normal file
View file

@ -0,0 +1,6 @@
version: 2
updates:
- package-ecosystem: "github-actions"
directory: "/"
schedule:
interval: "weekly"

24
.github/workflows/android.yml vendored Normal file
View 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: .

View file

@ -1,23 +1,32 @@
name: build
on: push
on: [push, pull_request]
jobs:
build:
runs-on: ${{ matrix.os }}
strategy:
matrix:
os: [ubuntu-20.04, macos-10.15]
os: [ubuntu-22.04, macos-14]
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:
- uses: actions/checkout@v2
- uses: actions/checkout@v4
- name: Linux setup
if: runner.os == 'Linux'
run: |
sudo apt-get update
sudo apt-get install \
g++-8 \
g++-12 \
clang-15 \
autoconf \
automake \
autotools-dev \
@ -25,6 +34,7 @@ jobs:
libtool \
pkg-config \
libssl-dev \
libgnutls28-dev \
libc-ares-dev \
zlib1g-dev \
libsqlite3-dev \
@ -35,32 +45,58 @@ jobs:
run: |
brew install cppunit gettext openssl libssh2 c-ares sqlite3 \
autoconf automake pkg-config libtool
- name: Setup clang
if: matrix.compiler == 'clang'
- name: Setup clang (Linux)
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: |
echo 'CC=clang' >> $GITHUB_ENV
echo 'CXX=clang++' >> $GITHUB_ENV
- name: Setup gcc
- name: Setup gcc (Linux)
if: runner.os == 'Linux' && matrix.compiler == 'gcc'
run: |
echo 'CC=gcc-8' >> $GITHUB_ENV
echo 'CXX=g++-8' >> $GITHUB_ENV
echo 'CC=gcc-12' >> $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
run: |
autoreconf -i
- name: Configure autotools (Linux)
if: runner.os == 'Linux'
- name: Setup compiler flags
run: |
./configure \
CPPFLAGS="-fsanitize=address" LDFLAGS="-fsanitize=address"
asanflags="-fsanitize=address,undefined -fno-sanitize-recover=undefined"
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)
if: runner.os == 'macOS'
run: |
./configure \
--without-openssl --without-gnutls --with-appletls \
--disable-nls \
CPPFLAGS="-fsanitize=address" LDFLAGS="-fsanitize=address"
--disable-nls
- name: Build aria2
run: |
make
make check
make -j"$(nproc 2> /dev/null || sysctl -n hw.ncpu)" check

11
AUTHORS
View file

@ -8,6 +8,7 @@ The aria2 contributor's list extracted from commit logs [1]:
103yiran
Alexander Amanuel
Alexander Egorenkov
Ali MJ Al-Nasrawy
Anthony Bryan
Artur Petrov
@ -15,10 +16,14 @@ Athmane Madjoudj
Ben Chaney
Char
Cristian Rodríguez
Dan Church
Dan Fandrich
David Macek
Emmanuel Engelhart
FH0
Florian Gamböck
Fredrik Fornwall
Hernan Martinez
ITriskTI
Igor Khomyakov
Jarda Snajdr
@ -30,9 +35,11 @@ Michał Górny
Michał Leśniewski
Mingye Wang
Natanael Copa
Nikita Ofitserov
Nils Maier
ORiON-
ReadmeCritic
Richard Nias
Rosen Penev
Ross Smith II
Ryan Steinmetz
@ -46,8 +53,10 @@ Torbjörn Lönnemark
Tse Kit Yam
Vasilij Schneidermann
Zoltan Toth-Czifra
a1346054
amtlib-dot-dll
c3mb0
carsonzhu
diadistis
eric1932
geetam
@ -59,11 +68,13 @@ luokar
mozillazg
multisnow
nicolov
nkh0472
oliviercommelarbre
qweaszxcdf
rotor
sleepymac
suzker
tcely
yixinBC
[1] https://gist.github.com/tatsuhiro-t/deaffeb064652104ad11

41
COPYING
View file

@ -1,12 +1,12 @@
GNU GENERAL PUBLIC LICENSE
Version 2, June 1991
GNU GENERAL PUBLIC LICENSE
Version 2, June 1991
Copyright (C) 1989, 1991 Free Software Foundation, Inc.
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
Copyright (C) 1989, 1991 Free Software Foundation, Inc.,
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
Preamble
Preamble
The licenses for most software are designed to take away your
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
Foundation's software and to any other program whose authors commit to
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.
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
modification follow.
GNU GENERAL PUBLIC LICENSE
GNU GENERAL PUBLIC LICENSE
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
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
does not normally print such an announcement, your work based on
the Program is not required to print an announcement.)
These requirements apply to the modified work as a whole. If
identifiable sections of that work are not derived from the Program,
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
distribution of the source code, even though third parties are not
compelled to copy the source along with the object code.
4. You may not copy, modify, sublicense, or distribute the Program
except as expressly provided under this License. Any attempt
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
be a consequence of the rest of this License.
8. If the distribution and/or use of the Program is restricted in
certain countries either by patents or by copyrighted interfaces, the
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 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
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
POSSIBILITY OF SUCH DAMAGES.
END OF TERMS AND CONDITIONS
How to Apply These Terms to Your New Programs
END OF TERMS AND CONDITIONS
How to Apply These Terms to Your New Programs
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
@ -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
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
You should have received a copy of the GNU General Public License along
with this program; if not, write to the Free Software Foundation, Inc.,
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
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
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'.
This is free software, and you are welcome to redistribute it
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
proprietary programs. If your program is a subroutine library, you may
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.

148
Dockerfile.android Normal file
View 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

View file

@ -7,16 +7,14 @@
# /aria2/src/aria2c.exe. You can copy the binary using following
# commands:
#
# $ id=$(sudo docker create aria2-mingw)
# $ sudo docker cp $id:/aria2/src/aria2c.exe <dest>
# $ sudo docker rm -v $id
# $ sudo docker run --rm -it -v /path/to/dest:/out aria2-mingw cp /aria2/src/aria2c.exe /out
FROM ubuntu:20.04
FROM ubuntu:22.04
MAINTAINER Tatsuhiro Tsujikawa
# 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
# downloads.
@ -28,18 +26,18 @@ RUN apt-get update && \
make binutils autoconf automake autotools-dev libtool \
patch ca-certificates \
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 && \
curl -L -O https://github.com/libexpat/libexpat/releases/download/R_2_4_1/expat-2.4.1.tar.bz2 && \
curl -L -O https://www.sqlite.org/2021/sqlite-autoconf-3360000.tar.gz && \
curl -L -O http://zlib.net/zlib-1.2.11.tar.gz && \
curl -L -O https://c-ares.haxx.se/download/c-ares-1.17.2.tar.gz && \
curl -L -O https://www.libssh2.org/download/libssh2-1.9.0.tar.gz && \
curl -L -O https://github.com/libssh2/libssh2/commit/ba149e804ef653cc05ed9803dfc94519ce9328f7.patch
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_5_0/expat-2.5.0.tar.bz2 && \
curl -L -O https://www.sqlite.org/2023/sqlite-autoconf-3430100.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://github.com/c-ares/c-ares/releases/download/cares-1_19_1/c-ares-1.19.1.tar.gz && \
curl -L -O https://libssh2.org/download/libssh2-1.11.0.tar.bz2
RUN tar xf gmp-6.2.1.tar.lz && \
cd gmp-6.2.1 && \
RUN tar xf gmp-6.3.0.tar.xz && \
cd gmp-6.3.0 && \
./configure \
--disable-shared \
--enable-static \
@ -48,30 +46,30 @@ RUN tar xf gmp-6.2.1.tar.lz && \
--disable-cxx \
--enable-fat \
CFLAGS="-mtune=generic -O2 -g0" && \
make install
make -j$(nproc) install
RUN tar xf expat-2.4.1.tar.bz2 && \
cd expat-2.4.1 && \
RUN tar xf expat-2.5.0.tar.bz2 && \
cd expat-2.5.0 && \
./configure \
--disable-shared \
--enable-static \
--prefix=/usr/local/$HOST \
--host=$HOST \
--build=`dpkg-architecture -qDEB_BUILD_GNU_TYPE` && \
make install
make -j$(nproc) install
RUN tar xf sqlite-autoconf-3360000.tar.gz && \
cd sqlite-autoconf-3360000 && \
RUN tar xf sqlite-autoconf-3430100.tar.gz && \
cd sqlite-autoconf-3430100 && \
./configure \
--disable-shared \
--enable-static \
--prefix=/usr/local/$HOST \
--host=$HOST \
--build=`dpkg-architecture -qDEB_BUILD_GNU_TYPE` && \
make install
make -j$(nproc) install
RUN tar xf zlib-1.2.11.tar.gz && \
cd zlib-1.2.11 && \
RUN tar xf zlib-1.3.1.tar.gz && \
cd zlib-1.3.1 && \
CC=$HOST-gcc \
AR=$HOST-ar \
LD=$HOST-ld \
@ -82,10 +80,10 @@ RUN tar xf zlib-1.2.11.tar.gz && \
--libdir=/usr/local/$HOST/lib \
--includedir=/usr/local/$HOST/include \
--static && \
make install
make -j$(nproc) install
RUN tar xf c-ares-1.17.2.tar.gz && \
cd c-ares-1.17.2 && \
RUN tar xf c-ares-1.19.1.tar.gz && \
cd c-ares-1.19.1 && \
./configure \
--disable-shared \
--enable-static \
@ -94,22 +92,23 @@ RUN tar xf c-ares-1.17.2.tar.gz && \
--host=$HOST \
--build=`dpkg-architecture -qDEB_BUILD_GNU_TYPE` \
LIBS="-lws2_32" && \
make install
make -j$(nproc) install
RUN tar xf libssh2-1.9.0.tar.gz && \
cd libssh2-1.9.0 && \
patch -p1 < ../ba149e804ef653cc05ed9803dfc94519ce9328f7.patch && \
RUN tar xf libssh2-1.11.0.tar.bz2 && \
cd libssh2-1.11.0 && \
./configure \
--disable-shared \
--enable-static \
--prefix=/usr/local/$HOST \
--host=$HOST \
--build=`dpkg-architecture -qDEB_BUILD_GNU_TYPE` \
--without-openssl \
--with-wincng \
LIBS="-lws2_32" && \
make install
ADD https://api.github.com/repos/aria2/aria2/git/refs/heads/master version.json
RUN git clone https://github.com/aria2/aria2 && \
cd aria2 && autoreconf -i && ./mingw-config && make && \
make -j$(nproc) install
ARG ARIA2_VERSION=master
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

37
NEWS
View file

@ -1,40 +1,7 @@
aria2 1.36.0
aria2 1.37.0
============
Release Note
------------
This release fixes several bugs. See Changes for details.
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
See https://github.com/aria2/aria2/releases/tag/release-1.37.0

View file

@ -44,7 +44,7 @@ The following libraries were statically linked.
* openssl 1.1.1k
* expat 2.4.1
* zlib 1.2.11
* zlib 1.3.1
* c-ares 1.17.2
* libssh2 1.9.0

View file

@ -3,22 +3,17 @@ aria2 Windows build
aria2 Windows build is provided in 2 flavors: 32bit version and 64bit
version. The executable was compiled using mingw-w64 cross compiler on
Debian 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
Ubuntu Linux.
The executable is statically linked, so no extra DLLs are
necessary. The linked libraries are:
* gmp 6.2.1
* expat 2.4.1
* sqlite 3.36.0
* zlib 1.2.11
* c-ares 1.17.2
* libssh2 1.9.0 (+ https://github.com/libssh2/libssh2/commit/ba149e804ef653cc05ed9803dfc94519ce9328f7.patch)
* gmp 6.3.0
* expat 2.5.0
* sqlite 3.43.1
* zlib 1.3.1
* c-ares 1.19.1
* libssh2 1.11.0
This build has the following difference from the original release:

View file

@ -20,7 +20,7 @@ chunks of data while downloading a file like BitTorrent.
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/ru/html/>`_, `Portuguese
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
* Client certificate authentication in HTTPS
* 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
(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,
Multi-Tracker, UDP tracker
* 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.
* BitTorrent Local Peer Discovery
* Rename/change the directory structure of BitTorrent downloads
@ -80,17 +80,17 @@ Here is a list of features:
Versioning and release schedule
-------------------------------
We use 3 numbers for aria2 version: MAJOR.MINOR.PATCH. We will ship
MINOR update on 15th of every month. We may skip a release if we have
no changes since the last release. The feature and documentation
freeze happens 10 days before the release day (5th day of the month)
We use 3 numbers for the aria2 version: MAJOR.MINOR.PATCH. We will ship
MINOR updates on the 15th of every month. We may skip a release if we have
had no changes since the last release. The feature and documentation
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
release around that day.
We may release PATCH releases between regular releases if we have
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
----------------------
@ -98,11 +98,11 @@ How to get source code
We maintain the source code at Github:
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
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.
Dependency
@ -134,8 +134,8 @@ JSON-RPC over WebSocket libnettle or libgcrypt or OpenSSL
.. note::
On Apple OSX the OS-level SSL/TLS support will be preferred. Hence
neither GnuTLS nor OpenSSL are required on that platform. If you'd
On Apple OSX, OS-level SSL/TLS support will be preferred. Hence
neither GnuTLS nor OpenSSL is required on that platform. If you'd
like to disable this behavior, run configure with
``--without-appletls``.
@ -143,15 +143,15 @@ JSON-RPC over WebSocket libnettle or libgcrypt or OpenSSL
If you prefer OpenSSL, run configure with ``--without-gnutls``
``--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
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
with ``--without-wintls``.
.. 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``.
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
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
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
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/
How to build
------------
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
standard. The current source code requires C++11 aware compiler. For
aria2 is primarily written in C++. Initially, it was written based on
C++98/C++03 standard features. We are now migrating aria2 to the C++11
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
``-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
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,
libgcrypt-devel, libxml2-devel, openssl-devel, gettext-devel, cppunit
If you downloaded source code from git repository, you have to install
following packages to get autoconf macros:
If you downloaded source code from a git repository, you have to install
the following packages to get autoconf macros:
* libxml2-dev
* libcppunit-dev
@ -234,17 +234,17 @@ following packages to get autoconf macros:
* autopoint
* 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::
$ 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
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
@ -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
library is properly configured to locate the system-wide CA
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
file is '/etc/ssl/certs/ca-certificates.crt' (in ca-certificates
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
accessing HTTPS servers because the certificate cannot be verified
without CA bundle. In such case, you can specify the CA bundle file
using aria2's ``--ca-certificate`` option. If you don't have CA bundle
file installed, then the last resort is disable the certificate
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 the CA bundle
file installed, then the last resort is to disable the certificate
validation using ``--check-certificate=false``.
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``
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::
@ -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
aria2.
The easiest way to build Windows binary is use Dockerfile.mingw. See
Dockerfile.mingw how to build binary. If you cannot use Dockerfile,
then continue to read following paragraphs.
The easiest way to build Windows binary is using Dockerfile.mingw. See
Dockerfile.mingw how to build a binary. If you cannot use Dockerfile,
then continue to read the following paragraphs.
Basically, after compiling and installing depended libraries, you can
do cross-compile just passing appropriate ``--host`` option and
specifying ``CPPFLAGS``, ``LDFLAGS`` and ``PKG_CONFIG_LIBDIR``
variables to configure. For convenience and lowering our own
development cost, we provide easier way to configure the build
specifying ``CPPFLAGS``, ``LDFLAGS``, and ``PKG_CONFIG_LIBDIR``
variables to configure. For convenience and to lower our own
development cost, we provide an easier way to configure the build
settings.
``mingw-config`` script is a configure script wrapper for mingw-w64.
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
* expat
@ -335,7 +335,7 @@ Some environment variables can be adjusted to change build settings:
``HOST``
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``.
``PREFIX``
@ -345,7 +345,7 @@ Some environment variables can be adjusted to change build settings:
``LDFLAGS``. ``$PREFIX/lib/pkgconfig`` will be set to
``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
@ -363,7 +363,7 @@ At the time of this writing, Android NDK r21e should compile aria2
without errors.
``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:
* c-ares
@ -380,7 +380,7 @@ libraries statically.
environment variables are defined.
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/``.
All the dependent libraries must be installed under
@ -391,10 +391,10 @@ After ``android-config``, run ``make`` to compile sources.
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
they are not up-to-date. You can also build HTML version of aria2 man
page by ``make html``. The HTML version manual is also available at
they are not up-to-date. You can also build an HTML version of the aria2
man page by ``make html``. The HTML version manual is also available
`online <https://aria2.github.io/manual/en/html/>`_ (`Russian
translation <https://aria2.github.io/manual/ru/html/>`_, `Portuguese
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:
single-file mode
If "name" key is present in .torrent file, file name is the value
of "name" key. Otherwise, file name is the base name of .torrent
If "name" key is present in .torrent file, the file name is the value
of "name" key. Otherwise, the file name is the base name of .torrent
file appended by ".file". For example, .torrent file is
"test.torrent", then file name is "test.torrent.file". The
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
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
``--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
routing table for IPv6 DHT is saved to
``$XDG_CACHE_HOME/aria2/dht6.dat`` unless files exist at
``$HOME/.aria2/dht.dat`` or ``$HOME/.aria2/dht6.dat``. aria2 uses same
port number to listen on for both IPv4 and IPv6 DHT.
``$HOME/.aria2/dht.dat`` or ``$HOME/.aria2/dht6.dat``. aria2 uses the
same port number to listen on for both IPv4 and IPv6 DHT.
UDP tracker
~~~~~~~~~~~
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.
Other things should be noted
@ -453,9 +453,9 @@ Other things should be noted
* aria2 doesn't configure port-forwarding automatically. Please
configure your router or firewall manually.
* 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.
* 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.
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
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
uses stronger one. If whole file checksum verification fails, aria2
doesn't retry the download and just exits with non-zero return code.
uses a stronger one. If whole file checksum verification fails, aria2
doesn't retry the download and just exits with a non-zero return code.
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
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
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.
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
time, aria2 groups files in metalink:file element which has same
BitTorrent metaurl and downloads them from a single BitTorrent swarm.
This is basically multi-file torrent download with file selection, so
the adjacent files which is not in Metalink document but shares same
piece with selected file are also created.
time, aria2 groups files in metalink:file element which has the same
BitTorrent metaurl, and downloads them from a single BitTorrent swarm.
This is a basically multi-file torrent download with file selection, so
the adjacent files which are not in Metalink document but share the same
piece with the selected file are also created.
If relative URI is specified in metalink:url or metalink:metaurl
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
read from local disk, aria2 uses the value of ``--metalink-base-uri``
the relative URI. If relative URI is found in the Metalink file which is
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
will be ignored.
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
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
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.
netrc
@ -523,10 +523,10 @@ defined in RFC 6455. The supported protocol version is 13.
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
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
documentation to know how to use API.

View file

@ -31,16 +31,8 @@
# version. If you delete this exception statement from all source
# 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 $(dirname $0)
cd "$(dirname $0)"
. ./script-helper
get_version
@ -51,9 +43,8 @@ if [ -z "$VERSION" ]; then
fi
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 \
src/aria2c $DIST_DIR
zip -9 -r $DIST_DIR.zip $DIST_DIR
rm -rf $DIST_DIR
android-out/aria2c "$DIST_DIR"
zip -9 -r "$DIST_DIR.zip" "$DIST_DIR"
rm -rf "$DIST_DIR"

View file

@ -6,27 +6,27 @@ BUILDDIR=/tmp/aria2buildtest
if [ ! -d "$BUILDDIR" ]; then
mkdir "$BUILDDIR" \
|| { echo "Failed to create directory $BUILDDIR" && exit -1; }
|| { echo "Failed to create directory $BUILDDIR" && exit 1; }
fi
echo -n "Starting build test "
echo `date`
echo "$(date)"
# build CONFIGURE_OPTS BIN_SUFFIX DESC
build()
{
echo -n "new build() started at "
echo `date`
echo "$(date)"
echo "*** configure opts=$1"
BIN_NAME="aria2c_$2"
if [ -f "$BUILDDIR/$BIN_NAME" ]; then
echo "$BIN_NAME exists, skipping"
return
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" \
&& 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"
if [ -f "test/aria2c.log" ]; then
@ -36,8 +36,8 @@ build()
clear()
{
for file in `ls $BUILDDIR`; do
rm -f "$BUILDDIR/$file";
for file in $(ls "$BUILDDIR"); do
rm -f "$BUILDDIR/$file"
done
}

View file

@ -2,7 +2,7 @@
# Process this file with autoconf to produce a configure script.
#
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_TARGET
@ -39,7 +39,7 @@ case "$host" in
# available from <time.h> even without (un)helpful interference
# from <pthread.h>, and also defines __USE_MINGW_ANSI_STDIO.
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
# binaries with it.
EXTRALDFLAGS="$EXTRALDFLAGS -Wl,--dynamicbase -Wl,--nxcompat"
@ -141,7 +141,7 @@ PKG_PROG_PKG_CONFIG([0.20])
save_CXXFLAGS="$CXXFLAGS"
CXXFLAGS=
AX_CXX_COMPILE_STDCXX_11([noext], [mandatory])
AX_CXX_COMPILE_STDCXX([11], [], [mandatory])
CXX1XCXXFLAGS="$CXXFLAGS"
CXXFLAGS="$save_CXXFLAGS"
@ -343,9 +343,12 @@ fi
have_wintls=no
if test "x$with_wintls" = "xyes"; then
AC_HAVE_LIBRARY([crypt32],[have_wintls_libs=yes],[have_wintls_libs=no])
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([crypt32],[main],[have_wintls_libs=yes],[have_wintls_libs=no],[])ac_cv_lib_crypt32=ac_cv_lib_crypt32_main
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], [[
#ifdef HAVE_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])
if test "x$have_libssh2" = "xyes"; then
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
AC_MSG_WARN([$LIBSSH2_PKG_ERRORS])
if test "x$with_libssh2_requested" = "xyes"; then
@ -496,18 +503,10 @@ fi
have_libcares=no
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])
if test "x$have_libcares" = "xyes"; then
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
else
@ -657,7 +656,7 @@ esac
# Checks for header files.
AC_FUNC_ALLOCA
AC_HEADER_STDC
AC_PROG_EGREP
AC_CHECK_HEADERS([argz.h \
arpa/inet.h \
@ -709,7 +708,8 @@ AC_TYPE_MODE_T
AC_TYPE_OFF_T
AC_TYPE_SIZE_T
AC_TYPE_SSIZE_T
AC_HEADER_TIME
AC_CHECK_HEADERS_ONCE([sys/time.h])
AC_STRUCT_TM
AC_TYPE_UINT16_T
AC_TYPE_UINT32_T
@ -729,7 +729,7 @@ fi
# Checks for library functions.
AM_GNU_GETTEXT([external])
AM_GNU_GETTEXT_VERSION([0.18])
AM_GNU_GETTEXT_VERSION([0.19])
AC_FUNC_ERROR_AT_LINE
AC_PROG_GCC_TRADITIONAL
@ -741,7 +741,7 @@ AC_FUNC_STRFTIME
AC_FUNC_VPRINTF
AC_FUNC_FORK
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.
# Instead use mmap in AC_CHECK_FUNCS list.
AC_CHECK_FUNCS([__argz_count \
@ -750,6 +750,7 @@ AC_CHECK_FUNCS([__argz_count \
atexit \
ftruncate \
getcwd \
getentropy \
gethostbyaddr \
gethostbyname \
getifaddrs \
@ -925,17 +926,9 @@ case "$host" in
;;
esac
case "$host" in
*android*)
# timegm is not declared with Android NDK r12b
AM_CONDITIONAL([HAVE_TIMEGM], false)
;;
*)
AC_CHECK_FUNCS([timegm],
[AM_CONDITIONAL([HAVE_TIMEGM], true)],
[AM_CONDITIONAL([HAVE_TIMEGM], false)])
;;
esac
AC_CHECK_FUNCS([timegm],
[AM_CONDITIONAL([HAVE_TIMEGM], true)],
[AM_CONDITIONAL([HAVE_TIMEGM], false)])
AC_CHECK_FUNCS([port_associate], [have_port_associate=yes])
AM_CONDITIONAL([HAVE_PORT_ASSOCIATE], [test "x$have_port_associate" = "xyes"])

View file

@ -478,7 +478,7 @@ void wslay_event_config_set_max_recv_msg_length(wslay_event_context_ptr ctx,
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
* wslay_event_context_client_init() are replaced with callbacks.
*/

View file

@ -109,7 +109,7 @@ ssize_t wslay_frame_send(wslay_frame_context_ptr ctx,
int flags = 0;
if (iocb->data_length > 0) {
flags |= WSLAY_MSG_MORE;
};
}
r = ctx->callbacks.send_callback(ctx->oheadermark, (size_t)len, flags,
ctx->user_data);
if (r > 0) {

File diff suppressed because one or more lines are too long

View file

@ -1,4 +1,4 @@
#!/usr/bin/env python
#!/usr/bin/env python3
import subprocess
from io import StringIO

View file

@ -334,29 +334,30 @@ HTTP/FTP/SFTP Options
.. option:: --stream-piece-selector=<SELECTOR>
Specify piece selection algorithm used in HTTP/FTP download. Piece
means fixed length segment which is downloaded in parallel in
segmented download. If ``default`` is given, aria2 selects piece so
that it reduces the number of establishing connection. This is
reasonable default behavior 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 re-connection 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 ``random`` is given, aria2 selects piece randomly. Like
``inorder``, :option:`--min-split-size <-k>` option is honored.
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.
Default: ``default``
Specify piece selection algorithm used in HTTP/FTP download. A piece is a
fixed length segment which is downloaded in parallel in a segmented download.
Default: ``default``.
default
Select a piece to reduce the number of connections established.
This is reasonable default behavior 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=<SEC>
@ -433,7 +434,7 @@ HTTP Specific Options
.. 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
``Content-Encoding: deflate``. Default: ``false``
@ -500,7 +501,7 @@ HTTP Specific Options
Use the private key in FILE.
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.
.. option:: --referer=<REFERER>
@ -522,8 +523,7 @@ HTTP Specific Options
.. note::
In performance perspective, there is usually no advantage to enable
this option.
There is usually no performance gain from enabling this option.
.. option:: --header=<HEADER>
@ -557,6 +557,10 @@ HTTP Specific Options
Use HEAD method for the first request to the HTTP server.
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>
@ -742,7 +746,7 @@ BitTorrent Specific Options
.. 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
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]
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
hash with suffix ".torrent". The directory to be saved is the same
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:: --bt-seed-unverified [true|false]
@ -1136,9 +1140,9 @@ RPC Options
.. 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
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
given to this option, the downloads added by
:func:`aria2.addTorrent` or :func:`aria2.addMetalink` will not be
@ -1359,7 +1363,7 @@ Advanced Options
your best choice. It allocates large(few GiB)
files almost instantly. Don't use ``falloc`` with
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
not be available if your system doesn't have
:manpage:`posix_fallocate(3)` function.
@ -1483,7 +1487,7 @@ Advanced Options
.. option:: --multiple-interface=<INTERFACES>
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
:option:`--interface` is used, this option will be ignored.
Possible Values: interface, IP address, hostname
@ -1652,7 +1656,7 @@ Advanced Options
the file name.
Please note that downloads added by
: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
:func:`aria2.forceRemove` will not be saved. GID is also saved with
:option:`gid <--gid>`, but there are some restrictions, see below.
@ -1660,11 +1664,11 @@ Advanced Options
.. note::
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.
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
GID of torrent file download is saved.
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::
The file specified in :option:`--private-key` must be decrypted. The behavior when
encrypted one is given is undefined.
The file specified in :option:`--private-key` must be decrypted; an encrypted
key may cause undefined behavior.
Verify SSL/TLS servers using given CA certificates
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

View file

@ -1,4 +1,4 @@
#!/usr/bin/env python
#!/usr/bin/env python3
#
# aria2 - The high speed download utility
#

View file

@ -112,10 +112,10 @@ they should be all zeros:
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
+---+-+---+-----+---------------+---------------+---------------+
|MGC|F|VER| RSV | MTIME | RSV |LOCAL NODE ID :
|(2)|M|(2)| (3) | (8) | (8) | (20) :
| |T| | | | | :
+---+-+-----+---+---------------+---------------+---------------+
|MGC|F| RSV |VER| MTIME | RSV |LOCAL NODE ID :
|(2)|M| (3) |(2)| (8) | (8) | (20) :
| |T| | | | | :
+---+-+---+-----+-------+-------+-------+-------+---------------+
:LOCAL NODE ID | RSV | NUM | RSV |
: (continued) | (4) | NODE | (4) |

View file

@ -328,28 +328,31 @@ Opções HTTP / FTP
.. option:: --stream-piece-selector=<SELECTOR>
Specify piece selection algorithm used in HTTP e FTP download. Piece
means fixed length segment which is downloaded in parallel in
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.
Specify piece selection algorithm used in HTTP e FTP download. A piece is a
fixed length segment which is downloaded in parallel in a segmented download.
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>
Set timeout in seconds.
@ -407,7 +410,7 @@ Opções Específicas de HTTP e HTTPS
.. 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
``Content-Encoding: deflate``. Padrão: ``false``
@ -1206,7 +1209,7 @@ Opções Avançadas
your best choice. It allocates large(few GiB)
files almost instantly. Don't use ``falloc`` with
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
not be available if your system doesn't have
:manpage:`posix_fallocate(3)` function.

View file

@ -451,10 +451,10 @@ HTTP(S)/FTP, они тут же могут выгружаться в BitTorrent-
.. option:: --http-accept-gzip [true|false]
Посылать ``Accept: deflate, gzip`` в запросе-заголовке и добавлять в ответ,
Посылать ``Accept-Encoding: deflate, gzip`` в запросе-заголовке и добавлять в ответ,
если удаленный сервер ответит ``Content-Encoding: gzip`` или
``Content-Encoding: deflate``.
По умолчанию: 'false
По умолчанию: ``false``
.. note::
@ -579,6 +579,10 @@ HTTP(S)/FTP, они тут же могут выгружаться в BitTorrent-
Использовать метод HEAD для первого запроса к HTTP серверу.
По умолчанию: ``false``
.. option:: --no-want-digest-header [true|false]
Отключить заголовок Want-Digest при выполнении запросов.
По умолчанию: ``false``
.. option:: -U, --user-agent=<USER_AGENT>

View file

@ -12,7 +12,7 @@ from sphinx.locale import _
from sphinx.util.logging import getLogger
__version__ = '1.0.0rc2'
__version__ = '2.0.0rc5'
__version_full__ = __version__
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.')
)
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
def setup(app):
if python_version[0] < 3:
logger.warning("Python 2 is deprecated with sphinx_rtd_theme, update to Python 3")
app.require_sphinx('1.6')
if sphinx_version <= (2, 0, 0):
logger.warning("Sphinx 1.x is deprecated with sphinx_rtd_theme, update to Sphinx 2.x or greater")
if not app.config.html_experimental_html5_writer:
logger.warning("'html4_writer' is deprecated with sphinx_rtd_theme")
else:
if app.config.html4_writer:
logger.warning("'html4_writer' is deprecated with sphinx_rtd_theme")
logger.error("Python 2 is not supported with sphinx_rtd_theme, update to Python 3.")
app.require_sphinx('5.0')
if app.config.html4_writer:
logger.error("'html4_writer' is not supported with sphinx_rtd_theme.")
# Since Sphinx 6, jquery isn't bundled anymore and we need to ensure that
# the sphinxcontrib-jquery extension is enabled.
# 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
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
# 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')
app.add_message_catalog('sphinx', rtd_locale_path)
app.connect('config-inited', config_initiated)
# 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
rtd_locale_path = path.join(path.abspath(path.dirname(__file__)), 'locale')
app.add_message_catalog('sphinx', rtd_locale_path)
app.connect('config-inited', config_initiated)
# 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"
else:
app.config.html_add_permalinks = "\uf0c1"
app.config.html_permalinks_icon = "\uf0c1"
# Extend the default context when rendering the templates.
app.connect("html-page-context", extend_html_context)
return {'parallel_read_safe': True, 'parallel_write_safe': True}

View file

@ -22,11 +22,11 @@
<div role="navigation" aria-label="{{ _('Page navigation') }}">
<ul class="wy-breadcrumbs">
{%- block breadcrumbs %}
<li><a href="{{ pathto(master_doc) }}" class="icon icon-home"></a> &raquo;</li>
<li><a href="{{ pathto(master_doc) }}" class="icon icon-home" aria-label="Home"></a></li>
{%- for doc in parents %}
<li><a href="{{ doc.link|e }}">{{ doc.title }}</a> &raquo;</li>
<li class="breadcrumb-item"><a href="{{ doc.link|e }}">{{ doc.title }}</a></li>
{%- endfor %}
<li>{{ title }}</li>
<li class="breadcrumb-item active">{{ title }}</li>
{%- endblock %}
{%- block breadcrumbs_aside %}
<li class="wy-breadcrumbs-aside">

View file

@ -51,7 +51,7 @@
{%- 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" #}
{%- 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>
{#- 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 %}.

View file

@ -10,11 +10,11 @@
{%- set sphinx_writer = 'writer-html5' if html5_doctype else 'writer-html4' -%}
{# 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 sphinx_version_info = (_ver_major, _ver_minor, _ver_bugfix) -%}
{%- set (_ver_major, _ver_minor) = (sphinx_version.split('.') | list)[:2] | map('int') -%}
{%- set sphinx_version_info = (_ver_major, _ver_minor, -1) -%}
<!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>
<meta charset="utf-8" />
{{- metatags }}
@ -28,26 +28,27 @@
<link rel="stylesheet" href="{{ pathto('_static/' + style, 1) }}" type="text/css" />
<link rel="stylesheet" href="{{ pathto('_static/pygments.css', 1) }}" type="text/css" />
{%- endif %}
{%- for css in css_files %}
{%- if css|attr("rel") %}
<link rel="{{ css.rel }}" href="{{ pathto(css.filename, 1) }}" type="text/css"{% if css.title is not none %} title="{{ css.title }}"{% endif %} />
{%- for css_file in css_files %}
{%- if css_file|attr("filename") %}
{{ css_tag(css_file) }}
{%- else %}
<link rel="stylesheet" href="{{ pathto(css, 1) }}" type="text/css" />
<link rel="stylesheet" href="{{ pathto(css_file, 1)|escape }}" type="text/css" />
{%- endif %}
{%- endfor %}
{%- for cssfile in extra_css_files %}
<link rel="stylesheet" href="{{ pathto(cssfile, 1) }}" type="text/css" />
{# "extra_css_files" is a theme option and it's always a string #}
{%- for css_file in extra_css_files %}
<link rel="stylesheet" href="{{ pathto(css_file, 1)|escape }}" type="text/css" />
{%- endfor -%}
{#- FAVICON #}
{%- if favicon %}
{%- if sphinx_version_info < (4, 0) -%}
<link rel="shortcut icon" href="{{ pathto('_static/' + favicon, 1) }}"/>
{%- else %}
<link rel="shortcut icon" href="{{ favicon_url }}"/>
{%- endif %}
{%- endif -%}
{#- FAVICON
favicon_url is the only context var necessary since Sphinx 4.
In Sphinx<4, we use favicon but need to prepend path info.
#}
{%- set _favicon_url = favicon_url | default(pathto('_static/' + (favicon or ""), 1)) %}
{%- if favicon_url or favicon %}
<link rel="shortcut icon" href="{{ _favicon_url }}"/>
{%- endif %}
{#- CANONICAL URL (deprecated) #}
{%- 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 %}>
{%- block sidebartitle %}
{%- if logo and theme_logo_only %}
<a href="{{ pathto(master_doc) }}">
{%- else %}
<a href="{{ pathto(master_doc) }}" class="icon icon-home"> {{ project }}
{%- endif %}
{%- if logo %}
{#- Not strictly valid HTML, but it's the only way to display/scale
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') }}"/>
{# the logo helper function was removed in Sphinx 6 and deprecated since Sphinx 4 #}
{# the master_doc variable was renamed to root_doc in Sphinx 4 (master_doc still exists in later Sphinx versions) #}
{%- set _logo_url = logo_url|default(pathto('_static/' + (logo or ""), 1)) %}
{%- set _root_doc = root_doc|default(master_doc) %}
<a href="{{ pathto(_root_doc) }}"{% if not theme_logo_only %} class="icon icon-home"{% endif %}>
{% if not theme_logo_only %}{{ project }}{% endif %}
{%- if logo or logo_url %}
<img src="{{ _logo_url }}" class="logo" alt="{{ _('Logo') }}"/>
{%- endif %}
{%- endif %}
</a>
{%- if theme_display_version %}

View file

@ -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 "&#169; <a href=\"%(path)s\">Copyright</a> %(copyright)s."
msgstr "&#169; <a href=\"%(path)s\">Copyright</a> %(copyright)s."
#: sphinx_rtd_theme/footer.html:23
#, python-format
msgid "&#169; Copyright %(copyright)s."
msgstr "&#169; 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"

View file

@ -11,14 +11,14 @@ msgid ""
msgstr ""
"Project-Id-Version: sphinx_rtd_theme 0.4.3.dev0\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"
"Last-Translator: Tom Kunze <transifex.com@tomabrafix.de>, 2019\n"
"Language-Team: German (https://www.transifex.com/readthedocs/teams/101354/de/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Generated-By: Babel 2.8.0\n"
"Generated-By: Babel 2.11.0\n"
"Language: de\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
@ -92,7 +92,7 @@ msgstr "Suche"
msgid "Copyright"
msgstr "Copyright"
#: sphinx_rtd_theme/layout.html:147 sphinx_rtd_theme/layout.html:149
#: sphinx_rtd_theme/layout.html:143
msgid "Logo"
msgstr "Logo"
@ -134,9 +134,3 @@ msgstr "Projektübersicht"
#: sphinx_rtd_theme/versions.html:29
msgid "Builds"
msgstr "Builds"
#~ msgid "Docs"
#~ msgstr "Dokumentation"
#~ msgid "Free document hosting provided by"
#~ msgstr "Kostenloses Dokumentationen-Hosting zur Verfügung gestellt von"

View file

@ -8,16 +8,16 @@ msgid ""
msgstr ""
"Project-Id-Version: sphinx_rtd_theme 0.4.3.dev0\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"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language: en\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"
"Content-Type: text/plain; charset=utf-8\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
#. link and links to GitHub/GitLab/etc.
@ -93,7 +93,7 @@ msgid "Built with %(sphinx_web)s using a"
msgstr ""
#. "theme" refers to a theme for Sphinx, which alters the appearance of the
#. generated documenation
#. generated documentation
#: sphinx_rtd_theme/footer.html:55
msgid "theme"
msgstr ""
@ -126,18 +126,18 @@ msgstr ""
msgid "Copyright"
msgstr ""
#: sphinx_rtd_theme/layout.html:147 sphinx_rtd_theme/layout.html:149
#: sphinx_rtd_theme/layout.html:143
msgid "Logo"
msgstr ""
#. 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"
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:195
#: sphinx_rtd_theme/layout.html:188
msgid "Mobile navigation menu"
msgstr ""

View file

@ -6,23 +6,23 @@
#
# Translators:
# Anthony <aj@ohess.org>, 2019
# Leonardo J. Caballero G. <leonardocaballero@gmail.com>, 2020
# Radina Matic <radina.matic@gmail.com>, 2021
# Leonardo J. Caballero G. <leonardocaballero@gmail.com>, 2022
#
msgid ""
msgstr ""
"Project-Id-Version: sphinx_rtd_theme 0.4.3.dev0\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"
"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"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Generated-By: Babel 2.8.0\n"
"Generated-By: Babel 2.11.0\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
msgid "Edit on GitHub"
@ -48,6 +48,21 @@ msgstr "Anterior"
msgid "Next"
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 "&#169; <a href=\"%(path)s\">Copyright</a> %(copyright)s."
msgstr "&#169; <a href=\"%(path)s\">Derechos de autor</a> %(copyright)s."
#: sphinx_rtd_theme/footer.html:23
#, python-format
msgid "&#169; Copyright %(copyright)s."
msgstr "&#169; Derechos de autor %(copyright)s."
#. Build is a noun, not a verb
#: sphinx_rtd_theme/footer.html:30
msgid "Build"
@ -72,7 +87,7 @@ msgid "Built with %(sphinx_web)s using a"
msgstr "Compilado con %(sphinx_web)s usando un"
#. "theme" refers to a theme for Sphinx, which alters the appearance of the
#. generated documenation
#. generated documentation
#: sphinx_rtd_theme/footer.html:55
msgid "theme"
msgstr "tema"
@ -105,7 +120,7 @@ msgstr "Búsqueda"
msgid "Copyright"
msgstr "Derechos de autor"
#: sphinx_rtd_theme/layout.html:147 sphinx_rtd_theme/layout.html:149
#: sphinx_rtd_theme/layout.html:143
msgid "Logo"
msgstr "Logotipo"
@ -152,12 +167,3 @@ msgstr "Página de Proyecto"
#: sphinx_rtd_theme/versions.html:29
msgid "Builds"
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"

View file

@ -12,14 +12,14 @@ msgid ""
msgstr ""
"Project-Id-Version: sphinx_rtd_theme 0.4.3.dev0\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"
"Last-Translator: Ivar Smolin <okul@linux.ee>, 2021\n"
"Language-Team: Estonian (https://www.transifex.com/readthedocs/teams/101354/et/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Generated-By: Babel 2.8.0\n"
"Generated-By: Babel 2.11.0\n"
"Language: et\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
@ -47,6 +47,11 @@ msgstr "Eelmine"
msgid "Next"
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
#, python-format
msgid "&#169; <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,"
#. "theme" refers to a theme for Sphinx, which alters the appearance of the
#. generated documenation
#. generated documentation
#: sphinx_rtd_theme/footer.html:55
msgid "theme"
msgstr "kujundusteema"
@ -114,7 +119,7 @@ msgstr "Otsing"
msgid "Copyright"
msgstr "Autoriõigus"
#: sphinx_rtd_theme/layout.html:147 sphinx_rtd_theme/layout.html:149
#: sphinx_rtd_theme/layout.html:143
msgid "Logo"
msgstr "Logo"
@ -159,12 +164,3 @@ msgstr "Projekti kodu"
#: sphinx_rtd_theme/versions.html:29
msgid "Builds"
msgstr "Ehitused"
#~ msgid "Docs"
#~ msgstr "Dokumendid"
#~ msgid "Free document hosting provided by"
#~ msgstr "Dokumentatsiooni majutab tasuta"
#~ msgid "Documentation Home"
#~ msgstr "Dokumentatsiooni kodu"

View file

@ -6,19 +6,20 @@
#
# Translators:
# Anthony <aj@ohess.org>, 2021
# Peyman M., 2022
#
msgid ""
msgstr ""
"Project-Id-Version: sphinx_rtd_theme 0.4.3.dev0\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"
"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"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Generated-By: Babel 2.8.0\n"
"Generated-By: Babel 2.11.0\n"
"Language: fa_IR\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"
#. "theme" refers to a theme for Sphinx, which alters the appearance of the
#. generated documenation
#. generated documentation
#: sphinx_rtd_theme/footer.html:55
msgid "theme"
msgstr "پوسته"
@ -113,7 +114,7 @@ msgstr "جستجوی"
msgid "Copyright"
msgstr "کپی رایت"
#: sphinx_rtd_theme/layout.html:147 sphinx_rtd_theme/layout.html:149
#: sphinx_rtd_theme/layout.html:143
msgid "Logo"
msgstr "آرم"

View file

@ -6,23 +6,24 @@
#
# Translators:
# Anthony <aj@ohess.org>, 2020
# Nicolas Friedli <nicolas.friedli@gmail.com>, 2021
# Radina Matic <radina.matic@gmail.com>, 2021
# Jérémie Tarot <silopolis@gmail.com>, 2023
# CapitainFlam, 2023
#
msgid ""
msgstr ""
"Project-Id-Version: sphinx_rtd_theme 0.4.3.dev0\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"
"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"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Generated-By: Babel 2.8.0\n"
"Generated-By: Babel 2.11.0\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
msgid "Edit on GitHub"
@ -48,6 +49,21 @@ msgstr "Précédent"
msgid "Next"
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 "&#169; <a href=\"%(path)s\">Copyright</a> %(copyright)s."
msgstr "&#169; <a href=\"%(path)s\">Droits d'auteur</a> %(copyright)s."
#: sphinx_rtd_theme/footer.html:23
#, python-format
msgid "&#169; Copyright %(copyright)s."
msgstr "&#169; Droits d'auteur %(copyright)s."
#. Build is a noun, not a verb
#: sphinx_rtd_theme/footer.html:30
msgid "Build"
@ -72,7 +88,7 @@ msgid "Built with %(sphinx_web)s using a"
msgstr "Compilé avec %(sphinx_web)s en utilisant un"
#. "theme" refers to a theme for Sphinx, which alters the appearance of the
#. generated documenation
#. generated documentation
#: sphinx_rtd_theme/footer.html:55
msgid "theme"
msgstr "thème"
@ -105,7 +121,7 @@ msgstr "Rechercher"
msgid "Copyright"
msgstr "Droits d'auteur"
#: sphinx_rtd_theme/layout.html:147 sphinx_rtd_theme/layout.html:149
#: sphinx_rtd_theme/layout.html:143
msgid "Logo"
msgstr "Logo"
@ -151,12 +167,3 @@ msgstr "Accueil du projet"
#: sphinx_rtd_theme/versions.html:29
msgid "Builds"
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"

View file

@ -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"

View file

@ -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"

View file

@ -7,21 +7,29 @@
# Translators:
# Anthony <aj@ohess.org>, 2021
# Maurizio Paglia <mpaglia0@gmail.com>, 2021
# albanobattistella <albano_battistella@hotmail.com>, 2022
# Benjamin Bach <benjaoming@gmail.com>, 2022
#
msgid ""
msgstr ""
"Project-Id-Version: sphinx_rtd_theme 0.4.3.dev0\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"
"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"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Generated-By: Babel 2.8.0\n"
"Generated-By: Babel 2.11.0\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
msgid "Edit on GitHub"
@ -39,6 +47,12 @@ msgstr "Modifica su GitLab"
msgid "View page source"
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
msgid "Previous"
msgstr "Precedente"
@ -47,6 +61,11 @@ msgstr "Precedente"
msgid "Next"
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
#, python-format
msgid "&#169; <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
#, python-format
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
#. generated documenation
#. generated documentation
#: sphinx_rtd_theme/footer.html:55
msgid "theme"
msgstr "tema"
@ -114,10 +133,21 @@ msgstr "Ricerca"
msgid "Copyright"
msgstr "Copyright"
#: sphinx_rtd_theme/layout.html:147 sphinx_rtd_theme/layout.html:149
#: 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 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
msgid "Please activate JavaScript to enable the search functionality."
msgstr "Devi attivare JavaScript per attivare la funzione di ricerca."
@ -160,12 +190,3 @@ msgstr "Home progetto"
#: sphinx_rtd_theme/versions.html:29
msgid "Builds"
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"

View file

@ -11,17 +11,23 @@ msgid ""
msgstr ""
"Project-Id-Version: sphinx_rtd_theme 0.4.3.dev0\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"
"Last-Translator: Tomas Straupis, 2021\n"
"Language-Team: Lithuanian (https://www.transifex.com/readthedocs/teams/101354/lt/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Generated-By: Babel 2.8.0\n"
"Generated-By: Babel 2.11.0\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"
#. 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
msgid "Edit on GitHub"
msgstr "Keisti GitHub'e"
@ -38,6 +44,12 @@ msgstr "Keisti GitLab'e"
msgid "View page source"
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
msgid "Previous"
msgstr "Ankstesnis"
@ -46,6 +58,11 @@ msgstr "Ankstesnis"
msgid "Next"
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
#, python-format
msgid "&#169; <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"
#. "theme" refers to a theme for Sphinx, which alters the appearance of the
#. generated documenation
#. generated documentation
#: sphinx_rtd_theme/footer.html:55
msgid "theme"
msgstr "temą"
@ -113,10 +130,21 @@ msgstr "Paieška"
msgid "Copyright"
msgstr "Autorių teisės"
#: sphinx_rtd_theme/layout.html:147 sphinx_rtd_theme/layout.html:149
#: 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 "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
msgid "Please activate JavaScript to enable the search functionality."
msgstr "Prašome įjungti JavaScript, kad veiktų paieškos funkcionalumas."
@ -158,12 +186,3 @@ msgstr "Projekto namai"
#: sphinx_rtd_theme/versions.html:29
msgid "Builds"
msgstr "Surinkimai"
#~ msgid "Docs"
#~ msgstr "Dokumentai"
#~ msgid "Free document hosting provided by"
#~ msgstr "Nemokamą dokumentacijos talpinimą teikia"
#~ msgid "Documentation Home"
#~ msgstr "Dokumentacijos namai"

View file

@ -5,23 +5,29 @@
# FIRST AUTHOR <EMAIL@ADDRESS>, 2019.
#
# Translators:
# Jesse Tan, 2019
# Jesse Tan, 2021
#
msgid ""
msgstr ""
"Project-Id-Version: sphinx_rtd_theme 0.4.3.dev0\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"
"Last-Translator: Jesse Tan, 2019\n"
"Last-Translator: Jesse Tan, 2021\n"
"Language-Team: Dutch (https://www.transifex.com/readthedocs/teams/101354/nl/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Generated-By: Babel 2.8.0\n"
"Generated-By: Babel 2.11.0\n"
"Language: nl\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
msgid "Edit on GitHub"
msgstr "Bewerk op GitHub"
@ -38,6 +44,12 @@ msgstr "Bewerk op GitLab"
msgid "View page source"
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
msgid "Previous"
msgstr "Vorige"
@ -46,6 +58,21 @@ msgstr "Vorige"
msgid "Next"
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 "&#169; <a href=\"%(path)s\">Copyright</a> %(copyright)s."
msgstr "&#169; <a href=\"%(path)s\">Copyright</a> %(copyright)s."
#: sphinx_rtd_theme/footer.html:23
#, python-format
msgid "&#169; Copyright %(copyright)s."
msgstr "&#169; Copyright %(copyright)s."
#. Build is a noun, not a verb
#: sphinx_rtd_theme/footer.html:30
msgid "Build"
@ -70,7 +97,7 @@ msgid "Built with %(sphinx_web)s using a"
msgstr "Gebouwd met %(sphinx_web)s met een"
#. "theme" refers to a theme for Sphinx, which alters the appearance of the
#. generated documenation
#. generated documentation
#: sphinx_rtd_theme/footer.html:55
msgid "theme"
msgstr "thema"
@ -103,10 +130,21 @@ msgstr "Zoek"
msgid "Copyright"
msgstr "Copyright"
#: sphinx_rtd_theme/layout.html:147 sphinx_rtd_theme/layout.html:149
#: 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 "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
msgid "Please activate JavaScript to enable the search functionality."
msgstr "Zet JavaScript aan om de zoekfunctie mogelijk te maken."
@ -148,9 +186,3 @@ msgstr "Project Home"
#: sphinx_rtd_theme/versions.html:29
msgid "Builds"
msgstr "Bouwresultaten"
#~ msgid "Docs"
#~ msgstr "Documentatie"
#~ msgid "Free document hosting provided by"
#~ msgstr "Gratis hosting voor documentatie verzorgd door"

View file

@ -11,14 +11,14 @@ msgid ""
msgstr ""
"Project-Id-Version: sphinx_rtd_theme 0.4.3.dev0\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"
"Last-Translator: Michal Sniatala, 2021\n"
"Language-Team: Polish (https://www.transifex.com/readthedocs/teams/101354/pl/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Generated-By: Babel 2.8.0\n"
"Generated-By: Babel 2.11.0\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"
@ -135,9 +135,3 @@ msgstr "Na Read the Docs"
#: sphinx_rtd_theme/versions.html:26
msgid "Project Home"
msgstr "Strona projektu"
#~ msgid "Free document hosting provided by"
#~ msgstr "Bezpłatny hosting dokumentacji zapewniony przez"
#~ msgid "Documentation Home"
#~ msgstr "Strona dokumentacji"

View file

@ -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"

View file

@ -5,23 +5,29 @@
# FIRST AUTHOR <EMAIL@ADDRESS>, 2019.
#
# Translators:
# Wellington Uemura <wellingtonuemura@gmail.com>, 2021
# Rafael Fontenelle <rffontenelle@gmail.com>, 2021
# Wellington Uemura <wellingtonuemura@gmail.com>, 2022
#
msgid ""
msgstr ""
"Project-Id-Version: sphinx_rtd_theme 0.4.3.dev0\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"
"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"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Generated-By: Babel 2.8.0\n"
"Generated-By: Babel 2.11.0\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
msgid "Edit on GitHub"
@ -39,6 +45,12 @@ msgstr "Editar no GitLab"
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"
@ -47,6 +59,11 @@ msgstr "Anterior"
msgid "Next"
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
#, python-format
msgid "&#169; <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"
#. "theme" refers to a theme for Sphinx, which alters the appearance of the
#. generated documenation
#. generated documentation
#: sphinx_rtd_theme/footer.html:55
msgid "theme"
msgstr "tema"
@ -114,10 +131,21 @@ msgstr "Pesquisar"
msgid "Copyright"
msgstr "Copyright"
#: sphinx_rtd_theme/layout.html:147 sphinx_rtd_theme/layout.html:149
#: 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 ""
@ -161,12 +189,3 @@ msgstr "Página inicial"
#: sphinx_rtd_theme/versions.html:29
msgid "Builds"
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"

View file

@ -5,24 +5,30 @@
# FIRST AUTHOR <EMAIL@ADDRESS>, 2019.
#
# Translators:
# Dmitry Shachnev <mitya57@gmail.com>, 2019
# lvv83 <vlozhkin83@gmail.com>, 2019
# Dmitry Shachnev <mitya57@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: 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"
"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"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Generated-By: Babel 2.8.0\n"
"Generated-By: Babel 2.11.0\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"
#. 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
msgid "Edit on GitHub"
msgstr "Редактировать на GitHub"
@ -39,6 +45,12 @@ msgstr "Редактировать на GitLab"
msgid "View page source"
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
msgid "Previous"
msgstr "Предыдущая"
@ -47,6 +59,21 @@ msgstr "Предыдущая"
msgid "Next"
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 "&#169; <a href=\"%(path)s\">Copyright</a> %(copyright)s."
msgstr "&#169; <a href=\"%(path)s\">Авторские права</a> %(copyright)s. "
#: sphinx_rtd_theme/footer.html:23
#, python-format
msgid "&#169; Copyright %(copyright)s."
msgstr "&#169; Авторские права %(copyright)s. "
#. Build is a noun, not a verb
#: sphinx_rtd_theme/footer.html:30
msgid "Build"
@ -71,7 +98,7 @@ msgid "Built with %(sphinx_web)s using a"
msgstr "Собрано при помощи %(sphinx_web)s с использованием"
#. "theme" refers to a theme for Sphinx, which alters the appearance of the
#. generated documenation
#. generated documentation
#: sphinx_rtd_theme/footer.html:55
msgid "theme"
msgstr "темы,"
@ -104,10 +131,21 @@ msgstr "Поиск"
msgid "Copyright"
msgstr "Авторские права"
#: sphinx_rtd_theme/layout.html:147 sphinx_rtd_theme/layout.html:149
#: sphinx_rtd_theme/layout.html:143
msgid "Logo"
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
msgid "Please activate JavaScript to enable the search functionality."
msgstr "Активируйте JavaScript, чтобы использовать функционал поиска."
@ -149,9 +187,3 @@ msgstr "Домашняя страница проекта"
#: sphinx_rtd_theme/versions.html:29
msgid "Builds"
msgstr "Сборки"
#~ msgid "Docs"
#~ msgstr "Документация"
#~ msgid "Free document hosting provided by"
#~ msgstr "Бесплатный хостинг документов, предоставленный"

View file

@ -1,22 +1,22 @@
# 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
# project.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2021.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2023.
#
#, fuzzy
msgid ""
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"
"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"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\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
#. link and links to GitHub/GitLab/etc.
@ -92,7 +92,7 @@ msgid "Built with %(sphinx_web)s using a"
msgstr ""
#. "theme" refers to a theme for Sphinx, which alters the appearance of the
#. generated documenation
#. generated documentation
#: sphinx_rtd_theme/footer.html:55
msgid "theme"
msgstr ""
@ -125,18 +125,18 @@ msgstr ""
msgid "Copyright"
msgstr ""
#: sphinx_rtd_theme/layout.html:147 sphinx_rtd_theme/layout.html:149
#: sphinx_rtd_theme/layout.html:143
msgid "Logo"
msgstr ""
#. 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"
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:195
#: sphinx_rtd_theme/layout.html:188
msgid "Mobile navigation menu"
msgstr ""

View file

@ -11,14 +11,14 @@ msgid ""
msgstr ""
"Project-Id-Version: sphinx_rtd_theme 0.4.3.dev0\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"
"Last-Translator: Daniel Holmberg <daniel.holmberg97@gmail.com>, 2020\n"
"Language-Team: Swedish (https://www.transifex.com/readthedocs/teams/101354/sv/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Generated-By: Babel 2.8.0\n"
"Generated-By: Babel 2.11.0\n"
"Language: sv\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"
#. "theme" refers to a theme for Sphinx, which alters the appearance of the
#. generated documenation
#. generated documentation
#: sphinx_rtd_theme/footer.html:55
msgid "theme"
msgstr "tema"
@ -103,7 +103,7 @@ msgstr "Sök"
msgid "Copyright"
msgstr "Upphovsrätt"
#: sphinx_rtd_theme/layout.html:147 sphinx_rtd_theme/layout.html:149
#: sphinx_rtd_theme/layout.html:143
msgid "Logo"
msgstr "Logo"
@ -149,12 +149,3 @@ msgstr "Projekt Hem"
#: sphinx_rtd_theme/versions.html:29
msgid "Builds"
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"

View file

@ -11,14 +11,14 @@ msgid ""
msgstr ""
"Project-Id-Version: sphinx_rtd_theme 0.4.3.dev0\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"
"Last-Translator: BouRock, 2020\n"
"Language-Team: Turkish (https://www.transifex.com/readthedocs/teams/101354/tr/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Generated-By: Babel 2.8.0\n"
"Generated-By: Babel 2.11.0\n"
"Language: tr\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."
#. "theme" refers to a theme for Sphinx, which alters the appearance of the
#. generated documenation
#. generated documentation
#: sphinx_rtd_theme/footer.html:55
msgid "theme"
msgstr "tema"
@ -95,7 +95,7 @@ msgstr "Arama"
msgid "Copyright"
msgstr "Telif hakkı"
#: sphinx_rtd_theme/layout.html:147 sphinx_rtd_theme/layout.html:149
#: sphinx_rtd_theme/layout.html:143
msgid "Logo"
msgstr "Logo"
@ -141,12 +141,3 @@ msgstr "Proje Ana Sayfa"
#: sphinx_rtd_theme/versions.html:29
msgid "Builds"
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ş"

View file

@ -5,40 +5,53 @@
# FIRST AUTHOR <EMAIL@ADDRESS>, 2019.
#
# Translators:
# Anthony <aj@ohess.org>, 2020
# 王赛 <wangsai@bootcss.com>, 2020
# 王赛 <wangsai@bootcss.com>, 2019
# Anthony <aj@ohess.org>, 2022
# JY3, 2022
#
msgid ""
msgstr ""
"Project-Id-Version: sphinx_rtd_theme 0.4.3.dev0\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"
"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"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Generated-By: Babel 2.8.0\n"
"Generated-By: Babel 2.11.0\n"
"Language: zh_CN\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
msgid "Edit on GitHub"
msgstr "在 GitHub 上修改"
msgstr "在 GitHub 上编辑"
#: sphinx_rtd_theme/breadcrumbs.html:44 sphinx_rtd_theme/breadcrumbs.html:46
msgid "Edit on Bitbucket"
msgstr "在 Bitbucket 上修改"
msgstr "在 Bitbucket 上编辑"
#: sphinx_rtd_theme/breadcrumbs.html:51 sphinx_rtd_theme/breadcrumbs.html:53
msgid "Edit on GitLab"
msgstr "在 GitLab 上修改"
msgstr "在 GitLab 上编辑"
#: sphinx_rtd_theme/breadcrumbs.html:56 sphinx_rtd_theme/breadcrumbs.html:58
msgid "View page source"
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
msgid "Previous"
msgstr "上一页"
@ -47,6 +60,21 @@ msgstr "上一页"
msgid "Next"
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 "&#169; <a href=\"%(path)s\">Copyright</a> %(copyright)s."
msgstr "&#169; <a href=\"%(path)s\">版权所有</a> %(copyright)s。"
#: sphinx_rtd_theme/footer.html:23
#, python-format
msgid "&#169; Copyright %(copyright)s."
msgstr "&#169; 版权所有 %(copyright)s。"
#. Build is a noun, not a verb
#: sphinx_rtd_theme/footer.html:30
msgid "Build"
@ -55,7 +83,7 @@ msgstr "构建"
#. the phrase "revision" comes from Git, referring to a commit
#: sphinx_rtd_theme/footer.html:36
msgid "Revision"
msgstr "修订"
msgstr "版本"
#: sphinx_rtd_theme/footer.html:41
#, python-format
@ -68,10 +96,10 @@ msgstr "最后更新时间 %(last_updated)s。"
#: sphinx_rtd_theme/footer.html:53
#, python-format
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
#. generated documenation
#. generated documentation
#: sphinx_rtd_theme/footer.html:55
msgid "theme"
msgstr "主题"
@ -81,12 +109,12 @@ msgstr "主题"
#: sphinx_rtd_theme/footer.html:57
#, python-format
msgid "provided by %(readthedocs_web)s"
msgstr "由 %(readthedocs_web)s开发"
msgstr "由 %(readthedocs_web)s 开发"
#: sphinx_rtd_theme/layout.html:97
#, python-format
msgid "Search within %(docstitle)s"
msgstr "在 %(docstitle)s中搜索"
msgstr "在 %(docstitle)s 中搜索"
#: sphinx_rtd_theme/layout.html:105
msgid "About these documents"
@ -104,10 +132,21 @@ msgstr "搜索"
msgid "Copyright"
msgstr "版权所有"
#: sphinx_rtd_theme/layout.html:147 sphinx_rtd_theme/layout.html:149
#: 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 "导航菜单"
#. 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
msgid "Please activate JavaScript to enable the search functionality."
msgstr "请启用 JavaScript 以便使用搜索功能"
@ -125,15 +164,15 @@ msgstr "您的搜索没有匹配到任何文档。请确保所有单词拼写正
#: sphinx_rtd_theme/searchbox.html:4
msgid "Search docs"
msgstr "在文档中搜索"
msgstr "搜索文档"
#: sphinx_rtd_theme/versions.html:3 sphinx_rtd_theme/versions.html:11
msgid "Versions"
msgstr "版本列表"
msgstr "版本"
#: sphinx_rtd_theme/versions.html:17
msgid "Downloads"
msgstr "下载链接"
msgstr "下载"
#. The phrase "Read the Docs" is not translated
#: sphinx_rtd_theme/versions.html:24
@ -142,17 +181,8 @@ msgstr "托管于 Read the Docs"
#: sphinx_rtd_theme/versions.html:26
msgid "Project Home"
msgstr "项目页"
msgstr "项目页"
#: sphinx_rtd_theme/versions.html:29
msgid "Builds"
msgstr "构建"
#~ msgid "Docs"
#~ msgstr "文档"
#~ msgid "Free document hosting provided by"
#~ msgstr "此文档免费托管于"
#~ msgid "Documentation Home"
#~ msgstr "文档首页"

View file

@ -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"

View file

@ -1,7 +1,7 @@
{%- if 'singlehtml' not in builder %}
<div role="search">
<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="area" value="default" />
</form>

View file

@ -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

View file

@ -33,7 +33,7 @@ echo -n "en@quot en@boldquot" > "$PO_DIR"/LINGUAS
for file in "$WORK_DIR"/*.po; do
# First remove useless '\r' in messages
sed -i -e 's/\\r//' "$file"
bn=`basename "$file"`
bn=$(basename "$file")
bn=${bn#aria2-}
dst="$PO_DIR"/"$bn"
# copy file to po directory

1018
m4/ax_cxx_compile_stdcxx.m4 Normal file

File diff suppressed because it is too large Load diff

View file

@ -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
])

View file

@ -1,14 +1,5 @@
#!/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
PREV_VERSION=$2
@ -18,29 +9,48 @@ git log --pretty=fuller --date=short refs/tags/release-$PREV_VERSION..HEAD > Cha
autoreconf -i
./configure && \
make dist-bzip2 && make dist-gzip && make dist-xz || echo "error"
make dist-bzip2 && make dist-gzip && make dist-xz
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
export HOST=i686-w64-mingw32
export LABEL=win-32bit
./mingw-config
make -j8
./mingw-release
make distclean
release_mingw i686-w64-mingw32 win-32bit
# mingw 64bit
export HOST=x86_64-w64-mingw32
export LABEL=win-64bit
./mingw-config
make -j8
./mingw-release
make distclean
release_mingw x86_64-w64-mingw32 win-64bit
# android
./android-config
make -j8
mkdir -p android-out
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
make distclean
rm -rf android-out
# OSX builds are created separately using makerelease-osx.mk

View file

@ -238,7 +238,7 @@ endef
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)

View file

@ -36,7 +36,7 @@ test -z "$BUILD_VER" && BUILD_VER=1
test -z "$LABEL" && LABEL=$HOST
# cd to the directory where this script exists.
cd $(dirname $0)
cd "$(dirname "$0")"
. ./script-helper
get_version
@ -48,9 +48,8 @@ fi
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 \
src/aria2c.exe $DIST_DIR
zip -9 -r $DIST_DIR.zip $DIST_DIR
rm -rf $DIST_DIR
mingw-out/aria2c.exe "$DIST_DIR"
zip -9 -r "$DIST_DIR.zip" "$DIST_DIR"
rm -rf "$DIST_DIR"

View file

@ -29,7 +29,7 @@
# version. If you delete this exception statement from all source
# files in the program, then also delete it here.
get_version () {
VERSION=`grep AC_INIT configure.ac | sed '/AC_INIT/ s/AC_INIT(\[aria2\],\[\([^]]\+\)\],.*/\1/'`
get_version() {
VERSION=$(grep AC_INIT configure.ac | sed '/AC_INIT/ s/AC_INIT(\[aria2\],\[\([^]]\+\)\],.*/\1/')
echo "Version: $VERSION"
}

View file

@ -258,7 +258,7 @@ ssize_t AbstractDiskWriter::writeDataInternal(const unsigned char* data,
size_t len, int64_t offset)
{
if (mapaddr_) {
memcpy(mapaddr_ + offset, data, len);
std::copy_n(data, len, mapaddr_ + offset);
return len;
}
else {
@ -298,7 +298,7 @@ ssize_t AbstractDiskWriter::readDataInternal(unsigned char* data, size_t len,
return 0;
}
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;
}
else {
@ -597,7 +597,7 @@ void AbstractDiskWriter::flushOSBuffers()
}
#ifdef __MINGW32__
FlushFileBuffers(fd_);
#else // !__MINGW32__
#else // !__MINGW32__
fsync(fd_);
#endif // __MINGW32__
}

View file

@ -122,7 +122,7 @@ bool AbstractHttpServerResponseCommand::execute()
else {
if (timeoutTimer_.difference(global::wallclock()) >= 30_s) {
A2_LOG_INFO(fmt("CUID#%" PRId64
" - HttpServer: Timeout while trasmitting response.",
" - HttpServer: Timeout while transmitting response.",
getCuid()));
return true;
}

View file

@ -131,7 +131,7 @@ struct hash_finder {
std::string errToString(OSStatus err)
{
std::string rv = "Unkown error";
std::string rv = "Unknown error";
CFRef<CFStringRef> cerr(SecCopyErrorMessageString(err, nullptr));
if (!cerr) {
return rv;

View file

@ -40,10 +40,11 @@
#include "LogFactory.h"
#include "SocketCore.h"
#include "util.h"
#include "EventPoll.h"
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);
if (status != ARES_SUCCESS) {
@ -51,12 +52,15 @@ void callback(void* arg, int status, int timeouts, struct hostent* host)
resolverPtr->status_ = AsyncNameResolver::STATUS_ERROR;
return;
}
for (char** ap = host->h_addr_list; *ap; ++ap) {
for (auto ap = result->nodes; ap; ap = ap->ai_next) {
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);
}
}
ares_freeaddrinfo(result);
if (resolverPtr->resolvedAddresses_.empty()) {
resolverPtr->error_ = "no address returned or address conversion failed";
resolverPtr->status_ = AsyncNameResolver::STATUS_ERROR;
@ -66,24 +70,63 @@ void callback(void* arg, int status, int timeouts, struct hostent* host)
}
}
AsyncNameResolver::AsyncNameResolver(int family
#ifdef HAVE_ARES_ADDR_NODE
,
ares_addr_node* servers
#endif // HAVE_ARES_ADDR_NODE
)
namespace {
void sock_state_cb(void* arg, ares_socket_t fd, int read, int write)
{
auto resolver = static_cast<AsyncNameResolver*>(arg);
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)
{
ares_options opts{};
opts.sock_state_cb = sock_state_cb;
opts.sock_state_cb_data = this;
// TODO evaluate return value
ares_init(&channel_);
#if defined(HAVE_ARES_SET_SERVERS) && defined(HAVE_ARES_ADDR_NODE)
if (servers) {
// ares_set_servers has been added since c-ares 1.7.1
if (ares_set_servers(channel_, servers) != ARES_SUCCESS) {
A2_LOG_DEBUG("ares_set_servers failed");
ares_init_options(&channel_, &opts, ARES_OPT_SOCK_STATE_CB);
if (!servers.empty()) {
if (ares_set_servers_csv(channel_, servers.c_str()) != ARES_SUCCESS) {
A2_LOG_DEBUG("ares_set_servers_csv failed");
}
}
#endif // HAVE_ARES_SET_SERVERS && HAVE_ARES_ADDR_NODE
}
AsyncNameResolver::~AsyncNameResolver() { ares_destroy(channel_); }
@ -92,25 +135,58 @@ void AsyncNameResolver::resolve(const std::string& name)
{
hostname_ = name;
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)
{
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
int AsyncNameResolver::getsock(sock_t* sockets) const
const std::vector<AsyncNameResolverSocketEntry>&
AsyncNameResolver::getsock() const
{
return ares_getsock(channel_, reinterpret_cast<ares_socket_t*>(sockets),
ARES_GETSOCK_MAXNUM);
return socks_;
}
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;
}
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

View file

@ -46,9 +46,14 @@
namespace aria2 {
struct AsyncNameResolverSocketEntry {
ares_socket_t fd;
int events;
};
class AsyncNameResolver {
friend void callback(void* arg, int status, int timeouts,
struct hostent* host);
ares_addrinfo* result);
public:
enum STATUS {
@ -59,6 +64,7 @@ public:
};
private:
std::vector<AsyncNameResolverSocketEntry> socks_;
STATUS status_;
int family_;
ares_channel channel_;
@ -68,12 +74,7 @@ private:
std::string hostname_;
public:
AsyncNameResolver(int family
#ifdef HAVE_ARES_ADDR_NODE
,
ares_addr_node* servers
#endif // HAVE_ARES_ADDR_NODE
);
AsyncNameResolver(int family, const std::string& servers);
~AsyncNameResolver();
@ -88,14 +89,14 @@ public:
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);
int getFamily() const { return family_; }
#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);
@ -105,17 +106,11 @@ public:
void setAddr(const std::string& addrString);
void reset();
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
#endif // D_ASYNC_NAME_RESOLVER_H

View file

@ -88,12 +88,7 @@ void AsyncNameResolverMan::startAsyncFamily(const std::string& hostname,
Command* command)
{
asyncNameResolver_[numResolver_] =
std::make_shared<AsyncNameResolver>(family
#ifdef HAVE_ARES_ADDR_NODE
,
e->getAsyncDNSServers()
#endif // HAVE_ARES_ADDR_NODE
);
std::make_shared<AsyncNameResolver>(family, servers_);
asyncNameResolver_[numResolver_]->resolve(hostname);
setNameResolverCheck(numResolver_, e, command);
}
@ -222,6 +217,7 @@ void configureAsyncNameResolverMan(AsyncNameResolverMan* asyncNameResolverMan,
if (!net::getIPv6AddrConfigured() || option->getAsBool(PREF_DISABLE_IPV6)) {
asyncNameResolverMan->setIPv6(false);
}
asyncNameResolverMan->setServers(option->get(PREF_ASYNC_DNS_SERVER));
}
} // namespace aria2

View file

@ -79,6 +79,8 @@ public:
// Resets state. Also removes resolvers from DownloadEngine.
void reset(DownloadEngine* e, Command* command);
void setServers(std::string servers) { servers_ = std::move(servers); }
private:
void startAsyncFamily(const std::string& hostname, int family,
DownloadEngine* e, Command* command);
@ -88,6 +90,7 @@ private:
Command* command);
std::shared_ptr<AsyncNameResolver> asyncNameResolver_[2];
std::string servers_;
size_t numResolver_;
int resolverCheck_;
bool ipv4_;

View file

@ -64,8 +64,8 @@ BitfieldMan::BitfieldMan(int32_t blockLength, int64_t totalLength)
bitfieldLength_ = blocks_ / 8 + (blocks_ % 8 ? 1 : 0);
bitfield_ = new unsigned char[bitfieldLength_];
useBitfield_ = new unsigned char[bitfieldLength_];
memset(bitfield_, 0, bitfieldLength_);
memset(useBitfield_, 0, bitfieldLength_);
std::fill_n(bitfield_, bitfieldLength_, 0);
std::fill_n(useBitfield_, bitfieldLength_, 0);
updateCache();
}
}
@ -85,11 +85,11 @@ BitfieldMan::BitfieldMan(const BitfieldMan& bitfieldMan)
blockLength_(bitfieldMan.blockLength_),
filterEnabled_(bitfieldMan.filterEnabled_)
{
memcpy(bitfield_, bitfieldMan.bitfield_, bitfieldLength_);
memcpy(useBitfield_, bitfieldMan.useBitfield_, bitfieldLength_);
std::copy_n(bitfieldMan.bitfield_, bitfieldLength_, bitfield_);
std::copy_n(bitfieldMan.useBitfield_, bitfieldLength_, useBitfield_);
if (filterEnabled_) {
filterBitfield_ = new unsigned char[bitfieldLength_];
memcpy(filterBitfield_, bitfieldMan.filterBitfield_, bitfieldLength_);
std::copy_n(bitfieldMan.filterBitfield_, bitfieldLength_, filterBitfield_);
}
updateCache();
}
@ -105,16 +105,17 @@ BitfieldMan& BitfieldMan::operator=(const BitfieldMan& bitfieldMan)
delete[] bitfield_;
bitfield_ = new unsigned char[bitfieldLength_];
memcpy(bitfield_, bitfieldMan.bitfield_, bitfieldLength_);
std::copy_n(bitfieldMan.bitfield_, bitfieldLength_, bitfield_);
delete[] useBitfield_;
useBitfield_ = new unsigned char[bitfieldLength_];
memcpy(useBitfield_, bitfieldMan.useBitfield_, bitfieldLength_);
std::copy_n(bitfieldMan.useBitfield_, bitfieldLength_, useBitfield_);
delete[] filterBitfield_;
if (filterEnabled_) {
filterBitfield_ = new unsigned char[bitfieldLength_];
memcpy(filterBitfield_, bitfieldMan.filterBitfield_, bitfieldLength_);
std::copy_n(bitfieldMan.filterBitfield_, bitfieldLength_,
filterBitfield_);
}
else {
filterBitfield_ = nullptr;
@ -662,17 +663,17 @@ bool BitfieldMan::isUseBitSet(size_t index) const
void BitfieldMan::setBitfield(const unsigned char* bitfield,
size_t bitfieldLength)
{
if (bitfieldLength_ != bitfieldLength) {
if (bitfieldLength_ == 0 || bitfieldLength_ != bitfieldLength) {
return;
}
memcpy(bitfield_, bitfield, bitfieldLength_);
memset(useBitfield_, 0, bitfieldLength_);
std::copy_n(bitfield, bitfieldLength_, bitfield_);
std::fill_n(useBitfield_, bitfieldLength_, 0);
updateCache();
}
void BitfieldMan::clearAllBit()
{
memset(bitfield_, 0, bitfieldLength_);
std::fill_n(bitfield_, bitfieldLength_, 0);
updateCache();
}
@ -686,7 +687,7 @@ void BitfieldMan::setAllBit()
void BitfieldMan::clearAllUseBit()
{
memset(useBitfield_, 0, bitfieldLength_);
std::fill_n(useBitfield_, bitfieldLength_, 0);
updateCache();
}
@ -706,7 +707,7 @@ void BitfieldMan::ensureFilterBitfield()
{
if (!filterBitfield_) {
filterBitfield_ = new unsigned char[bitfieldLength_];
memset(filterBitfield_, 0, bitfieldLength_);
std::fill_n(filterBitfield_, bitfieldLength_, 0);
}
}

View file

@ -39,8 +39,7 @@
namespace aria2 {
class BtChokingEvent {
};
class BtChokingEvent {};
} // namespace aria2

View file

@ -72,8 +72,8 @@ void BtLeecherStateChoke::PeerEntry::swap(PeerEntry& c)
swap(regularUnchoker_, c.regularUnchoker_);
}
BtLeecherStateChoke::PeerEntry& BtLeecherStateChoke::PeerEntry::
operator=(const PeerEntry& c)
BtLeecherStateChoke::PeerEntry&
BtLeecherStateChoke::PeerEntry::operator=(const PeerEntry& c)
{
if (this != &c) {
peer_ = c.peer_;
@ -130,8 +130,8 @@ void swap(BtLeecherStateChoke::PeerEntry& a, BtLeecherStateChoke::PeerEntry& b)
a.swap(b);
}
bool BtLeecherStateChoke::PeerFilter::
operator()(const PeerEntry& peerEntry) const
bool BtLeecherStateChoke::PeerFilter::operator()(
const PeerEntry& peerEntry) const
{
return peerEntry.getPeer()->amChoking() == amChoking_ &&
peerEntry.getPeer()->peerInterested() == peerInterested_;

View file

@ -79,8 +79,8 @@ void BtSeederStateChoke::PeerEntry::swap(PeerEntry& c)
swap(uploadSpeed_, c.uploadSpeed_);
}
BtSeederStateChoke::PeerEntry& BtSeederStateChoke::PeerEntry::
operator=(const PeerEntry& c)
BtSeederStateChoke::PeerEntry&
BtSeederStateChoke::PeerEntry::operator=(const PeerEntry& c)
{
if (this != &c) {
peer_ = c.peer_;

View file

@ -86,7 +86,9 @@ int BufferedFile::onClose()
#else // __MINGW32__
_commit(fileno(fp_));
#endif // __MINGW32__
rv = fclose(fp_);
if (fp_ != stdin && fp_ != stderr) {
rv = fclose(fp_);
}
fp_ = nullptr;
}
return rv;

View file

@ -49,7 +49,7 @@ private:
void clear();
public:
ByteArrayDiskWriter(size_t maxLength = 5_m);
ByteArrayDiskWriter(size_t maxLength = 15_m);
virtual ~ByteArrayDiskWriter();
virtual void initAndOpenFile(int64_t totalLength = 0) CXX11_OVERRIDE;

View file

@ -45,7 +45,7 @@
namespace aria2 {
class SizeFormatter : public std::unary_function<int64_t, std::string> {
class SizeFormatter {
protected:
virtual std::string format(int64_t size) const = 0;

View file

@ -270,23 +270,23 @@ Context::Context(bool standalone, int argc, char** argv, const KeyVals& options)
}
else
#endif // ENABLE_METALINK
if (!op->blank(PREF_INPUT_FILE)) {
if (op->getAsBool(PREF_DEFERRED_INPUT)) {
uriListParser = openUriListParser(op->get(PREF_INPUT_FILE));
if (!op->blank(PREF_INPUT_FILE)) {
if (op->getAsBool(PREF_DEFERRED_INPUT)) {
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 {
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
// command-line. If they are left, because op is used as a template

View file

@ -352,7 +352,7 @@ public:
} // namespace
namespace {
class OrderByPathDepthDesc : public std::binary_function<Cookie, Cookie, bool> {
class OrderByPathDepthDesc {
public:
bool operator()(const CookiePathDivider& lhs,
const CookiePathDivider& rhs) const

View file

@ -57,9 +57,9 @@ DHTPeerAnnounceStorage::DHTPeerAnnounceStorage()
{
}
bool DHTPeerAnnounceStorage::InfoHashLess::
operator()(const std::shared_ptr<DHTPeerAnnounceEntry>& lhs,
const std::shared_ptr<DHTPeerAnnounceEntry>& rhs) const
bool DHTPeerAnnounceStorage::InfoHashLess::operator()(
const std::shared_ptr<DHTPeerAnnounceEntry>& lhs,
const std::shared_ptr<DHTPeerAnnounceEntry>& rhs) const
{
return memcmp(lhs->getInfoHash(), rhs->getInfoHash(), DHT_ID_LENGTH) < 0;
}

View file

@ -196,8 +196,8 @@ void DHTRoutingTableDeserializer::deserialize(const std::string& filename)
nodes.push_back(node);
}
localNode_ = localNode;
nodes_ = nodes;
localNode_ = std::move(localNode);
nodes_ = std::move(nodes);
A2_LOG_INFO("DHT routing table was loaded successfully");
}

View file

@ -52,7 +52,7 @@ public:
~DHTSetup();
// 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.
std::pair<std::vector<std::unique_ptr<Command>>,
std::vector<std::unique_ptr<Command>>>

View file

@ -36,6 +36,7 @@
#include <cstring>
#include <cstdio>
#include <array>
#include "PieceStorage.h"
#include "Piece.h"
@ -56,6 +57,7 @@
#include "DownloadContext.h"
#include "BufferedFile.h"
#include "SHA1IOFile.h"
#include "BtConstants.h"
#ifdef ENABLE_BITTORRENT
# include "PeerStorage.h"
# include "BtRuntime.h"
@ -263,21 +265,21 @@ void DefaultBtProgressInfoFile::load()
if (version >= 1) {
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));
}
if (infoHashLength > 0) {
auto savedInfoHash = make_unique<unsigned char[]>((size_t)infoHashLength);
READ_CHECK(fp, savedInfoHash.get(), infoHashLength);
std::array<unsigned char, INFO_HASH_LENGTH> savedInfoHash;
READ_CHECK(fp, savedInfoHash.data(), infoHashLength);
#ifdef ENABLE_BITTORRENT
if (infoHashCheckEnabled) {
const unsigned char* infoHash = bittorrent::getInfoHash(dctx_);
if (infoHashLength != INFO_HASH_LENGTH ||
memcmp(savedInfoHash.get(), infoHash, INFO_HASH_LENGTH) != 0) {
if (memcmp(savedInfoHash.data(), infoHash, INFO_HASH_LENGTH) != 0) {
throw DL_ABORT_EX(
fmt("info hash mismatch. expected: %s, actual: %s",
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
@ -289,6 +291,10 @@ void DefaultBtProgressInfoFile::load()
pieceLength = ntohl(pieceLength);
}
if (pieceLength == 0) {
throw DL_ABORT_EX("piece length must not be 0");
}
uint64_t totalLength;
READ_CHECK(fp, &totalLength, sizeof(totalLength));
if (version >= 1) {

View file

@ -115,7 +115,7 @@ public:
virtual void writeCache(const WrDiskCacheEntry* entry) = 0;
// Force physical write of data from OS buffer cache.
virtual void flushOSBuffers() {};
virtual void flushOSBuffers(){};
void setFileAllocationMethod(FileAllocationMethod method)
{

View file

@ -62,7 +62,7 @@ public:
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.
*/
virtual void openExistingFile(int64_t totalLength = 0) = 0;

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