diff -Nru axel-2.17.3/ABOUT-NLS axel-2.17.5/ABOUT-NLS --- axel-2.17.3/ABOUT-NLS 2019-05-20 16:59:00.000000000 +0000 +++ axel-2.17.5/ABOUT-NLS 1970-01-01 00:00:00.000000000 +0000 @@ -1,1327 +0,0 @@ -1 Notes on the Free Translation Project -*************************************** - -Free software is going international! The Free Translation Project is -a way to get maintainers of free software, translators, and users all -together, so that free software will gradually become able to speak many -languages. A few packages already provide translations for their -messages. - - If you found this `ABOUT-NLS' file inside a distribution, you may -assume that the distributed package does use GNU `gettext' internally, -itself available at your nearest GNU archive site. But you do _not_ -need to install GNU `gettext' prior to configuring, installing or using -this package with messages translated. - - Installers will find here some useful hints. These notes also -explain how users should proceed for getting the programs to use the -available translations. They tell how people wanting to contribute and -work on translations can contact the appropriate team. - - When reporting bugs in the `intl/' directory or bugs which may be -related to internationalization, you should tell about the version of -`gettext' which is used. The information can be found in the -`intl/VERSION' file, in internationalized packages. - -1.1 Quick configuration advice -============================== - -If you want to exploit the full power of internationalization, you -should configure it using - - ./configure --with-included-gettext - -to force usage of internationalizing routines provided within this -package, despite the existence of internationalizing capabilities in the -operating system where this package is being installed. So far, only -the `gettext' implementation in the GNU C library version 2 provides as -many features (such as locale alias, message inheritance, automatic -charset conversion or plural form handling) as the implementation here. -It is also not possible to offer this additional functionality on top -of a `catgets' implementation. Future versions of GNU `gettext' will -very likely convey even more functionality. So it might be a good idea -to change to GNU `gettext' as soon as possible. - - So you need _not_ provide this option if you are using GNU libc 2 or -you have installed a recent copy of the GNU gettext package with the -included `libintl'. - -1.2 INSTALL Matters -=================== - -Some packages are "localizable" when properly installed; the programs -they contain can be made to speak your own native language. Most such -packages use GNU `gettext'. Other packages have their own ways to -internationalization, predating GNU `gettext'. - - By default, this package will be installed to allow translation of -messages. It will automatically detect whether the system already -provides the GNU `gettext' functions. If not, the included GNU -`gettext' library will be used. This library is wholly contained -within this package, usually in the `intl/' subdirectory, so prior -installation of the GNU `gettext' package is _not_ required. -Installers may use special options at configuration time for changing -the default behaviour. The commands: - - ./configure --with-included-gettext - ./configure --disable-nls - -will, respectively, bypass any pre-existing `gettext' to use the -internationalizing routines provided within this package, or else, -_totally_ disable translation of messages. - - When you already have GNU `gettext' installed on your system and run -configure without an option for your new package, `configure' will -probably detect the previously built and installed `libintl.a' file and -will decide to use this. This might not be desirable. You should use -the more recent version of the GNU `gettext' library. I.e. if the file -`intl/VERSION' shows that the library which comes with this package is -more recent, you should use - - ./configure --with-included-gettext - -to prevent auto-detection. - - The configuration process will not test for the `catgets' function -and therefore it will not be used. The reason is that even an -emulation of `gettext' on top of `catgets' could not provide all the -extensions of the GNU `gettext' library. - - Internationalized packages usually have many `po/LL.po' files, where -LL gives an ISO 639 two-letter code identifying the language. Unless -translations have been forbidden at `configure' time by using the -`--disable-nls' switch, all available translations are installed -together with the package. However, the environment variable `LINGUAS' -may be set, prior to configuration, to limit the installed set. -`LINGUAS' should then contain a space separated list of two-letter -codes, stating which languages are allowed. - -1.3 Using This Package -====================== - -As a user, if your language has been installed for this package, you -only have to set the `LANG' environment variable to the appropriate -`LL_CC' combination. If you happen to have the `LC_ALL' or some other -`LC_xxx' environment variables set, you should unset them before -setting `LANG', otherwise the setting of `LANG' will not have the -desired effect. Here `LL' is an ISO 639 two-letter language code, and -`CC' is an ISO 3166 two-letter country code. For example, let's -suppose that you speak German and live in Germany. At the shell -prompt, merely execute `setenv LANG de_DE' (in `csh'), -`export LANG; LANG=de_DE' (in `sh') or `export LANG=de_DE' (in `bash'). -This can be done from your `.login' or `.profile' file, once and for -all. - - You might think that the country code specification is redundant. -But in fact, some languages have dialects in different countries. For -example, `de_AT' is used for Austria, and `pt_BR' for Brazil. The -country code serves to distinguish the dialects. - - The locale naming convention of `LL_CC', with `LL' denoting the -language and `CC' denoting the country, is the one use on systems based -on GNU libc. On other systems, some variations of this scheme are -used, such as `LL' or `LL_CC.ENCODING'. You can get the list of -locales supported by your system for your language by running the -command `locale -a | grep '^LL''. - - Not all programs have translations for all languages. By default, an -English message is shown in place of a nonexistent translation. If you -understand other languages, you can set up a priority list of languages. -This is done through a different environment variable, called -`LANGUAGE'. GNU `gettext' gives preference to `LANGUAGE' over `LANG' -for the purpose of message handling, but you still need to have `LANG' -set to the primary language; this is required by other parts of the -system libraries. For example, some Swedish users who would rather -read translations in German than English for when Swedish is not -available, set `LANGUAGE' to `sv:de' while leaving `LANG' to `sv_SE'. - - Special advice for Norwegian users: The language code for Norwegian -bokma*l changed from `no' to `nb' recently (in 2003). During the -transition period, while some message catalogs for this language are -installed under `nb' and some older ones under `no', it's recommended -for Norwegian users to set `LANGUAGE' to `nb:no' so that both newer and -older translations are used. - - In the `LANGUAGE' environment variable, but not in the `LANG' -environment variable, `LL_CC' combinations can be abbreviated as `LL' -to denote the language's main dialect. For example, `de' is equivalent -to `de_DE' (German as spoken in Germany), and `pt' to `pt_PT' -(Portuguese as spoken in Portugal) in this context. - -1.4 Translating Teams -===================== - -For the Free Translation Project to be a success, we need interested -people who like their own language and write it well, and who are also -able to synergize with other translators speaking the same language. -Each translation team has its own mailing list. The up-to-date list of -teams can be found at the Free Translation Project's homepage, -`http://translationproject.org/', in the "Teams" area. - - If you'd like to volunteer to _work_ at translating messages, you -should become a member of the translating team for your own language. -The subscribing address is _not_ the same as the list itself, it has -`-request' appended. For example, speakers of Swedish can send a -message to `sv-request@li.org', having this message body: - - subscribe - - Keep in mind that team members are expected to participate -_actively_ in translations, or at solving translational difficulties, -rather than merely lurking around. If your team does not exist yet and -you want to start one, or if you are unsure about what to do or how to -get started, please write to `coordinator@translationproject.org' to -reach the coordinator for all translator teams. - - The English team is special. It works at improving and uniformizing -the terminology in use. Proven linguistic skills are praised more than -programming skills, here. - -1.5 Available Packages -====================== - -Languages are not equally supported in all packages. The following -matrix shows the current state of internationalization, as of May 2010. -The matrix shows, in regard of each package, for which languages PO -files have been submitted to translation coordination, with a -translation percentage of at least 50%. - - Ready PO files af am ar as ast az be be@latin bg bn_IN bs ca crh - +---------------------------------------------------+ - a2ps | [] [] | - aegis | | - ant-phone | | - anubis | | - aspell | [] [] | - bash | | - bfd | | - bibshelf | [] | - binutils | | - bison | | - bison-runtime | [] | - bluez-pin | [] [] | - bombono-dvd | | - buzztard | | - cflow | | - clisp | | - coreutils | [] [] | - cpio | | - cppi | | - cpplib | [] | - cryptsetup | | - dfarc | | - dialog | [] [] | - dico | | - diffutils | [] | - dink | | - doodle | | - e2fsprogs | [] | - enscript | [] | - exif | | - fetchmail | [] | - findutils | [] | - flex | [] | - freedink | | - gas | | - gawk | [] [] | - gcal | [] | - gcc | | - gettext-examples | [] [] [] [] | - gettext-runtime | [] [] [] | - gettext-tools | [] [] | - gip | [] | - gjay | | - gliv | [] | - glunarclock | [] [] | - gnubiff | | - gnucash | [] | - gnuedu | | - gnulib | | - gnunet | | - gnunet-gtk | | - gnutls | | - gold | | - gpe-aerial | | - gpe-beam | | - gpe-bluetooth | | - gpe-calendar | | - gpe-clock | [] | - gpe-conf | | - gpe-contacts | | - gpe-edit | | - gpe-filemanager | | - gpe-go | | - gpe-login | | - gpe-ownerinfo | [] | - gpe-package | | - gpe-sketchbook | | - gpe-su | [] | - gpe-taskmanager | [] | - gpe-timesheet | [] | - gpe-today | [] | - gpe-todo | | - gphoto2 | | - gprof | [] | - gpsdrive | | - gramadoir | | - grep | | - grub | [] [] | - gsasl | | - gss | | - gst-plugins-bad | [] | - gst-plugins-base | [] | - gst-plugins-good | [] | - gst-plugins-ugly | [] | - gstreamer | [] [] [] | - gtick | | - gtkam | [] | - gtkorphan | [] | - gtkspell | [] [] [] | - gutenprint | | - hello | [] | - help2man | | - hylafax | | - idutils | | - indent | [] [] | - iso_15924 | | - iso_3166 | [] [] [] [] [] [] [] [] | - iso_3166_2 | | - iso_4217 | | - iso_639 | [] [] [] [] [] | - iso_639_3 | [] | - jwhois | | - kbd | | - keytouch | [] | - keytouch-editor | | - keytouch-keyboa... | [] | - klavaro | [] | - latrine | | - ld | [] | - leafpad | [] [] | - libc | [] [] | - libexif | () | - libextractor | | - libgnutls | | - libgpewidget | | - libgpg-error | | - libgphoto2 | | - libgphoto2_port | | - libgsasl | | - libiconv | [] | - libidn | | - lifelines | | - liferea | [] [] | - lilypond | | - linkdr | [] | - lordsawar | | - lprng | | - lynx | [] | - m4 | | - mailfromd | | - mailutils | | - make | | - man-db | | - man-db-manpages | | - minicom | | - mkisofs | | - myserver | | - nano | [] [] | - opcodes | | - parted | | - pies | | - popt | | - psmisc | | - pspp | [] | - pwdutils | | - radius | [] | - recode | [] [] | - rosegarden | | - rpm | | - rush | | - sarg | | - screem | | - scrollkeeper | [] [] [] | - sed | [] [] | - sharutils | [] [] | - shishi | | - skencil | | - solfege | | - solfege-manual | | - soundtracker | | - sp | | - sysstat | | - tar | [] | - texinfo | | - tin | | - unicode-han-tra... | | - unicode-transla... | | - util-linux-ng | [] | - vice | | - vmm | | - vorbis-tools | | - wastesedge | | - wdiff | | - wget | [] [] | - wyslij-po | | - xchat | [] [] [] [] | - xdg-user-dirs | [] [] [] [] [] [] [] [] [] | - xkeyboard-config | [] [] [] | - +---------------------------------------------------+ - af am ar as ast az be be@latin bg bn_IN bs ca crh - 6 0 2 3 19 1 11 3 28 3 1 38 5 - - cs da de el en en_GB en_ZA eo es et eu fa fi - +-------------------------------------------------+ - a2ps | [] [] [] [] [] [] [] [] | - aegis | [] [] [] | - ant-phone | [] () | - anubis | [] [] [] | - aspell | [] [] [] [] [] | - bash | [] [] [] [] | - bfd | [] [] | - bibshelf | [] [] [] [] | - binutils | [] [] | - bison | [] [] [] | - bison-runtime | [] [] [] [] [] | - bluez-pin | [] [] [] [] [] [] [] | - bombono-dvd | [] [] | - buzztard | [] [] [] | - cflow | [] [] [] | - clisp | [] [] [] [] | - coreutils | [] [] [] [] | - cpio | [] | - cppi | [] | - cpplib | [] [] [] | - cryptsetup | [] | - dfarc | [] [] [] [] | - dialog | [] [] [] [] [] | - dico | | - diffutils | [] [] [] [] [] [] [] | - dink | [] [] [] | - doodle | [] | - e2fsprogs | [] [] [] | - enscript | [] [] [] | - exif | () [] [] [] | - fetchmail | [] [] () [] [] [] | - findutils | [] [] [] [] | - flex | [] [] [] | - freedink | [] [] [] [] | - gas | [] | - gawk | [] [] [] | - gcal | [] | - gcc | [] [] | - gettext-examples | [] [] [] [] [] | - gettext-runtime | [] [] [] [] [] | - gettext-tools | [] [] [] | - gip | [] [] [] [] [] | - gjay | [] [] | - gliv | [] [] [] [] | - glunarclock | [] [] [] | - gnubiff | () | - gnucash | [] () () () () () | - gnuedu | [] [] | - gnulib | [] [] [] | - gnunet | | - gnunet-gtk | [] | - gnutls | [] [] | - gold | [] [] | - gpe-aerial | [] [] [] [] [] | - gpe-beam | [] [] [] [] [] | - gpe-bluetooth | [] [] [] | - gpe-calendar | [] [] | - gpe-clock | [] [] [] [] [] | - gpe-conf | [] [] [] [] | - gpe-contacts | [] [] [] [] | - gpe-edit | [] [] [] | - gpe-filemanager | [] [] [] [] | - gpe-go | [] [] [] [] [] | - gpe-login | [] [] [] | - gpe-ownerinfo | [] [] [] [] [] | - gpe-package | [] [] [] [] | - gpe-sketchbook | [] [] [] [] [] | - gpe-su | [] [] [] [] [] | - gpe-taskmanager | [] [] [] [] [] | - gpe-timesheet | [] [] [] [] [] | - gpe-today | [] [] [] [] [] | - gpe-todo | [] [] [] [] | - gphoto2 | [] [] () [] [] [] [] | - gprof | [] [] [] [] | - gpsdrive | [] [] [] | - gramadoir | [] [] [] | - grep | [] [] | - grub | [] [] [] | - gsasl | [] [] | - gss | [] | - gst-plugins-bad | [] [] [] [] [] [] | - gst-plugins-base | [] [] [] [] [] [] | - gst-plugins-good | [] [] [] [] [] [] [] | - gst-plugins-ugly | [] [] [] [] [] [] [] | - gstreamer | [] [] [] [] [] [] | - gtick | [] () [] [] | - gtkam | [] [] () [] [] | - gtkorphan | [] [] [] [] | - gtkspell | [] [] [] [] [] [] [] [] | - gutenprint | [] [] [] [] | - hello | [] [] [] [] [] | - help2man | [] [] | - hylafax | [] [] | - idutils | [] [] [] | - indent | [] [] [] [] [] [] [] [] | - iso_15924 | [] () [] [] [] | - iso_3166 | [] [] [] () [] [] [] () [] | - iso_3166_2 | () | - iso_4217 | [] [] [] () [] [] [] | - iso_639 | [] [] [] () [] [] [] | - iso_639_3 | | - jwhois | [] [] | - kbd | [] [] [] [] [] | - keytouch | [] [] [] | - keytouch-editor | [] [] [] | - keytouch-keyboa... | [] [] | - klavaro | [] [] [] [] | - latrine | [] () [] | - ld | [] [] [] | - leafpad | [] [] [] [] [] [] [] | - libc | [] [] [] [] [] | - libexif | [] [] () | - libextractor | | - libgnutls | [] | - libgpewidget | [] [] [] | - libgpg-error | [] [] | - libgphoto2 | [] () | - libgphoto2_port | [] () [] | - libgsasl | [] | - libiconv | [] [] [] [] [] [] | - libidn | [] [] [] [] | - lifelines | [] () | - liferea | [] [] [] [] [] | - lilypond | [] [] [] [] | - linkdr | [] [] [] [] | - lordsawar | [] | - lprng | | - lynx | [] [] [] [] | - m4 | [] [] [] [] [] | - mailfromd | | - mailutils | [] | - make | [] [] [] [] | - man-db | | - man-db-manpages | | - minicom | [] [] [] [] [] | - mkisofs | [] | - myserver | | - nano | [] [] [] [] | - opcodes | [] [] [] | - parted | [] [] | - pies | | - popt | [] [] [] [] [] [] | - psmisc | [] [] [] [] | - pspp | [] | - pwdutils | [] | - radius | [] | - recode | [] [] [] [] [] [] [] | - rosegarden | () () () () | - rpm | [] [] [] | - rush | | - sarg | | - screem | | - scrollkeeper | [] [] [] [] [] [] | - sed | [] [] [] [] [] [] [] | - sharutils | [] [] [] [] [] | - shishi | | - skencil | [] () [] | - solfege | [] [] [] [] | - solfege-manual | [] [] | - soundtracker | [] [] [] | - sp | [] | - sysstat | [] [] [] [] | - tar | [] [] [] [] [] | - texinfo | [] [] [] | - tin | [] [] | - unicode-han-tra... | | - unicode-transla... | | - util-linux-ng | [] [] [] [] [] | - vice | () () | - vmm | [] | - vorbis-tools | [] [] | - wastesedge | [] | - wdiff | [] [] [] | - wget | [] [] [] [] | - wyslij-po | [] | - xchat | [] [] [] [] [] [] | - xdg-user-dirs | [] [] [] [] [] [] [] [] [] | - xkeyboard-config | [] [] [] [] [] [] | - +-------------------------------------------------+ - cs da de el en en_GB en_ZA eo es et eu fa fi - 64 105 117 18 1 8 0 28 89 18 19 0 104 - - fr ga gl gu he hi hr hu hy id is it ja ka kn - +------------------------------------------------+ - a2ps | [] [] [] | - aegis | [] [] | - ant-phone | [] [] | - anubis | [] [] [] | - aspell | [] [] [] [] | - bash | [] [] [] | - bfd | [] [] | - bibshelf | [] [] [] [] | - binutils | [] [] | - bison | [] [] [] | - bison-runtime | [] [] [] [] [] | - bluez-pin | [] [] [] [] [] [] [] | - bombono-dvd | | - buzztard | [] | - cflow | [] [] | - clisp | [] | - coreutils | [] [] [] [] [] | - cpio | [] [] [] | - cppi | [] | - cpplib | [] [] | - cryptsetup | [] [] [] | - dfarc | [] [] | - dialog | [] [] [] [] [] [] [] | - dico | | - diffutils | [] [] [] [] [] [] [] [] | - dink | [] | - doodle | [] [] | - e2fsprogs | [] [] | - enscript | [] [] [] [] | - exif | [] [] [] [] [] | - fetchmail | [] [] [] [] | - findutils | [] [] [] [] [] | - flex | [] [] | - freedink | [] [] | - gas | [] [] | - gawk | [] [] [] [] () [] | - gcal | [] | - gcc | [] | - gettext-examples | [] [] [] [] [] [] | - gettext-runtime | [] [] [] [] [] | - gettext-tools | [] [] [] [] | - gip | [] [] [] [] [] | - gjay | | - gliv | () | - glunarclock | [] [] [] | - gnubiff | () [] () | - gnucash | () () () () [] | - gnuedu | [] [] | - gnulib | [] [] [] [] [] | - gnunet | | - gnunet-gtk | [] | - gnutls | [] [] | - gold | [] | - gpe-aerial | [] [] | - gpe-beam | [] [] [] | - gpe-bluetooth | [] [] [] | - gpe-calendar | [] | - gpe-clock | [] [] [] [] | - gpe-conf | [] [] [] | - gpe-contacts | [] [] [] | - gpe-edit | [] [] | - gpe-filemanager | [] [] [] | - gpe-go | [] [] [] [] | - gpe-login | [] [] | - gpe-ownerinfo | [] [] [] [] | - gpe-package | [] [] | - gpe-sketchbook | [] [] [] | - gpe-su | [] [] [] [] [] | - gpe-taskmanager | [] [] [] [] | - gpe-timesheet | [] [] [] [] | - gpe-today | [] [] [] [] [] [] | - gpe-todo | [] [] | - gphoto2 | [] [] [] [] [] | - gprof | [] [] [] | - gpsdrive | [] [] [] | - gramadoir | [] [] [] | - grep | [] | - grub | [] [] [] | - gsasl | [] [] [] [] | - gss | [] [] [] [] | - gst-plugins-bad | [] [] [] [] | - gst-plugins-base | [] [] [] [] [] | - gst-plugins-good | [] [] [] [] [] | - gst-plugins-ugly | [] [] [] [] [] | - gstreamer | [] [] [] [] | - gtick | [] [] [] [] | - gtkam | [] [] [] [] [] | - gtkorphan | [] [] [] | - gtkspell | [] [] [] [] [] [] [] [] | - gutenprint | [] [] [] | - hello | [] [] | - help2man | [] | - hylafax | [] | - idutils | [] [] [] [] [] | - indent | [] [] [] [] [] [] [] | - iso_15924 | () [] [] | - iso_3166 | () [] [] [] [] [] [] [] [] [] [] | - iso_3166_2 | () [] [] [] | - iso_4217 | () [] [] [] [] | - iso_639 | () [] [] [] [] [] [] [] | - iso_639_3 | () [] [] | - jwhois | [] [] [] [] | - kbd | [] [] | - keytouch | [] [] [] [] [] | - keytouch-editor | [] [] [] [] | - keytouch-keyboa... | [] [] [] [] | - klavaro | [] [] | - latrine | [] [] | - ld | [] [] [] | - leafpad | [] [] [] [] [] [] () | - libc | [] [] [] [] | - libexif | | - libextractor | | - libgnutls | [] [] | - libgpewidget | [] [] [] | - libgpg-error | [] [] | - libgphoto2 | [] [] [] | - libgphoto2_port | [] [] [] | - libgsasl | [] [] [] [] | - libiconv | [] [] [] [] [] | - libidn | [] [] [] | - lifelines | () | - liferea | [] [] [] [] | - lilypond | [] | - linkdr | [] [] [] [] | - lordsawar | | - lprng | [] | - lynx | [] [] [] [] [] | - m4 | [] [] [] [] [] | - mailfromd | | - mailutils | [] [] | - make | [] [] [] [] [] [] [] [] | - man-db | [] [] | - man-db-manpages | [] | - minicom | [] [] [] [] | - mkisofs | [] [] [] | - myserver | | - nano | [] [] [] [] [] | - opcodes | [] [] [] | - parted | [] [] [] [] | - pies | | - popt | [] [] [] [] [] [] [] [] | - psmisc | [] [] | - pspp | | - pwdutils | [] [] | - radius | [] [] | - recode | [] [] [] [] [] [] [] | - rosegarden | () () () () | - rpm | [] [] | - rush | | - sarg | [] | - screem | [] [] | - scrollkeeper | [] [] [] | - sed | [] [] [] [] [] [] [] | - sharutils | [] [] [] [] [] [] | - shishi | [] | - skencil | [] | - solfege | [] [] [] | - solfege-manual | [] [] | - soundtracker | [] [] | - sp | [] () | - sysstat | [] [] [] [] | - tar | [] [] [] [] [] [] | - texinfo | [] [] [] [] | - tin | [] | - unicode-han-tra... | | - unicode-transla... | [] [] | - util-linux-ng | [] [] [] [] [] | - vice | () () () | - vmm | [] | - vorbis-tools | [] | - wastesedge | () () | - wdiff | | - wget | [] [] [] [] [] [] [] | - wyslij-po | [] [] | - xchat | [] [] [] [] [] [] [] [] | - xdg-user-dirs | [] [] [] [] [] [] [] [] [] [] [] | - xkeyboard-config | [] [] [] [] | - +------------------------------------------------+ - fr ga gl gu he hi hr hu hy id is it ja ka kn - 121 53 20 4 8 2 5 53 2 120 5 83 66 0 4 - - ko ku ky lg lt lv mk ml mn mr ms mt nb nds ne - +-----------------------------------------------+ - a2ps | [] | - aegis | | - ant-phone | | - anubis | [] [] | - aspell | [] | - bash | | - bfd | | - bibshelf | [] [] | - binutils | | - bison | [] | - bison-runtime | [] [] [] [] [] | - bluez-pin | [] [] [] [] [] | - bombono-dvd | | - buzztard | | - cflow | | - clisp | | - coreutils | [] | - cpio | | - cppi | | - cpplib | | - cryptsetup | | - dfarc | [] | - dialog | [] [] [] [] [] | - dico | | - diffutils | [] [] | - dink | | - doodle | | - e2fsprogs | | - enscript | | - exif | [] | - fetchmail | | - findutils | | - flex | | - freedink | [] | - gas | | - gawk | | - gcal | | - gcc | | - gettext-examples | [] [] [] [] | - gettext-runtime | [] | - gettext-tools | [] | - gip | [] [] | - gjay | | - gliv | | - glunarclock | [] | - gnubiff | | - gnucash | () () () () | - gnuedu | | - gnulib | | - gnunet | | - gnunet-gtk | | - gnutls | [] | - gold | | - gpe-aerial | [] | - gpe-beam | [] | - gpe-bluetooth | [] [] | - gpe-calendar | [] | - gpe-clock | [] [] [] [] [] | - gpe-conf | [] [] | - gpe-contacts | [] [] | - gpe-edit | [] | - gpe-filemanager | [] [] | - gpe-go | [] [] [] | - gpe-login | [] | - gpe-ownerinfo | [] [] | - gpe-package | [] [] | - gpe-sketchbook | [] [] | - gpe-su | [] [] [] [] [] [] | - gpe-taskmanager | [] [] [] [] [] [] | - gpe-timesheet | [] [] | - gpe-today | [] [] [] [] | - gpe-todo | [] [] | - gphoto2 | | - gprof | [] | - gpsdrive | | - gramadoir | | - grep | | - grub | | - gsasl | | - gss | | - gst-plugins-bad | [] [] | - gst-plugins-base | [] [] | - gst-plugins-good | [] [] | - gst-plugins-ugly | [] [] [] [] [] | - gstreamer | | - gtick | | - gtkam | [] | - gtkorphan | [] [] | - gtkspell | [] [] [] [] [] [] [] | - gutenprint | | - hello | [] [] [] | - help2man | | - hylafax | | - idutils | | - indent | | - iso_15924 | [] [] | - iso_3166 | [] [] () [] [] [] [] [] | - iso_3166_2 | | - iso_4217 | [] [] | - iso_639 | [] [] | - iso_639_3 | [] | - jwhois | [] | - kbd | | - keytouch | [] | - keytouch-editor | [] | - keytouch-keyboa... | [] | - klavaro | [] | - latrine | [] | - ld | | - leafpad | [] [] [] | - libc | [] | - libexif | | - libextractor | | - libgnutls | [] | - libgpewidget | [] [] | - libgpg-error | | - libgphoto2 | | - libgphoto2_port | | - libgsasl | | - libiconv | | - libidn | | - lifelines | | - liferea | | - lilypond | | - linkdr | | - lordsawar | | - lprng | | - lynx | | - m4 | | - mailfromd | | - mailutils | | - make | [] | - man-db | | - man-db-manpages | | - minicom | [] | - mkisofs | | - myserver | | - nano | [] [] | - opcodes | | - parted | | - pies | | - popt | [] [] [] | - psmisc | | - pspp | | - pwdutils | | - radius | | - recode | | - rosegarden | | - rpm | | - rush | | - sarg | | - screem | | - scrollkeeper | [] [] | - sed | | - sharutils | | - shishi | | - skencil | | - solfege | [] | - solfege-manual | | - soundtracker | | - sp | | - sysstat | [] | - tar | [] | - texinfo | [] | - tin | | - unicode-han-tra... | | - unicode-transla... | | - util-linux-ng | | - vice | | - vmm | | - vorbis-tools | | - wastesedge | | - wdiff | | - wget | [] | - wyslij-po | | - xchat | [] [] [] | - xdg-user-dirs | [] [] [] [] [] [] [] [] | - xkeyboard-config | [] [] [] | - +-----------------------------------------------+ - ko ku ky lg lt lv mk ml mn mr ms mt nb nds ne - 20 5 10 1 12 48 4 2 2 4 24 10 19 3 1 - - nl nn or pa pl ps pt pt_BR ro ru rw sk sl sq sr - +---------------------------------------------------+ - a2ps | [] [] [] [] [] [] [] [] | - aegis | [] [] [] | - ant-phone | [] [] | - anubis | [] [] [] | - aspell | [] [] [] [] [] | - bash | [] [] | - bfd | [] | - bibshelf | [] [] | - binutils | [] [] | - bison | [] [] [] | - bison-runtime | [] [] [] [] [] [] [] | - bluez-pin | [] [] [] [] [] [] [] [] | - bombono-dvd | [] () | - buzztard | [] [] | - cflow | [] | - clisp | [] [] | - coreutils | [] [] [] [] [] [] | - cpio | [] [] [] | - cppi | [] | - cpplib | [] | - cryptsetup | [] | - dfarc | [] | - dialog | [] [] [] [] | - dico | [] | - diffutils | [] [] [] [] [] [] | - dink | () | - doodle | [] [] | - e2fsprogs | [] [] | - enscript | [] [] [] [] [] | - exif | [] [] [] () [] | - fetchmail | [] [] [] [] | - findutils | [] [] [] [] [] | - flex | [] [] [] [] [] | - freedink | [] [] | - gas | | - gawk | [] [] [] [] | - gcal | | - gcc | [] | - gettext-examples | [] [] [] [] [] [] [] [] | - gettext-runtime | [] [] [] [] [] [] [] [] [] | - gettext-tools | [] [] [] [] [] [] | - gip | [] [] [] [] [] | - gjay | | - gliv | [] [] [] [] [] [] | - glunarclock | [] [] [] [] [] | - gnubiff | [] () | - gnucash | [] () () () | - gnuedu | [] | - gnulib | [] [] [] [] | - gnunet | | - gnunet-gtk | | - gnutls | [] [] | - gold | | - gpe-aerial | [] [] [] [] [] [] [] | - gpe-beam | [] [] [] [] [] [] [] | - gpe-bluetooth | [] [] | - gpe-calendar | [] [] [] [] | - gpe-clock | [] [] [] [] [] [] [] [] | - gpe-conf | [] [] [] [] [] [] [] | - gpe-contacts | [] [] [] [] [] | - gpe-edit | [] [] [] | - gpe-filemanager | [] [] [] | - gpe-go | [] [] [] [] [] [] [] [] | - gpe-login | [] [] | - gpe-ownerinfo | [] [] [] [] [] [] [] [] | - gpe-package | [] [] | - gpe-sketchbook | [] [] [] [] [] [] [] | - gpe-su | [] [] [] [] [] [] [] [] | - gpe-taskmanager | [] [] [] [] [] [] [] [] | - gpe-timesheet | [] [] [] [] [] [] [] [] | - gpe-today | [] [] [] [] [] [] [] [] | - gpe-todo | [] [] [] [] [] | - gphoto2 | [] [] [] [] [] [] [] [] | - gprof | [] [] [] | - gpsdrive | [] [] | - gramadoir | [] [] | - grep | [] [] [] [] | - grub | [] [] [] | - gsasl | [] [] [] [] | - gss | [] [] [] | - gst-plugins-bad | [] [] [] [] [] | - gst-plugins-base | [] [] [] [] [] | - gst-plugins-good | [] [] [] [] [] | - gst-plugins-ugly | [] [] [] [] [] [] | - gstreamer | [] [] [] [] [] | - gtick | [] [] [] | - gtkam | [] [] [] [] [] [] | - gtkorphan | [] | - gtkspell | [] [] [] [] [] [] [] [] [] [] | - gutenprint | [] [] | - hello | [] [] [] [] | - help2man | [] [] | - hylafax | [] | - idutils | [] [] [] [] [] | - indent | [] [] [] [] [] [] [] | - iso_15924 | [] [] [] [] | - iso_3166 | [] [] [] [] [] () [] [] [] [] [] [] [] [] | - iso_3166_2 | [] [] [] | - iso_4217 | [] [] [] [] [] [] [] [] | - iso_639 | [] [] [] [] [] [] [] [] [] | - iso_639_3 | [] [] | - jwhois | [] [] [] [] | - kbd | [] [] [] | - keytouch | [] [] [] | - keytouch-editor | [] [] [] | - keytouch-keyboa... | [] [] [] | - klavaro | [] [] | - latrine | [] [] | - ld | | - leafpad | [] [] [] [] [] [] [] [] [] | - libc | [] [] [] [] | - libexif | [] [] () [] | - libextractor | | - libgnutls | [] [] | - libgpewidget | [] [] [] | - libgpg-error | [] [] | - libgphoto2 | [] [] | - libgphoto2_port | [] [] [] [] | - libgsasl | [] [] [] [] [] | - libiconv | [] [] [] [] [] | - libidn | [] [] | - lifelines | [] [] | - liferea | [] [] [] [] [] () () [] | - lilypond | [] | - linkdr | [] [] [] | - lordsawar | | - lprng | [] | - lynx | [] [] [] | - m4 | [] [] [] [] [] | - mailfromd | [] | - mailutils | [] | - make | [] [] [] [] | - man-db | [] [] [] | - man-db-manpages | [] [] [] | - minicom | [] [] [] [] | - mkisofs | [] [] [] | - myserver | | - nano | [] [] [] [] | - opcodes | [] [] | - parted | [] [] [] [] | - pies | [] | - popt | [] [] [] [] | - psmisc | [] [] [] | - pspp | [] [] | - pwdutils | [] | - radius | [] [] [] | - recode | [] [] [] [] [] [] [] [] | - rosegarden | () () | - rpm | [] [] [] | - rush | [] [] | - sarg | | - screem | | - scrollkeeper | [] [] [] [] [] [] [] [] | - sed | [] [] [] [] [] [] [] [] [] | - sharutils | [] [] [] [] | - shishi | [] | - skencil | [] [] | - solfege | [] [] [] [] | - solfege-manual | [] [] [] | - soundtracker | [] | - sp | | - sysstat | [] [] [] [] | - tar | [] [] [] [] | - texinfo | [] [] [] [] | - tin | [] | - unicode-han-tra... | | - unicode-transla... | | - util-linux-ng | [] [] [] [] [] | - vice | [] | - vmm | [] | - vorbis-tools | [] [] | - wastesedge | [] | - wdiff | [] [] | - wget | [] [] [] [] [] [] [] | - wyslij-po | [] [] [] | - xchat | [] [] [] [] [] [] [] [] [] | - xdg-user-dirs | [] [] [] [] [] [] [] [] [] [] [] [] [] [] | - xkeyboard-config | [] [] [] [] [] | - +---------------------------------------------------+ - nl nn or pa pl ps pt pt_BR ro ru rw sk sl sq sr - 135 10 4 7 105 1 29 61 47 91 3 55 47 8 37 - - sv sw ta te tg th tr uk vi wa zh_CN zh_HK zh_TW - +---------------------------------------------------+ - a2ps | [] [] [] [] [] | 27 - aegis | [] | 9 - ant-phone | [] [] [] [] | 9 - anubis | [] [] [] [] | 15 - aspell | [] [] [] | 20 - bash | [] [] | 11 - bfd | [] | 6 - bibshelf | [] [] [] | 16 - binutils | [] [] | 8 - bison | [] [] | 12 - bison-runtime | [] [] [] [] [] [] | 29 - bluez-pin | [] [] [] [] [] [] [] [] | 37 - bombono-dvd | [] | 4 - buzztard | [] | 7 - cflow | [] [] [] | 9 - clisp | | 10 - coreutils | [] [] [] [] | 22 - cpio | [] [] [] [] [] [] | 13 - cppi | [] [] | 5 - cpplib | [] [] [] [] [] [] | 13 - cryptsetup | [] [] | 7 - dfarc | [] | 9 - dialog | [] [] [] [] [] [] [] | 30 - dico | [] | 2 - diffutils | [] [] [] [] [] [] | 30 - dink | | 4 - doodle | [] [] | 7 - e2fsprogs | [] [] [] | 11 - enscript | [] [] [] [] | 17 - exif | [] [] [] | 16 - fetchmail | [] [] [] | 17 - findutils | [] [] [] [] [] | 20 - flex | [] [] [] [] | 15 - freedink | [] | 10 - gas | [] | 4 - gawk | [] [] [] [] | 18 - gcal | [] [] | 5 - gcc | [] [] [] | 7 - gettext-examples | [] [] [] [] [] [] [] | 34 - gettext-runtime | [] [] [] [] [] [] [] | 30 - gettext-tools | [] [] [] [] [] [] | 22 - gip | [] [] [] [] | 22 - gjay | [] | 3 - gliv | [] [] [] | 14 - glunarclock | [] [] [] [] [] | 19 - gnubiff | [] [] | 4 - gnucash | () [] () () | 9 - gnuedu | [] [] | 7 - gnulib | [] [] [] [] | 16 - gnunet | [] | 1 - gnunet-gtk | [] [] [] | 5 - gnutls | [] [] [] | 10 - gold | [] | 4 - gpe-aerial | [] [] [] | 18 - gpe-beam | [] [] [] | 19 - gpe-bluetooth | [] [] [] | 13 - gpe-calendar | [] [] [] [] | 12 - gpe-clock | [] [] [] [] [] | 28 - gpe-conf | [] [] [] [] | 20 - gpe-contacts | [] [] [] | 17 - gpe-edit | [] [] [] | 12 - gpe-filemanager | [] [] [] [] | 16 - gpe-go | [] [] [] [] [] | 25 - gpe-login | [] [] [] | 11 - gpe-ownerinfo | [] [] [] [] [] | 25 - gpe-package | [] [] [] | 13 - gpe-sketchbook | [] [] [] | 20 - gpe-su | [] [] [] [] [] | 30 - gpe-taskmanager | [] [] [] [] [] | 29 - gpe-timesheet | [] [] [] [] [] | 25 - gpe-today | [] [] [] [] [] [] | 30 - gpe-todo | [] [] [] [] | 17 - gphoto2 | [] [] [] [] [] | 24 - gprof | [] [] [] | 15 - gpsdrive | [] [] [] | 11 - gramadoir | [] [] [] | 11 - grep | [] [] [] | 10 - grub | [] [] [] | 14 - gsasl | [] [] [] [] | 14 - gss | [] [] [] | 11 - gst-plugins-bad | [] [] [] [] | 22 - gst-plugins-base | [] [] [] [] [] | 24 - gst-plugins-good | [] [] [] [] [] | 25 - gst-plugins-ugly | [] [] [] [] [] | 29 - gstreamer | [] [] [] [] | 22 - gtick | [] [] [] | 13 - gtkam | [] [] [] | 20 - gtkorphan | [] [] [] | 14 - gtkspell | [] [] [] [] [] [] [] [] [] | 45 - gutenprint | [] | 10 - hello | [] [] [] [] [] [] | 21 - help2man | [] [] | 7 - hylafax | [] | 5 - idutils | [] [] [] [] | 17 - indent | [] [] [] [] [] [] | 30 - iso_15924 | () [] () [] [] | 16 - iso_3166 | [] [] () [] [] () [] [] [] () | 53 - iso_3166_2 | () [] () [] | 9 - iso_4217 | [] () [] [] () [] [] | 26 - iso_639 | [] [] [] () [] () [] [] [] [] | 38 - iso_639_3 | [] () | 8 - jwhois | [] [] [] [] [] | 16 - kbd | [] [] [] [] [] | 15 - keytouch | [] [] [] | 16 - keytouch-editor | [] [] [] | 14 - keytouch-keyboa... | [] [] [] | 14 - klavaro | [] | 11 - latrine | [] [] [] | 10 - ld | [] [] [] [] | 11 - leafpad | [] [] [] [] [] [] | 33 - libc | [] [] [] [] [] | 21 - libexif | [] () | 6 - libextractor | [] | 1 - libgnutls | [] [] [] | 9 - libgpewidget | [] [] [] | 14 - libgpg-error | [] [] [] | 9 - libgphoto2 | [] [] | 8 - libgphoto2_port | [] [] [] [] | 13 - libgsasl | [] [] [] | 13 - libiconv | [] [] [] [] | 21 - libidn | () [] [] | 11 - lifelines | [] | 4 - liferea | [] [] [] | 21 - lilypond | [] | 7 - linkdr | [] [] [] [] [] | 17 - lordsawar | | 1 - lprng | [] | 3 - lynx | [] [] [] [] | 17 - m4 | [] [] [] [] | 19 - mailfromd | [] [] | 3 - mailutils | [] | 5 - make | [] [] [] [] | 21 - man-db | [] [] [] | 8 - man-db-manpages | | 4 - minicom | [] [] | 16 - mkisofs | [] [] | 9 - myserver | | 0 - nano | [] [] [] [] | 21 - opcodes | [] [] [] | 11 - parted | [] [] [] [] [] | 15 - pies | [] [] | 3 - popt | [] [] [] [] [] [] | 27 - psmisc | [] [] | 11 - pspp | | 4 - pwdutils | [] [] | 6 - radius | [] [] | 9 - recode | [] [] [] [] | 28 - rosegarden | () | 0 - rpm | [] [] [] | 11 - rush | [] [] | 4 - sarg | | 1 - screem | [] | 3 - scrollkeeper | [] [] [] [] [] | 27 - sed | [] [] [] [] [] | 30 - sharutils | [] [] [] [] [] | 22 - shishi | [] | 3 - skencil | [] [] | 7 - solfege | [] [] [] [] | 16 - solfege-manual | [] | 8 - soundtracker | [] [] [] | 9 - sp | [] | 3 - sysstat | [] [] | 15 - tar | [] [] [] [] [] [] | 23 - texinfo | [] [] [] [] | 16 - tin | | 4 - unicode-han-tra... | | 0 - unicode-transla... | | 2 - util-linux-ng | [] [] [] [] | 20 - vice | () () | 1 - vmm | [] | 4 - vorbis-tools | [] | 6 - wastesedge | | 2 - wdiff | [] [] | 7 - wget | [] [] [] [] [] | 26 - wyslij-po | [] [] | 8 - xchat | [] [] [] [] [] [] | 36 - xdg-user-dirs | [] [] [] [] [] [] [] [] [] | 60 - xkeyboard-config | [] [] [] [] | 25 - +---------------------------------------------------+ - 84 teams sv sw ta te tg th tr uk vi wa zh_CN zh_HK zh_TW - 178 domains 119 1 3 2 0 10 66 50 155 17 97 7 41 2610 - - Some counters in the preceding matrix are higher than the number of -visible blocks let us expect. This is because a few extra PO files are -used for implementing regional variants of languages, or language -dialects. - - For a PO file in the matrix above to be effective, the package to -which it applies should also have been internationalized and -distributed as such by its maintainer. There might be an observable -lag between the mere existence a PO file and its wide availability in a -distribution. - - If May 2010 seems to be old, you may fetch a more recent copy of -this `ABOUT-NLS' file on most GNU archive sites. The most up-to-date -matrix with full percentage details can be found at -`http://translationproject.org/extra/matrix.html'. - -1.6 Using `gettext' in new packages -=================================== - -If you are writing a freely available program and want to -internationalize it you are welcome to use GNU `gettext' in your -package. Of course you have to respect the GNU Library General Public -License which covers the use of the GNU `gettext' library. This means -in particular that even non-free programs can use `libintl' as a shared -library, whereas only free software can use `libintl' as a static -library or use modified versions of `libintl'. - - Once the sources are changed appropriately and the setup can handle -the use of `gettext' the only thing missing are the translations. The -Free Translation Project is also available for packages which are not -developed inside the GNU project. Therefore the information given above -applies also for every other Free Software Project. Contact -`coordinator@translationproject.org' to make the `.pot' files available -to the translation teams. - diff -Nru axel-2.17.3/acinclude.m4 axel-2.17.5/acinclude.m4 --- axel-2.17.3/acinclude.m4 2019-05-20 16:59:00.000000000 +0000 +++ axel-2.17.5/acinclude.m4 2019-07-23 17:53:03.000000000 +0000 @@ -1,10 +1,14 @@ # TODO: we need a true replacement for AC_INIT... +# _AXEL_ntsinc(FILE) - sinclude not to be tracked by automake +# --------------------------------------------------------------------- +m4_define([_AXEL_ntsinc], defn([m4_sinclude])) + # _AXEL_READL(FILE, HARD-DEP?) # --------------------------------------------------------------------- m4_define([_AXEL_READL], [m4_bpatsubst(m4_quote(m4_if([$2],, - [m4_sinclude([$1])], + [_AXEL_ntsinc([$1])], [m4_apply([m4_include], [[$1]])])), [ * ])]) @@ -50,3 +54,7 @@ [-])])) m4_define([AC_PACKAGE_BUGREPORT], [$2]) ]) + + +# MKINSTALLDIRS isn't needed; remove +AC_DEFUN([AM_MKINSTALLDIRS], []) diff -Nru axel-2.17.3/autogen.sh axel-2.17.5/autogen.sh --- axel-2.17.3/autogen.sh 2019-05-20 16:59:00.000000000 +0000 +++ axel-2.17.5/autogen.sh 1970-01-01 00:00:00.000000000 +0000 @@ -1,58 +0,0 @@ -#!/bin/sh - -# autogen.sh with clean option, v0.2 -# Copyright 2016 Joao Eriberto Mota Filho -# -# This file is under BSD-3-Clause license. -# -# Redistribution and use in source and binary forms, with or without -# modification, are permitted provided that the following conditions -# are met: -# 1. Redistributions of source code must retain the above copyright -# notice, this list of conditions and the following disclaimer. -# 2. Redistributions in binary form must reproduce the above copyright -# notice, this list of conditions and the following disclaimer in the -# documentation and/or other materials provided with the distribution. -# 3. Neither the name of the authors nor the names of its contributors -# may be used to endorse or promote products derived from this software -# without specific prior written permission. -# -# THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND -# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -# ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE -# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS -# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) -# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT -# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY -# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF -# SUCH DAMAGE. - - -# Use clean option -if [ "$1" = "clean" -a ! -e Makefile ] -then - echo "Vanishing the code" - rm -rf aclocal.m4 autom4te.cache compile config.guess config.h.in \ - config.rpath config.sub configure depcomp install-sh m4/ \ - Makefile.in missing man/Makefile.in src/Makefile.in - exit 0 -fi - -# Do not use clean option -if [ "$1" = "clean" -a -e Makefile ] -then - echo "I can not clean. Use '$ make distclean'." - exit 0 -fi - -# Do autoreconf -autoreconf -i \ - && { echo " "; \ - echo "Done. You can use the 'clean' option to vanish the source code."; \ - echo "Example of use: $ ./autogen.sh clean"; \ - echo " "; \ - echo "Now run ./configure, make, and make install."; \ - } \ - || { echo "We have a problem..."; exit 1; } diff -Nru axel-2.17.3/ChangeLog axel-2.17.5/ChangeLog --- axel-2.17.3/ChangeLog 2019-05-20 16:59:00.000000000 +0000 +++ axel-2.17.5/ChangeLog 2019-07-23 17:53:03.000000000 +0000 @@ -1,3 +1,45 @@ +Version: 2.17.5, 2019-07-23 + + [ Evangelos Foutras ] + +* Fixed progress indicator misalignment + + [ Ismael Luceno ] + +* Cleaned up the wget-like progress output code +* Improved progress output flushing + + + +Version: 2.17.4, 2019-07-19 + + [ Ismael Luceno ] + +* Fixed build with bionic libc (Android) +* TCP Fast Open support on Linux +* TCP code cleanup +* Removed dependency on libm +* Data types and format strings cleanup +* String handling cleanup +* Format string checking GCC attributes added +* Buildsystem fixes and improvements +* Updates to the documentation +* Updated all translations + + [ Jeong Ukjae ] + +* Fixed Footnotes in documentation + + [ Joao Eriberto Mota Filho ] + +* Fixed a typo in README.md + + [ Andrew Mussey ] + +* Fixed a typo in README.md + + + Version: 2.17.3, 2019-05-20 [ Ismael Luceno ] diff -Nru axel-2.17.3/configure.ac axel-2.17.5/configure.ac --- axel-2.17.3/configure.ac 2019-05-20 16:59:00.000000000 +0000 +++ axel-2.17.5/configure.ac 2019-07-23 17:53:03.000000000 +0000 @@ -1,10 +1,14 @@ # Autoconf for axel -# Copyright 2016 Joao Eriberto Mota Filho -# Copyright 2016 Stephen Thirlwall -# Copyright 2017 Antonio Quartulli -# Copyright 2017 Ismael Luceno -# Copyright 2017 Vlad Glagolev -# This file is under same license of Axel +AC_COPYRIGHT([ +Copyright 2016 Joao Eriberto Mota Filho +Copyright 2016 Stephen Thirlwall +Copyright 2017 Antonio Quartulli +Copyright 2017 Ismael Luceno +Copyright 2017 Vlad Glagolev +Copyright 2017 Ismael Luceno + +This file is under the same license as Axel. +]) AC_PREREQ([2.69]) PKG_PREREQ([0.29]) @@ -13,21 +17,37 @@ AXEL_VER_READ([VERSION]) AC_INIT +AC_CONFIG_AUX_DIR([build-aux]) AC_CONFIG_SRCDIR([src/conf.h]) AC_CONFIG_HEADERS([config.h]) AC_CONFIG_MACRO_DIR([m4]) -AM_INIT_AUTOMAKE +AM_INIT_AUTOMAKE([subdir-objects]) PKG_PROG_PKG_CONFIG AM_SILENT_RULES([yes]) -# Checks for programs. +AC_USE_SYSTEM_EXTENSIONS + +# Compiler checks AC_PROG_CC AC_PROG_CC_C99 AS_IF([test "x$ac_cv_prog_cc_c99" = "xno"], [ AC_MSG_ERROR([C99 compiler required]) ]) +# Compiler Warnings +AX_IS_RELEASE([git-directory]) +AX_COMPILER_FLAGS() + +# Built-in functions +AX_GCC_BUILTIN([__builtin_clzll]) + +AS_IF([test "x$ax_cv_have___builtin_clzll" = xno], [ + AC_MSG_ERROR([Support for __builtin_clzll is required]) +]) + + +# Checks for other programs. AC_PROG_INSTALL # Checks for libraries. @@ -36,21 +56,20 @@ AC_CHECK_HEADERS([ \ arpa/inet.h \ fcntl.h \ - libintl.h \ limits.h \ locale.h \ netdb.h \ netinet/in.h \ stdlib.h \ - string.h \ sys/ioctl.h \ sys/socket.h \ sys/time.h \ unistd.h \ +],, [ + AC_MSG_ERROR([$ac_func is required.]) ]) # Checks for typedefs, structures, and compiler characteristics. -AC_CHECK_HEADER_STDBOOL AC_C_INLINE AC_TYPE_OFF_T AC_TYPE_SIZE_T @@ -77,6 +96,14 @@ strrchr \ strstr \ strtoul \ +],, [ + AC_MSG_ERROR([$ac_func is required; it should be part of libc.]) +]) + +AC_CONFIG_LIBOBJ_DIR([lib]) +AC_REPLACE_FUNCS([ \ + strlcpy \ + strlcat \ ]) # Optional (but included-by-default) ssl support @@ -90,17 +117,13 @@ # Add Gettext AM_GNU_GETTEXT([external]) -AM_GNU_GETTEXT_VERSION([0.18]) -LIBS="$LIBS $LIBINTL" +AM_GNU_GETTEXT_VERSION([0.11.1]) # Large file support AC_SYS_LARGEFILE # POSIX threads AX_PTHREAD() -LIBS="$PTHREAD_LIBS $LIBS" -CFLAGS="$CFLAGS $PTHREAD_CFLAGS" -CC="$PTHREAD_CC" #### Definitions #### @@ -108,9 +131,6 @@ AC_CANONICAL_HOST AC_DEFINE_UNQUOTED([ARCH], ["$host_os"], ["Define architecture"]) -# Flags -CFLAGS="$CFLAGS -Wall" - case "$host_os" in darwin*) AC_DEFINE(_DARWIN_C_SOURCE, 1, [Define on Darwin to expose all libc features]) @@ -125,22 +145,13 @@ ;; esac -# ---> WARNING: NetBSD not tested! Using OpenBSD settings. - # etc path AC_DEFINE_UNQUOTED([ETCDIR], ["/etc"], ["Define /etc directory path"]) -# Other -AH_TEMPLATE([_REENTRANT], [Local definition]) -AC_DEFINE_UNQUOTED([_REENTRANT]) -AH_TEMPLATE([_THREAD_SAFE], [Local definition]) -AC_DEFINE_UNQUOTED([_THREAD_SAFE]) - ##################### AC_CONFIG_FILES([ Makefile - src/Makefile po/Makefile.in ]) AC_OUTPUT diff -Nru axel-2.17.3/CONTRIBUTING.md axel-2.17.5/CONTRIBUTING.md --- axel-2.17.3/CONTRIBUTING.md 2019-05-20 16:59:00.000000000 +0000 +++ axel-2.17.5/CONTRIBUTING.md 2019-07-23 17:53:03.000000000 +0000 @@ -8,7 +8,7 @@ 1. Send a patch that fix an issue or that implement a new feature. Alternatively, you can do a 'pull request'[1] in GitHub. - [1] https://help.github.com/articles/using-pull-requests +[1]: https://help.github.com/articles/using-pull-requests 2. Ask for join to the Axel project in GitHub, if you want to work officially. Note that this second step is not compulsory. However, @@ -31,7 +31,7 @@ There is a group here[2] to discuss and to coordinate the development. You can also find other developers in the #axel channel on freenode. -[2] https://groups.google.com/forum/#!forum/axel-accelerator-dev +[2]: https://groups.google.com/forum/#!forum/axel-accelerator-dev -- Eriberto, Sun, 20 Mar 2016 16:27:53 -0300, updated on Sun, 08 Sep 2017 23:27:00 -0300. diff -Nru axel-2.17.3/CREDITS axel-2.17.5/CREDITS --- axel-2.17.3/CREDITS 2019-05-20 16:59:00.000000000 +0000 +++ axel-2.17.5/CREDITS 2019-07-23 17:53:03.000000000 +0000 @@ -1,3 +1,34 @@ +2.17.5 version: + +- Changes in source code by: + + * Ismael Luceno + * Evangelos Foutras + + Read the ChangeLog to see the changes. + +2.17.4 version: + +- Changes in source code by: + + * Ismael Luceno + +- Documentation: + + * Jeong Ukjae + Fixed Footnotes + * Joao Eriberto Mota Filho + Fixed a typo + * Andrew Mussey + Fixed a typo + +- Translations: + + * Ismael Luceno + Updated all translations + + Read the ChangeLog to see the changes. + 2.17.3 version: - Changes in source code by: diff -Nru axel-2.17.3/debian/changelog axel-2.17.5/debian/changelog --- axel-2.17.3/debian/changelog 2019-07-07 14:27:10.000000000 +0000 +++ axel-2.17.5/debian/changelog 2019-08-29 16:02:19.000000000 +0000 @@ -1,3 +1,28 @@ +axel (2.17.5-1ubuntu1) eoan; urgency=medium + + * Comment out skippable tests, despite being skippable proxy prevents + downloads and hangs tests beds in the autopkgtest environment. To be + investigated, if we need some better proxy settings. Run the tests + locally, and they all pass. + + -- Dimitri John Ledkov Thu, 29 Aug 2019 17:02:19 +0100 + +axel (2.17.5-1) unstable; urgency=medium + + * New upstream version 2.17.5. + * debian/clean: created to remove some files forgotten by build system. + * debian/control: + - Bumped Standards-Version to 4.4.0. + - Added txt2man to Build-Depends field. + * debian/copyright: + - Added rights for Todd C. Miller, using ISC license. + - Removed BSD-3-Clause license and a reference to file autogen.sh, no + longer used by the upstream. + * debian/patches/10_update-translations.patch: removed because the upstream + fixed the source code. Thanks. + + -- Joao Eriberto Mota Filho Fri, 26 Jul 2019 21:13:06 -0300 + axel (2.17.3-2) unstable; urgency=medium * Upload to unstable. diff -Nru axel-2.17.3/debian/clean axel-2.17.5/debian/clean --- axel-2.17.3/debian/clean 1970-01-01 00:00:00.000000000 +0000 +++ axel-2.17.5/debian/clean 2019-07-27 00:13:06.000000000 +0000 @@ -0,0 +1,2 @@ +doc/axel.1 +po/axel.pot diff -Nru axel-2.17.3/debian/control axel-2.17.5/debian/control --- axel-2.17.3/debian/control 2019-07-07 14:26:15.000000000 +0000 +++ axel-2.17.5/debian/control 2019-08-29 16:02:19.000000000 +0000 @@ -1,13 +1,15 @@ Source: axel Section: web Priority: optional -Maintainer: Joao Eriberto Mota Filho -Standards-Version: 4.3.0 +Maintainer: Ubuntu Developers +XSBC-Original-Maintainer: Joao Eriberto Mota Filho +Standards-Version: 4.4.0 Build-Depends: debhelper-compat (= 12), autoconf-archive, gettext, libssl-dev, - pkg-config + pkg-config, + txt2man Homepage: https://github.com/axel-download-accelerator/axel Vcs-Browser: https://salsa.debian.org/debian/axel Vcs-Git: https://salsa.debian.org/debian/axel.git diff -Nru axel-2.17.3/debian/copyright axel-2.17.5/debian/copyright --- axel-2.17.3/debian/copyright 2019-07-07 14:26:15.000000000 +0000 +++ axel-2.17.5/debian/copyright 2019-07-27 00:13:06.000000000 +0000 @@ -22,6 +22,10 @@ 2017 Vlad Glagolev License: GPL-2+ with OpenSSL exception +Files: lib/* +Copyright: 1998-2015 Todd C. Miller +License: ISC + Files: po/* Copyright: 2001 Wilmer van der Gaast 2008 Hermann J. Beckers @@ -34,10 +38,6 @@ 2017 Nicol Dalla Longa License: GPL-2+ with OpenSSL exception -Files: autogen.sh -Copyright: 2016 Joao Eriberto Mota Filho -License: BSD-3-Clause - Files: debian/* Copyright: 2001-2005 Wilmer van der Gaast 2006 Amaya Rodrigo Sastre @@ -79,27 +79,15 @@ On Debian systems, the complete text of the GNU General Public License version 2 can be found in "/usr/share/common-licenses/GPL-2". -License: BSD-3-Clause - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions - are met: - 1. Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - 2. Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - 3. Neither the name of the authors nor the names of its contributors - may be used to endorse or promote products derived from this software - without specific prior written permission. - . - THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND - ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE - FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - SUCH DAMAGE. +License: ISC + Permission to use, copy, modify, and distribute this software for any + purpose with or without fee is hereby granted, provided that the above + copyright notice and this permission notice appear in all copies. + . + THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. diff -Nru axel-2.17.3/debian/patches/10_update-translations.patch axel-2.17.5/debian/patches/10_update-translations.patch --- axel-2.17.3/debian/patches/10_update-translations.patch 2019-07-07 14:26:15.000000000 +0000 +++ axel-2.17.5/debian/patches/10_update-translations.patch 1970-01-01 00:00:00.000000000 +0000 @@ -1,850 +0,0 @@ -Description: update .po files -Author: Joao Eriberto Mota Filho -Forwarded: https://github.com/axel-download-accelerator/axel/issues/208 -Last-Update: 2019-06-11 -Index: axel/po/de.po -=================================================================== ---- axel.orig/po/de.po -+++ axel/po/de.po -@@ -88,7 +88,7 @@ msgstr "Schlechtes Datei-/Betriebssystem - msgid "Error creating local file" - msgstr "Fehler beim Öffnen der lokalen Datei" - --#: src/axel.c:378 -+#: src/axel.c:379 - #, c-format - msgid "" - "\n" -@@ -97,60 +97,60 @@ msgstr "" - "\n" - "Verbindung %d wieder aktivieren\n" - --#: src/axel.c:408 -+#: src/axel.c:409 - msgid "Starting download" - msgstr "Starte Abruf" - --#: src/axel.c:419 src/axel.c:601 -+#: src/axel.c:417 src/axel.c:600 - #, c-format - msgid "Connection %i downloading from %s:%i using interface %s" - msgstr "Verbindung %i: Abruf von %s:%i über Schnittstelle %s" - --#: src/axel.c:429 src/axel.c:613 -+#: src/axel.c:427 src/axel.c:612 - msgid "pthread error!!!" - msgstr "pthread Fehler!!!" - --#: src/axel.c:474 -+#: src/axel.c:473 - #, fuzzy, c-format - msgid "Error while waiting for connection: %s" - msgstr "Fehler beim Schreiben des Befehls %s\n" - --#: src/axel.c:506 -+#: src/axel.c:505 - #, c-format - msgid "Connection %i timed out" - msgstr "Time-out bei Verbindung %i" - --#: src/axel.c:519 -+#: src/axel.c:518 - #, c-format - msgid "Error on connection %i! Connection closed" - msgstr "Fehler bei Verbindung %i! Verbindung getrennt" - --#: src/axel.c:533 -+#: src/axel.c:532 - #, c-format - msgid "Connection %i unexpectedly closed" - msgstr "Verbindung %i unerwartet getrennt" - --#: src/axel.c:537 src/axel.c:553 -+#: src/axel.c:536 src/axel.c:552 - #, c-format - msgid "Connection %i finished" - msgstr "Verbindung %i beendet" - --#: src/axel.c:563 -+#: src/axel.c:562 - msgid "Write error!" - msgstr "Schreibfehler!" - --#: src/axel.c:661 -+#: src/axel.c:660 - #, c-format - msgid "Error while enforcing throttling: %s" - msgstr "Fehler beim Erzwingen der Drosselung: %s" - --#: src/axel.c:839 -+#: src/axel.c:840 - #, c-format - msgid "Too few bytes remaining, forcing a single connection\n" - msgstr "" - "Es sind zu wenige Bytes übrig, also eine einzelne Verbindung erzwingen\n" - --#: src/axel.c:858 -+#: src/axel.c:859 - #, c-format - msgid "Downloading %lld-%lld using conn. %i\n" - msgstr "Herunterladen von %lld-%lld mithilfe der Verbindung %i\n" -@@ -450,7 +450,7 @@ msgstr "" - "Bitte sehen Sie die CREDITS-Datei\n" - "\n" - --#: src/ssl.c:92 -+#: src/ssl.c:93 - #, c-format - msgid "SSL error: %s\n" - msgstr "SSL-Fehler: %s\n" -Index: axel/po/es.po -=================================================================== ---- axel.orig/po/es.po -+++ axel/po/es.po -@@ -90,7 +90,7 @@ msgstr "Sistema de archivos/SO horrible. - msgid "Error creating local file" - msgstr "Error creando archivo local" - --#: src/axel.c:378 -+#: src/axel.c:379 - #, c-format - msgid "" - "\n" -@@ -99,59 +99,59 @@ msgstr "" - "\n" - "Reactivar conexión %d\n" - --#: src/axel.c:408 -+#: src/axel.c:409 - msgid "Starting download" - msgstr "Comenzando descarga" - --#: src/axel.c:419 src/axel.c:601 -+#: src/axel.c:417 src/axel.c:600 - #, c-format - msgid "Connection %i downloading from %s:%i using interface %s" - msgstr "Conexión %i descargando desde %s:%i usando la interfaz %s" - --#: src/axel.c:429 src/axel.c:613 -+#: src/axel.c:427 src/axel.c:612 - msgid "pthread error!!!" - msgstr "error de pthread!!!" - --#: src/axel.c:474 -+#: src/axel.c:473 - #, c-format - msgid "Error while waiting for connection: %s" - msgstr "Error al esperar por conexión: %s" - --#: src/axel.c:506 -+#: src/axel.c:505 - #, c-format - msgid "Connection %i timed out" - msgstr "Conexión %i caducada" - --#: src/axel.c:519 -+#: src/axel.c:518 - #, c-format - msgid "Error on connection %i! Connection closed" - msgstr "Error en conexión %i! Conexión cerrada" - --#: src/axel.c:533 -+#: src/axel.c:532 - #, c-format - msgid "Connection %i unexpectedly closed" - msgstr "Conexión %i cerrada inesperadamente" - --#: src/axel.c:537 src/axel.c:553 -+#: src/axel.c:536 src/axel.c:552 - #, c-format - msgid "Connection %i finished" - msgstr "Conexión %i finalizada" - --#: src/axel.c:563 -+#: src/axel.c:562 - msgid "Write error!" - msgstr "Error de escritura!" - --#: src/axel.c:661 -+#: src/axel.c:660 - #, c-format - msgid "Error while enforcing throttling: %s" - msgstr "Error al aplicar regulación: %s" - --#: src/axel.c:839 -+#: src/axel.c:840 - #, c-format - msgid "Too few bytes remaining, forcing a single connection\n" - msgstr "Quedan muy pocos bytes, forzando una única conexión\n" - --#: src/axel.c:858 -+#: src/axel.c:859 - #, c-format - msgid "Downloading %lld-%lld using conn. %i\n" - msgstr "Descargando %lld-%lld usando conn. %i\n" -@@ -464,7 +464,7 @@ msgstr "" - "Por favor, vea el archivo CREDITS.\n" - "\n" - --#: src/ssl.c:92 -+#: src/ssl.c:93 - #, c-format - msgid "SSL error: %s\n" - msgstr "Error de SSL: %s\n" -Index: axel/po/id_ID.po -=================================================================== ---- axel.orig/po/id_ID.po -+++ axel/po/id_ID.po -@@ -91,7 +91,7 @@ msgstr "Filesystem/OS jelek.. Bekerja di - msgid "Error creating local file" - msgstr "Galat membuat berkas lokal" - --#: src/axel.c:378 -+#: src/axel.c:379 - #, c-format - msgid "" - "\n" -@@ -100,59 +100,59 @@ msgstr "" - "\n" - "Aktifkan kembali koneksi %d\n" - --#: src/axel.c:408 -+#: src/axel.c:409 - msgid "Starting download" - msgstr "Mulai mengunduh" - --#: src/axel.c:419 src/axel.c:601 -+#: src/axel.c:417 src/axel.c:600 - #, c-format - msgid "Connection %i downloading from %s:%i using interface %s" - msgstr "Sambungan %i diunduh dari %s:%i menggunakan antarmuka %s" - --#: src/axel.c:429 src/axel.c:613 -+#: src/axel.c:427 src/axel.c:612 - msgid "pthread error!!!" - msgstr "pthread galat!!!" - --#: src/axel.c:474 -+#: src/axel.c:473 - #, c-format - msgid "Error while waiting for connection: %s" - msgstr "Galat saat menunggu koneksi: %s" - --#: src/axel.c:506 -+#: src/axel.c:505 - #, c-format - msgid "Connection %i timed out" - msgstr "Sambungan %i habis waktunya" - --#: src/axel.c:519 -+#: src/axel.c:518 - #, c-format - msgid "Error on connection %i! Connection closed" - msgstr "Galat pada koneksi %i! Sambungan putus" - --#: src/axel.c:533 -+#: src/axel.c:532 - #, c-format - msgid "Connection %i unexpectedly closed" - msgstr "Koneksi %i tiba-tiba putus" - --#: src/axel.c:537 src/axel.c:553 -+#: src/axel.c:536 src/axel.c:552 - #, c-format - msgid "Connection %i finished" - msgstr "Koneksi %i selesai" - --#: src/axel.c:563 -+#: src/axel.c:562 - msgid "Write error!" - msgstr "Tulis galat!" - --#: src/axel.c:661 -+#: src/axel.c:660 - #, c-format - msgid "Error while enforcing throttling: %s" - msgstr "Galat saat menerapkan throttling: %s" - --#: src/axel.c:839 -+#: src/axel.c:840 - #, c-format - msgid "Too few bytes remaining, forcing a single connection\n" - msgstr "" - --#: src/axel.c:858 -+#: src/axel.c:859 - #, c-format - msgid "Downloading %lld-%lld using conn. %i\n" - msgstr "Mengunduh %lld-%lld menggunakan conn. %i\n" -@@ -464,7 +464,7 @@ msgstr "" - "Silakan, lihat berkas CREDITS.\n" - "\n" - --#: src/ssl.c:92 -+#: src/ssl.c:93 - #, c-format - msgid "SSL error: %s\n" - msgstr "SSL galat: %s\n" -Index: axel/po/it.po -=================================================================== ---- axel.orig/po/it.po -+++ axel/po/it.po -@@ -91,7 +91,7 @@ msgstr "Filesystem/OS scadente.. Raggiro - msgid "Error creating local file" - msgstr "Errore nella creazione del file locale" - --#: src/axel.c:378 -+#: src/axel.c:379 - #, c-format - msgid "" - "\n" -@@ -100,59 +100,59 @@ msgstr "" - "\n" - "Riattivando la connessione %d\n" - --#: src/axel.c:408 -+#: src/axel.c:409 - msgid "Starting download" - msgstr "Inizio download" - --#: src/axel.c:419 src/axel.c:601 -+#: src/axel.c:417 src/axel.c:600 - #, c-format - msgid "Connection %i downloading from %s:%i using interface %s" - msgstr "La connessione %i sta scaricando da %s:%i usando l'interfaccia %s" - --#: src/axel.c:429 src/axel.c:613 -+#: src/axel.c:427 src/axel.c:612 - msgid "pthread error!!!" - msgstr "Errore pthread!!!" - --#: src/axel.c:474 -+#: src/axel.c:473 - #, c-format - msgid "Error while waiting for connection: %s" - msgstr "Errore durante l'attesa della connessione: %s" - --#: src/axel.c:506 -+#: src/axel.c:505 - #, c-format - msgid "Connection %i timed out" - msgstr "Connessione %i scaduta" - --#: src/axel.c:519 -+#: src/axel.c:518 - #, c-format - msgid "Error on connection %i! Connection closed" - msgstr "Errore nella connessione %i! Connessione terminata" - --#: src/axel.c:533 -+#: src/axel.c:532 - #, c-format - msgid "Connection %i unexpectedly closed" - msgstr "Connessione %i terminata inaspettatamente" - --#: src/axel.c:537 src/axel.c:553 -+#: src/axel.c:536 src/axel.c:552 - #, c-format - msgid "Connection %i finished" - msgstr "Connessione %i terminata" - --#: src/axel.c:563 -+#: src/axel.c:562 - msgid "Write error!" - msgstr "Errore di scrittura!" - --#: src/axel.c:661 -+#: src/axel.c:660 - #, c-format - msgid "Error while enforcing throttling: %s" - msgstr "Errore nell'applicazione del limite di velocità: %s" - --#: src/axel.c:839 -+#: src/axel.c:840 - #, c-format - msgid "Too few bytes remaining, forcing a single connection\n" - msgstr "Restano pochi byte, forzando una singola connessione\n" - --#: src/axel.c:858 -+#: src/axel.c:859 - #, c-format - msgid "Downloading %lld-%lld using conn. %i\n" - msgstr "Scaricando %lld-%lld usando la conn. %i\n" -@@ -465,7 +465,7 @@ msgstr "" - "Per favore, vedere il file CREDITS.\n" - "\n" - --#: src/ssl.c:92 -+#: src/ssl.c:93 - #, c-format - msgid "SSL error: %s\n" - msgstr "Errore SSL: %s\n" -Index: axel/po/ja.po -=================================================================== ---- axel.orig/po/ja.po -+++ axel/po/ja.po -@@ -90,7 +90,7 @@ msgstr "ファイルシステム/OSが - msgid "Error creating local file" - msgstr "ローカルファイルをオープンする際にエラー発生しました" - --#: src/axel.c:378 -+#: src/axel.c:379 - #, c-format - msgid "" - "\n" -@@ -99,59 +99,59 @@ msgstr "" - "\n" - "接続 %d を再アクティブ化しています\n" - --#: src/axel.c:408 -+#: src/axel.c:409 - msgid "Starting download" - msgstr "ダウンロード開始します" - --#: src/axel.c:419 src/axel.c:601 -+#: src/axel.c:417 src/axel.c:600 - #, c-format - msgid "Connection %i downloading from %s:%i using interface %s" - msgstr "接続 %i は %s:%i から、インターフェース %s でダウンロードします" - --#: src/axel.c:429 src/axel.c:613 -+#: src/axel.c:427 src/axel.c:612 - msgid "pthread error!!!" - msgstr "pthread のエラー!!!" - --#: src/axel.c:474 -+#: src/axel.c:473 - #, fuzzy, c-format - msgid "Error while waiting for connection: %s" - msgstr "コマンド %s を書く際にエラー\n" - --#: src/axel.c:506 -+#: src/axel.c:505 - #, c-format - msgid "Connection %i timed out" - msgstr "接続 %i がタイムアウトしました" - --#: src/axel.c:519 -+#: src/axel.c:518 - #, c-format - msgid "Error on connection %i! Connection closed" - msgstr "接続 %i でエラー! コネクションをクローズしました" - --#: src/axel.c:533 -+#: src/axel.c:532 - #, c-format - msgid "Connection %i unexpectedly closed" - msgstr "接続 %i が不意にクローズされました" - --#: src/axel.c:537 src/axel.c:553 -+#: src/axel.c:536 src/axel.c:552 - #, c-format - msgid "Connection %i finished" - msgstr "接続 %i が終了しました" - --#: src/axel.c:563 -+#: src/axel.c:562 - msgid "Write error!" - msgstr "書き込みエラー!" - --#: src/axel.c:661 -+#: src/axel.c:660 - #, c-format - msgid "Error while enforcing throttling: %s" - msgstr "調整を強制している間のエラー: %s" - --#: src/axel.c:839 -+#: src/axel.c:840 - #, c-format - msgid "Too few bytes remaining, forcing a single connection\n" - msgstr "残りのバイト数が少なすぎて、単一接続が強制される\n" - --#: src/axel.c:858 -+#: src/axel.c:859 - #, c-format - msgid "Downloading %lld-%lld using conn. %i\n" - msgstr "%lld-%lld をダウンロード中、接続 %i を使用して\n" -@@ -460,7 +460,7 @@ msgstr "" - "CREDITS というファイルを見てみましょう\n" - "\n" - --#: src/ssl.c:92 -+#: src/ssl.c:93 - #, c-format - msgid "SSL error: %s\n" - msgstr "SSL エラー: %s\n" -Index: axel/po/nl.po -=================================================================== ---- axel.orig/po/nl.po -+++ axel/po/nl.po -@@ -85,66 +85,66 @@ msgstr "Niet-fatale fout in OS/bestandss - msgid "Error creating local file" - msgstr "Fout bij openen lokaal bestand" - --#: src/axel.c:378 -+#: src/axel.c:379 - #, c-format - msgid "" - "\n" - "Reactivate connection %d\n" - msgstr "" - --#: src/axel.c:408 -+#: src/axel.c:409 - msgid "Starting download" - msgstr "Begin download" - --#: src/axel.c:419 src/axel.c:601 -+#: src/axel.c:417 src/axel.c:600 - #, c-format - msgid "Connection %i downloading from %s:%i using interface %s" - msgstr "Verbinding %i gebruikt server %s:%i via interface %s" - --#: src/axel.c:429 src/axel.c:613 -+#: src/axel.c:427 src/axel.c:612 - msgid "pthread error!!!" - msgstr "pthread fout!!!" - --#: src/axel.c:474 -+#: src/axel.c:473 - #, fuzzy, c-format - msgid "Error while waiting for connection: %s" - msgstr "Fout bij het schrijven van commando %s\n" - --#: src/axel.c:506 -+#: src/axel.c:505 - #, c-format - msgid "Connection %i timed out" - msgstr "Time-out op verbinding %i" - --#: src/axel.c:519 -+#: src/axel.c:518 - #, c-format - msgid "Error on connection %i! Connection closed" - msgstr "Fout op verbinding %i! Verbinding gesloten" - --#: src/axel.c:533 -+#: src/axel.c:532 - #, c-format - msgid "Connection %i unexpectedly closed" - msgstr "Verbinding %i onverwachts gesloten" - --#: src/axel.c:537 src/axel.c:553 -+#: src/axel.c:536 src/axel.c:552 - #, c-format - msgid "Connection %i finished" - msgstr "Verbinding %i klaar" - --#: src/axel.c:563 -+#: src/axel.c:562 - msgid "Write error!" - msgstr "Schrijffout!" - --#: src/axel.c:661 -+#: src/axel.c:660 - #, c-format - msgid "Error while enforcing throttling: %s" - msgstr "" - --#: src/axel.c:839 -+#: src/axel.c:840 - #, c-format - msgid "Too few bytes remaining, forcing a single connection\n" - msgstr "" - --#: src/axel.c:858 -+#: src/axel.c:859 - #, c-format - msgid "Downloading %lld-%lld using conn. %i\n" - msgstr "" -@@ -438,7 +438,7 @@ msgid "" - "\n" - msgstr "" - --#: src/ssl.c:92 -+#: src/ssl.c:93 - #, c-format - msgid "SSL error: %s\n" - msgstr "" -Index: axel/po/pt_BR.po -=================================================================== ---- axel.orig/po/pt_BR.po -+++ axel/po/pt_BR.po -@@ -93,7 +93,7 @@ msgstr "Filesystem/SO ruim... Trabalhand - msgid "Error creating local file" - msgstr "Erro ao criar o arquivo local" - --#: src/axel.c:378 -+#: src/axel.c:379 - #, c-format - msgid "" - "\n" -@@ -102,59 +102,59 @@ msgstr "" - "\n" - "Reativar conexão %d\n" - --#: src/axel.c:408 -+#: src/axel.c:409 - msgid "Starting download" - msgstr "Iniciando o download" - --#: src/axel.c:419 src/axel.c:601 -+#: src/axel.c:417 src/axel.c:600 - #, c-format - msgid "Connection %i downloading from %s:%i using interface %s" - msgstr "Conexão %i baixando a partir de %s:%i, usando interface %s" - --#: src/axel.c:429 src/axel.c:613 -+#: src/axel.c:427 src/axel.c:612 - msgid "pthread error!!!" - msgstr "erro de pthread!!!" - --#: src/axel.c:474 -+#: src/axel.c:473 - #, c-format - msgid "Error while waiting for connection: %s" - msgstr "Erro ao esperar por conexão: %s" - --#: src/axel.c:506 -+#: src/axel.c:505 - #, c-format - msgid "Connection %i timed out" - msgstr "Tempo esgotado para a conexão %i" - --#: src/axel.c:519 -+#: src/axel.c:518 - #, c-format - msgid "Error on connection %i! Connection closed" - msgstr "Erro na conexão %i! Conexão fechada." - --#: src/axel.c:533 -+#: src/axel.c:532 - #, c-format - msgid "Connection %i unexpectedly closed" - msgstr "Conexão %i fechada inesperadamente" - --#: src/axel.c:537 src/axel.c:553 -+#: src/axel.c:536 src/axel.c:552 - #, c-format - msgid "Connection %i finished" - msgstr "Conexão %i finalizada" - --#: src/axel.c:563 -+#: src/axel.c:562 - msgid "Write error!" - msgstr "Erro de escrita!" - --#: src/axel.c:661 -+#: src/axel.c:660 - #, c-format - msgid "Error while enforcing throttling: %s" - msgstr "Erro ao aplicar regulagem de velocidade: %s" - --#: src/axel.c:839 -+#: src/axel.c:840 - #, c-format - msgid "Too few bytes remaining, forcing a single connection\n" - msgstr "Muito poucos bytes restantes, forçando uma única conexão\n" - --#: src/axel.c:858 -+#: src/axel.c:859 - #, c-format - msgid "Downloading %lld-%lld using conn. %i\n" - msgstr "Baixando %lld-%lld usando conexão %i\n" -@@ -468,7 +468,7 @@ msgid "" - "\n" - msgstr "Por favor, veja o arquivo CREDITS.\n" - --#: src/ssl.c:92 -+#: src/ssl.c:93 - #, c-format - msgid "SSL error: %s\n" - msgstr "Erro SSL: %s\n" -Index: axel/po/ru.po -=================================================================== ---- axel.orig/po/ru.po -+++ axel/po/ru.po -@@ -86,7 +86,7 @@ msgstr "" - msgid "Error creating local file" - msgstr "Ошибка при открытии локального файла" - --#: src/axel.c:378 -+#: src/axel.c:379 - #, c-format - msgid "" - "\n" -@@ -95,59 +95,59 @@ msgstr "" - "\n" - "Реактивировать соединение %d\n" - --#: src/axel.c:408 -+#: src/axel.c:409 - msgid "Starting download" - msgstr "Начинаем скачивание" - --#: src/axel.c:419 src/axel.c:601 -+#: src/axel.c:417 src/axel.c:600 - #, c-format - msgid "Connection %i downloading from %s:%i using interface %s" - msgstr "Соединение %i скачивает с %s:%i через интерфейс %s" - --#: src/axel.c:429 src/axel.c:613 -+#: src/axel.c:427 src/axel.c:612 - msgid "pthread error!!!" - msgstr "ошибка pthread!!!" - --#: src/axel.c:474 -+#: src/axel.c:473 - #, fuzzy, c-format - msgid "Error while waiting for connection: %s" - msgstr "Ошибка записи команды %s\n" - --#: src/axel.c:506 -+#: src/axel.c:505 - #, c-format - msgid "Connection %i timed out" - msgstr "Время соединения %i вышло" - --#: src/axel.c:519 -+#: src/axel.c:518 - #, c-format - msgid "Error on connection %i! Connection closed" - msgstr "Ошибка в соединении %i! Соединение закрыто" - --#: src/axel.c:533 -+#: src/axel.c:532 - #, c-format - msgid "Connection %i unexpectedly closed" - msgstr "Соединение %i неожиданно закрылось" - --#: src/axel.c:537 src/axel.c:553 -+#: src/axel.c:536 src/axel.c:552 - #, c-format - msgid "Connection %i finished" - msgstr "Соединение %i закончилось" - --#: src/axel.c:563 -+#: src/axel.c:562 - msgid "Write error!" - msgstr "Ошибка записи!" - --#: src/axel.c:661 -+#: src/axel.c:660 - #, c-format - msgid "Error while enforcing throttling: %s" - msgstr "Ошибка при применении регулирования: %s" - --#: src/axel.c:839 -+#: src/axel.c:840 - #, c-format - msgid "Too few bytes remaining, forcing a single connection\n" - msgstr "Осталось слишком мало байтов, форсируя одно соединение\n" - --#: src/axel.c:858 -+#: src/axel.c:859 - #, c-format - msgid "Downloading %lld-%lld using conn. %i\n" - msgstr "Загрузка %lld-%lld с использованием соединения %i\n" -@@ -445,7 +445,7 @@ msgstr "" - "Пожалуйста, смотрите файл CREDITS.\n" - "\n" - --#: src/ssl.c:92 -+#: src/ssl.c:93 - #, c-format - msgid "SSL error: %s\n" - msgstr "Ошибка SSL: %s\n" -Index: axel/po/zh_CN.po -=================================================================== ---- axel.orig/po/zh_CN.po -+++ axel/po/zh_CN.po -@@ -86,7 +86,7 @@ msgstr "文件系统/操作系统不讨 - msgid "Error creating local file" - msgstr "无法创建本地文件" - --#: src/axel.c:378 -+#: src/axel.c:379 - #, c-format - msgid "" - "\n" -@@ -95,59 +95,59 @@ msgstr "" - "\n" - "重新激活链接:%d \n" - --#: src/axel.c:408 -+#: src/axel.c:409 - msgid "Starting download" - msgstr "正在开始下载" - --#: src/axel.c:419 src/axel.c:601 -+#: src/axel.c:417 src/axel.c:600 - #, c-format - msgid "Connection %i downloading from %s:%i using interface %s" - msgstr "连接 %1$i 正通过接口 %4$s 从 %2$s:%3$i 下载" - --#: src/axel.c:429 src/axel.c:613 -+#: src/axel.c:427 src/axel.c:612 - msgid "pthread error!!!" - msgstr "pthread 出错啦!!!" - --#: src/axel.c:474 -+#: src/axel.c:473 - #, fuzzy, c-format - msgid "Error while waiting for connection: %s" - msgstr "写命令 %s 出错" - --#: src/axel.c:506 -+#: src/axel.c:505 - #, c-format - msgid "Connection %i timed out" - msgstr "连接 %i 超时" - --#: src/axel.c:519 -+#: src/axel.c:518 - #, c-format - msgid "Error on connection %i! Connection closed" - msgstr "连接 %i 出错!连接中断" - --#: src/axel.c:533 -+#: src/axel.c:532 - #, c-format - msgid "Connection %i unexpectedly closed" - msgstr "连接 %i 被异常中断" - --#: src/axel.c:537 src/axel.c:553 -+#: src/axel.c:536 src/axel.c:552 - #, c-format - msgid "Connection %i finished" - msgstr "连接 %i 完成下载" - --#: src/axel.c:563 -+#: src/axel.c:562 - msgid "Write error!" - msgstr "写错误!" - --#: src/axel.c:661 -+#: src/axel.c:660 - #, c-format - msgid "Error while enforcing throttling: %s" - msgstr "强制调整流量时出错:%s" - --#: src/axel.c:839 -+#: src/axel.c:840 - #, c-format - msgid "Too few bytes remaining, forcing a single connection\n" - msgstr "" - --#: src/axel.c:858 -+#: src/axel.c:859 - #, c-format - msgid "Downloading %lld-%lld using conn. %i\n" - msgstr "使用链接下载 %lld-%lld [%i]\n" -@@ -452,7 +452,7 @@ msgstr "" - "请阅读 CREDITS 文件。\n" - "\n" - --#: src/ssl.c:92 -+#: src/ssl.c:93 - #, c-format - msgid "SSL error: %s\n" - msgstr "SSL 错误:%s\n" diff -Nru axel-2.17.3/debian/patches/series axel-2.17.5/debian/patches/series --- axel-2.17.3/debian/patches/series 2019-07-07 14:26:15.000000000 +0000 +++ axel-2.17.5/debian/patches/series 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -10_update-translations.patch diff -Nru axel-2.17.3/debian/tests/control axel-2.17.5/debian/tests/control --- axel-2.17.3/debian/tests/control 2019-07-07 14:24:50.000000000 +0000 +++ axel-2.17.5/debian/tests/control 2019-08-29 16:02:06.000000000 +0000 @@ -1,16 +1,16 @@ Test-Command: axel --version -Test-Command: axel -k http://people.debian.org/~eriberto/tests-axel/test.img || exit 77 -Restrictions: skippable +#Test-Command: axel -k http://people.debian.org/~eriberto/tests-axel/test.img || exit 77 +#Restrictions: skippable -Test-Command: axel -4 -k -s 1000000 -o $AUTOPKGTEST_TMP/test-new.img -U axel-test http://people.debian.org/~eriberto/tests-axel/test.img || exit 77 -Restrictions: skippable +#Test-Command: axel -4 -k -s 1000000 -o $AUTOPKGTEST_TMP/test-new.img -U axel-test http://people.debian.org/~eriberto/tests-axel/test.img || exit 77 +#Restrictions: skippable -Test-Command: axel -4 -k -s 1000000 -o $AUTOPKGTEST_TMP/test-new.img -U axel-test https://people.debian.org/~eriberto/tests-axel/test.img || exit 77 -Restrictions: skippable +#Test-Command: axel -4 -k -s 1000000 -o $AUTOPKGTEST_TMP/test-new.img -U axel-test https://people.debian.org/~eriberto/tests-axel/test.img || exit 77 +#Restrictions: skippable -Test-Command: axel -6 -k -s 1000000 -o $AUTOPKGTEST_TMP/test-new.img -U axel-test http://people.debian.org/~eriberto/tests-axel/test.img || exit 77 -Restrictions: skippable +#Test-Command: axel -6 -k -s 1000000 -o $AUTOPKGTEST_TMP/test-new.img -U axel-test http://people.debian.org/~eriberto/tests-axel/test.img || exit 77 +#Restrictions: skippable -Test-Command: axel -6 -k -s 1000000 -o $AUTOPKGTEST_TMP/test-new.img -U axel-test https://people.debian.org/~eriberto/tests-axel/test.img || exit 77 -Restrictions: skippable +#Test-Command: axel -6 -k -s 1000000 -o $AUTOPKGTEST_TMP/test-new.img -U axel-test https://people.debian.org/~eriberto/tests-axel/test.img || exit 77 +#Restrictions: skippable diff -Nru axel-2.17.3/doc/axel.txt axel-2.17.5/doc/axel.txt --- axel-2.17.3/doc/axel.txt 1970-01-01 00:00:00.000000000 +0000 +++ axel-2.17.5/doc/axel.txt 2019-07-23 17:53:03.000000000 +0000 @@ -0,0 +1,120 @@ +NAME + axel - light command line download accelerator + +SYNOPSIS + axel [OPTIONS] url1 [url2] [url...] + +DESCRIPTION + Axel is a program that downloads a file from a FTP or HTTP server through multiple connection. + Each connection downloads its own part of the file. + + Unlike most other programs, Axel downloads all the data directly to the destination file. + It saves some time at the end because the program does not have to + concatenate all the downloaded parts. + + Axel supports HTTP, HTTPS, FTP and FTPS protocols. + +OPTIONS + One argument is required, the URL to the file you want to download. When downloading from FTP, + the filename may contain wildcards and the program will try to resolve the full filename. Multiple + mirror URLs to an identical file can be specified as well and the program will use all those URLs + for the download. + + Please note that the program does not check whether the files are equal. + + Other options: + + --max-speed=x, -s x Specify a speed (bytes per second) to try to keep the average speed around this + speed. This is useful if you do not want the program to suck up all of your + bandwidth. + + --num-connections=x, -n x Specify an alternative number of connections. + + --max-redirect=x Specify an alternative number of redirections to follow when connecting to the + server (default is 20). + + --output=x, -o x Downloaded data will be put in a local file with the same name, unless you specify + a different name using this option. You can specify a directory as well, the program + will append the filename. + + --search[=x], -S[x] Axel can do a search for mirrors using the filesearching.com search engine. This + search will be done if you use this option. You can specify how many different + mirrors should be used for the download as well. The search for mirrors can be + time-consuming because the program tests every server's speed, and it checks + whether the file's still available. + + --ipv6, -6 Use the IPv6 protocol only when connecting to the host. + + --ipv4, -4 Use the IPv4 protocol only when connecting to the host. + + --no-proxy, -N Do not use any proxy server to download the file. Not possible when a transparent proxy + is active somewhere, of course. + + --insecure, -k Do not verify the SSL certificate. Only use this if you are getting certificate errors + and you are sure of the sites authenticity. + + --no-clobber, -c Skip download if a file with the same name already exists in the current folder and no state file is found. + + --verbose, -v Show more status messages. Use it more than once to see more details. + + --quiet, -q No output to stdout. + + --alternate, -a This will show an alternate progress indicator. A bar displays the progress and status + of the different threads, along with current speed and an estimate for the remaining + download time. + + --header=x, -H x Add an additional HTTP header. This option should be in the form "Header: Value". See + RFC 2616 section 4.2 and 14 for details on the format and standardized headers. + + --user-agent=x, -U x Set the HTTP user agent to use. Some websites serve different content based upon + this parameter. The default value will include "Axel", its version and the platform. + + --help, -h A brief summary of all the options. + + --timeout=x, -T x Set I/O and connection timeout + + --version, -V Get version information. + +NOTE + Long (double dash) options are supported only if your platform knows about the getopt_long call. If it + does not (like *BSD), only the short options can be used. + +RETURN VALUE + The program returns 0 when the download was successful, 1 if something really went wrong and 2 if the + download was interrupted. If something else comes back, it must be a bug. + +EXAMPLES + The trivial usage to download a file is similar to: + + $ axel http://cdimage.debian.org/debian-cd/current/amd64/iso-cd/debian-9.1.0-amd64-netinst.iso + + $ axel ftp://ftp.nl.kernel.org/pub/linux/kernel/v2.2/linux-2.2.20.tar.bz2 + + This will use the Belgian, Dutch, English and German kernel.org mirrors to download a Linux 2.4.17 + kernel image. + + $ axel ftp://ftp.{be,nl,uk,de}.kernel.org/pub/linux/kernel/v2.4/linux-2.4.17.tar.bz2 + + This will do a search for the linux-2.4.17.tar.bz2 file on filesearching.com and it'll use the four (if possible) + fastest mirrors for the download (possibly including ftp.kernel.org). + + $ axel -S4 ftp://ftp.kernel.org/pub/linux/kernel/v2.4/linux-2.4.17.tar.bz2 + +FILES + /etc/axelrc System-wide configuration file. + + ~/.axelrc Personal configuration file. + + These files are not documented in a manpage, but the example file which comes with the program contains + enough information. The position of the system-wide configuration file might be different. In source code this + example file is at doc/ directory. It's generally installed under /usr/share/doc/axel/examples/, or the + equivalent for your system. + +COPYRIGHT + Axel was originally written by Wilmer van der Gaast and other authors over time. Please, see the AUTHORS and CREDITS files. + + The project homepage is + +HELP THIS PROJECT + If you intent to help, please, read the CONTRIBUTING.md file. On Debian systems, this file will be available at + /usr/share/doc/axel/ directory. diff -Nru axel-2.17.3/doc/Makefile.am axel-2.17.5/doc/Makefile.am --- axel-2.17.3/doc/Makefile.am 1970-01-01 00:00:00.000000000 +0000 +++ axel-2.17.5/doc/Makefile.am 2019-07-23 17:53:03.000000000 +0000 @@ -0,0 +1,18 @@ +EXTRA_DIST += \ + doc/axelrc.example \ + doc/axel.txt + +dist_man_MANS = doc/axel.1 + +PACKAGE_DESC = lightweight command line download accelerator + +.txt.1: + read _ P_DATE _ < VERSION && \ + tmp=$$(mktemp tmpXXXXXX) && \ + > "$$tmp" \ + txt2man -t "$(<:.txt=)" -s 1 \ + -d "$$(date -d"$$P_DATE" '+%B %_d, %Y')" \ + -P "$(PACKAGE_NAME)" \ + -r "$(PACKAGE_NAME)-$(PACKAGE_VERSION)" \ + -v "$(PACKAGE_DESC)" $< &&\ + mv "$$tmp" $@ || { rm -f "$$tmp"; exit 1; } diff -Nru axel-2.17.3/doc/ROADMAP axel-2.17.5/doc/ROADMAP --- axel-2.17.3/doc/ROADMAP 2019-05-20 16:59:00.000000000 +0000 +++ axel-2.17.5/doc/ROADMAP 2019-07-23 17:53:03.000000000 +0000 @@ -1,9 +1,3 @@ -Roadmap for Axel v2 -=================== - -* Check if strrstr is provided by environment -* Use SI prefixes - Roadmap for Axel v3 (by Philipp Hagemeister, 2008-2010) =================== @@ -19,15 +13,6 @@ Features ======== -* HTTP authentication (#310785) - This is actually already implemented and should be documented. Using -H is possible, too. - -* Metalink (#310625) - Basic Metalink support should not be that difficult. However, it will only be compiled if METALINK is defined. Metalink support will require libxml2. As libmetalink is currently unusable for us (private symbols), we'll implement the format ourselves. - -* .netrc (#310635) - There are lots of GPLed implementations flying around. To minimize code size, it shouldn't be compiled in by default if the code exceeds a couple of bytes. Anyway, it's just one call from Axel's point of view. - * Prevent connection to same server (#310638) See tcp.c below for the implementation (aside from a flag in the configuration and a cli flag). diff -Nru axel-2.17.3/doc/UPDATE-CHECK axel-2.17.5/doc/UPDATE-CHECK --- axel-2.17.3/doc/UPDATE-CHECK 2019-05-20 16:59:00.000000000 +0000 +++ axel-2.17.5/doc/UPDATE-CHECK 2019-07-23 17:53:03.000000000 +0000 @@ -5,7 +5,6 @@ - AUTHORS - CREDITS - src/text.c (years in Copyright lines near EOF) -- run: make man/axel.1 - run: make -C po update-po diff -Nru axel-2.17.3/.gitignore axel-2.17.5/.gitignore --- axel-2.17.3/.gitignore 2019-05-20 16:59:00.000000000 +0000 +++ axel-2.17.5/.gitignore 2019-07-23 17:53:03.000000000 +0000 @@ -1,4 +1,6 @@ +/ABOUT-NLS /autom4te.cache/ +/build-aux/ /m4/ /po/Makefile.in.in /po/Makevars.template @@ -7,20 +9,21 @@ /po/axel.pot /po/remove-potcdate.sed /po/stamp-po -/src/axel +/axel /aclocal.m4 -/compile -/config.* +/config.h +/config.h.in +/config.log +/config.status /configure -/depcomp -/install-sh -/missing /stamp-h1 .deps/ +.dirstamp Makefile !/man/Makefile Makefile.in TAGS +*.[1-8] *.gmo *.o *.tar.* diff -Nru axel-2.17.3/lib/strlcat.c axel-2.17.5/lib/strlcat.c --- axel-2.17.3/lib/strlcat.c 1970-01-01 00:00:00.000000000 +0000 +++ axel-2.17.5/lib/strlcat.c 2019-07-23 17:53:03.000000000 +0000 @@ -0,0 +1,57 @@ +/* $OpenBSD: strlcat.c,v 1.15 2015/03/02 21:41:08 millert Exp $ */ + +/* + * Copyright (c) 1998, 2015 Todd C. Miller + * + * Permission to use, copy, modify, and distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + */ + +#include +#include + +size_t strlcat(char *, const char *, size_t); + +/* + * Appends src to string dst of size dsize (unlike strncat, dsize is the + * full size of dst, not space left). At most dsize-1 characters + * will be copied. Always NUL terminates (unless dsize <= strlen(dst)). + * Returns strlen(src) + MIN(dsize, strlen(initial dst)). + * If retval >= dsize, truncation occurred. + */ +size_t +strlcat(char *dst, const char *src, size_t dsize) +{ + const char *odst = dst; + const char *osrc = src; + size_t n = dsize; + size_t dlen; + + /* Find the end of dst and adjust bytes left but don't go past end. */ + while (n-- != 0 && *dst != '\0') + dst++; + dlen = dst - odst; + n = dsize - dlen; + + if (n-- == 0) + return(dlen + strlen(src)); + while (*src != '\0') { + if (n != 0) { + *dst++ = *src; + n--; + } + src++; + } + *dst = '\0'; + + return(dlen + (src - osrc)); /* count does not include NUL */ +} diff -Nru axel-2.17.3/lib/strlcpy.c axel-2.17.5/lib/strlcpy.c --- axel-2.17.3/lib/strlcpy.c 1970-01-01 00:00:00.000000000 +0000 +++ axel-2.17.5/lib/strlcpy.c 2019-07-23 17:53:03.000000000 +0000 @@ -0,0 +1,52 @@ +/* $OpenBSD: strlcpy.c,v 1.12 2015/01/15 03:54:12 millert Exp $ */ + +/* + * Copyright (c) 1998, 2015 Todd C. Miller + * + * Permission to use, copy, modify, and distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + */ + +#include +#include + +size_t strlcpy(char *, const char *, size_t); + +/* + * Copy string src to buffer dst of size dsize. At most dsize-1 + * chars will be copied. Always NUL terminates (unless dsize == 0). + * Returns strlen(src); if retval >= dsize, truncation occurred. + */ +size_t +strlcpy(char *dst, const char *src, size_t dsize) +{ + const char *osrc = src; + size_t nleft = dsize; + + /* Copy as many bytes as will fit. */ + if (nleft != 0) { + while (--nleft != 0) { + if ((*dst++ = *src++) == '\0') + break; + } + } + + /* Not enough room in dst, add NUL and traverse rest of src. */ + if (nleft == 0) { + if (dsize != 0) + *dst = '\0'; /* NUL-terminate dst */ + while (*src++) + ; + } + + return(src - osrc - 1); /* count does not include NUL */ +} diff -Nru axel-2.17.3/Makefile.am axel-2.17.5/Makefile.am --- axel-2.17.3/Makefile.am 2019-05-20 16:59:00.000000000 +0000 +++ axel-2.17.5/Makefile.am 2019-07-23 17:53:03.000000000 +0000 @@ -1,53 +1,27 @@ -AUTOMAKE_OPTIONS = dist-bzip2 dist-xz +AUTOMAKE_OPTIONS = foreign dist-bzip2 dist-xz # XXX Fix disagreement between aclocal and make # (aclocal doesn't update based on mtime) ACLOCAL = touch $@; @ACLOCAL@ -SUBDIRS = src po - -dist_man_MANS = man/axel.1 -.txt.1: - $(MAKE) -C $(@D) $(@F) +SUBDIRS = po EXTRA_DIST = \ + scripts/pocheck.awk \ + README.md \ CONTRIBUTING.md \ - CREDITS \ - doc/axelrc.example \ - man/axel.txt \ - man/Makefile + CREDITS -distclean-local: - -rm -rf autom4te.cache/ \ - m4/ +include doc/Makefile.am - -rm -f *~ \ - aclocal.m4 \ - compile \ - config.* \ - configure \ - depcomp \ - install-sh \ - Makefile.in \ - missing \ - po/*.gmo \ - po/*.po~ \ - po/Makefile.in.in \ - po/Makevars.template \ - po/Rules-quot \ - po/axel.pot \ - po/stamp-po \ - src/Makefile.in +distclean-local: + -rm -rf autom4te.cache + -rm -f *~ po/*~ po/*.gmo src/*~ -remove_git_dep = sed -i -e \ - '/^am__aclocal/,/[^\\]$$/ s:[$$](top_srcdir)/[.]git/[^ ]* *::g' dist-hook: rm -rf $(distdir)/.git read _ RELDATE _ < $(top_srcdir)/VERSION; \ - TZ= find $(distdir) \ - -name Makefile.in -exec $(remove_git_dep) '{}' ';' \ - -exec touch -d "$$RELDATE" '{}' + \ - -o -exec touch -d "$$RELDATE" '{}' + + TZ= find $(distdir) -exec touch -d "$$RELDATE" '{}' + MSG = echo '==>' ERR = ! echo '!!! ERROR:' @@ -64,3 +38,6 @@ && $(MSG) 'v$(VERSION) tag found' \ || $(ERR) 'v$(VERSION) tag missing' @$(MSG) Everything OK + + +include src/Makefile.am diff -Nru axel-2.17.3/man/axel.1 axel-2.17.5/man/axel.1 --- axel-2.17.3/man/axel.1 2019-05-20 16:59:00.000000000 +0000 +++ axel-2.17.5/man/axel.1 1970-01-01 00:00:00.000000000 +0000 @@ -1,173 +0,0 @@ -.\" Text automatically generated by txt2man -.TH axel 1 "October 9, 2017" "axel-2.15" "light command line download accelerator" -.SH NAME -\fBaxel \fP- light command line download accelerator -\fB -.SH SYNOPSIS -.nf -.fam C - \fBaxel\fP [\fIOPTIONS\fP] \fIurl1\fP [\fIurl2\fP] [url\.\.\.] - -.fam T -.fi -.fam T -.fi -.SH DESCRIPTION -Axel is a program that downloads a file from a FTP or HTTP server through multiple connection. -Each connection downloads its own part of the file. -.PP -Unlike most other programs, Axel downloads all the data directly to the destination file. -It saves some time at the end because the program does not have to -concatenate all the downloaded parts. -.PP -Axel supports HTTP, HTTPS, FTP and FTPS protocols. -.SH OPTIONS -One argument is required, the URL to the file you want to download. When downloading from FTP, -the filename may contain wildcards and the program will try to resolve the full filename. Multiple -mirror URLs to an identical file can be specified as well and the program will use all those URLs -for the download. -.PP -Please note that the program does not check whether the files are equal. -.PP -Other options: -.TP -.B -\fB--max-speed\fP=x, \fB-s\fP x -Specify a speed (bytes per second) to try to keep the average speed around this -speed. This is useful if you do not want the program to suck up all of your -bandwidth. -.TP -.B -\fB--num-connections\fP=x, \fB-n\fP x -Specify an alternative number of connections. -.TP -.B -\fB--max-redirect\fP=x -Specify an alternative number of redirections to follow when connecting to the -server (default is 20). -.TP -.B -\fB--output\fP=x, \fB-o\fP x -Downloaded data will be put in a local file with the same name, unless you specify -a different name using this option. You can specify a directory as well, the program -will append the filename. -.TP -.B -\fB--search\fP[=x], \fB-S\fP[x] -Axel can do a search for mirrors using the filesearching.com search engine. This -search will be done if you use this option. You can specify how many different -mirrors should be used for the download as well. The search for mirrors can be -time-consuming because the program tests every server's speed, and it checks -whether the file's still available. -.TP -.B -\fB--ipv6\fP, \fB-6\fP -Use the IPv6 protocol only when connecting to the host. -.TP -.B -\fB--ipv4\fP, \fB-4\fP -Use the IPv4 protocol only when connecting to the host. -.TP -.B -\fB--no-proxy\fP, \fB-N\fP -Do not use any proxy server to download the file. Not possible when a transparent proxy -is active somewhere, of course. -.TP -.B -\fB--insecure\fP, \fB-k\fP -Do not verify the SSL certificate. Only use this if you are getting certificate errors -and you are sure of the sites authenticity. -.PP -\fB--no-clobber\fP, \fB-c\fP Skip download if a file with the same name already exists in the current folder and no state file is found. -.TP -.B -\fB--verbose\fP, \fB-v\fP -Show more status messages. Use it more than once to see more details. -.TP -.B -\fB--quiet\fP, \fB-q\fP -No output to stdout. -.TP -.B -\fB--alternate\fP, \fB-a\fP -This will show an alternate progress indicator. A bar displays the progress and status -of the different threads, along with current speed and an estimate for the remaining -download time. -.TP -.B -\fB--header\fP=x, \fB-H\fP x -Add an additional HTTP header. This option should be in the form "Header: Value". See -RFC 2616 section 4.2 and 14 for details on the format and standardized headers. -.TP -.B -\fB--user-agent\fP=x, \fB-U\fP x -Set the HTTP user agent to use. Some websites serve different content based upon -this parameter. The default value will include "Axel", its version and the platform. -.TP -.B -\fB--help\fP, \fB-h\fP -A brief summary of all the options. -.TP -.B -\fB--timeout\fP=x, \fB-T\fP x -Set I/O and connection timeout -.TP -.B -\fB--version\fP, \fB-V\fP -Get version information. -.SH NOTE -Long (double dash) options are supported only if your platform knows about the getopt_long call. If it -does not (like *BSD), only the short options can be used. -.SH RETURN VALUE -The program returns 0 when the download was successful, 1 if something really went wrong and 2 if the -download was interrupted. If something else comes back, it must be a bug. -.SH EXAMPLES -The trivial usage to download a file is similar to: -.PP -.nf -.fam C - $ axel http://cdimage.debian.org/debian-cd/current/amd64/iso-cd/debian-9.1.0-amd64-netinst.iso - - $ axel ftp://ftp.nl.kernel.org/pub/linux/kernel/v2.2/linux-2.2.20.tar.bz2 - -.fam T -.fi -This will use the Belgian, Dutch, English and German kernel.org mirrors to download a Linux 2.4.17 -kernel image. -.PP -.nf -.fam C - $ axel ftp://ftp.{be,nl,uk,de}.kernel.org/pub/linux/kernel/v2.4/linux-2.4.17.tar.bz2 - -.fam T -.fi -This will do a search for the linux-2.4.17.tar.bz2 file on filesearching.com and it'll use the four (if possible) -fastest mirrors for the download (possibly including ftp.kernel.org). -.PP -.nf -.fam C - $ axel -S4 ftp://ftp.kernel.org/pub/linux/kernel/v2.4/linux-2.4.17.tar.bz2 - -.fam T -.fi -.SH FILES -.TP -.B -/etc/axelrc -System-wide configuration file. -.TP -.B -~/.axelrc -Personal configuration file. -.PP -These files are not documented in a manpage, but the example file which comes with the program contains -enough information. The position of the system-wide configuration file might be different. In source code this -example file is at doc/ directory. It's generally installed under /usr/share/doc/\fBaxel\fP/examples/, or the -equivalent for your system. -.SH COPYRIGHT -Axel was originally written by Wilmer van der Gaast and other authors over time. Please, see the AUTHORS and CREDITS files. -.PP -The project homepage is -.SH HELP THIS PROJECT -If you intent to help, please, read the CONTRIBUTING.md file. On Debian systems, this file will be available at -/usr/share/doc/\fBaxel\fP/ directory. diff -Nru axel-2.17.3/man/axel.txt axel-2.17.5/man/axel.txt --- axel-2.17.3/man/axel.txt 2019-05-20 16:59:00.000000000 +0000 +++ axel-2.17.5/man/axel.txt 1970-01-01 00:00:00.000000000 +0000 @@ -1,120 +0,0 @@ -NAME - axel - light command line download accelerator - -SYNOPSIS - axel [OPTIONS] url1 [url2] [url...] - -DESCRIPTION - Axel is a program that downloads a file from a FTP or HTTP server through multiple connection. - Each connection downloads its own part of the file. - - Unlike most other programs, Axel downloads all the data directly to the destination file. - It saves some time at the end because the program does not have to - concatenate all the downloaded parts. - - Axel supports HTTP, HTTPS, FTP and FTPS protocols. - -OPTIONS - One argument is required, the URL to the file you want to download. When downloading from FTP, - the filename may contain wildcards and the program will try to resolve the full filename. Multiple - mirror URLs to an identical file can be specified as well and the program will use all those URLs - for the download. - - Please note that the program does not check whether the files are equal. - - Other options: - - --max-speed=x, -s x Specify a speed (bytes per second) to try to keep the average speed around this - speed. This is useful if you do not want the program to suck up all of your - bandwidth. - - --num-connections=x, -n x Specify an alternative number of connections. - - --max-redirect=x Specify an alternative number of redirections to follow when connecting to the - server (default is 20). - - --output=x, -o x Downloaded data will be put in a local file with the same name, unless you specify - a different name using this option. You can specify a directory as well, the program - will append the filename. - - --search[=x], -S[x] Axel can do a search for mirrors using the filesearching.com search engine. This - search will be done if you use this option. You can specify how many different - mirrors should be used for the download as well. The search for mirrors can be - time-consuming because the program tests every server's speed, and it checks - whether the file's still available. - - --ipv6, -6 Use the IPv6 protocol only when connecting to the host. - - --ipv4, -4 Use the IPv4 protocol only when connecting to the host. - - --no-proxy, -N Do not use any proxy server to download the file. Not possible when a transparent proxy - is active somewhere, of course. - - --insecure, -k Do not verify the SSL certificate. Only use this if you are getting certificate errors - and you are sure of the sites authenticity. - - --no-clobber, -c Skip download if a file with the same name already exists in the current folder and no state file is found. - - --verbose, -v Show more status messages. Use it more than once to see more details. - - --quiet, -q No output to stdout. - - --alternate, -a This will show an alternate progress indicator. A bar displays the progress and status - of the different threads, along with current speed and an estimate for the remaining - download time. - - --header=x, -H x Add an additional HTTP header. This option should be in the form "Header: Value". See - RFC 2616 section 4.2 and 14 for details on the format and standardized headers. - - --user-agent=x, -U x Set the HTTP user agent to use. Some websites serve different content based upon - this parameter. The default value will include "Axel", its version and the platform. - - --help, -h A brief summary of all the options. - - --timeout=x, -T x Set I/O and connection timeout - - --version, -V Get version information. - -NOTE - Long (double dash) options are supported only if your platform knows about the getopt_long call. If it - does not (like *BSD), only the short options can be used. - -RETURN VALUE - The program returns 0 when the download was successful, 1 if something really went wrong and 2 if the - download was interrupted. If something else comes back, it must be a bug. - -EXAMPLES - The trivial usage to download a file is similar to: - - $ axel http://cdimage.debian.org/debian-cd/current/amd64/iso-cd/debian-9.1.0-amd64-netinst.iso - - $ axel ftp://ftp.nl.kernel.org/pub/linux/kernel/v2.2/linux-2.2.20.tar.bz2 - - This will use the Belgian, Dutch, English and German kernel.org mirrors to download a Linux 2.4.17 - kernel image. - - $ axel ftp://ftp.{be,nl,uk,de}.kernel.org/pub/linux/kernel/v2.4/linux-2.4.17.tar.bz2 - - This will do a search for the linux-2.4.17.tar.bz2 file on filesearching.com and it'll use the four (if possible) - fastest mirrors for the download (possibly including ftp.kernel.org). - - $ axel -S4 ftp://ftp.kernel.org/pub/linux/kernel/v2.4/linux-2.4.17.tar.bz2 - -FILES - /etc/axelrc System-wide configuration file. - - ~/.axelrc Personal configuration file. - - These files are not documented in a manpage, but the example file which comes with the program contains - enough information. The position of the system-wide configuration file might be different. In source code this - example file is at doc/ directory. It's generally installed under /usr/share/doc/axel/examples/, or the - equivalent for your system. - -COPYRIGHT - Axel was originally written by Wilmer van der Gaast and other authors over time. Please, see the AUTHORS and CREDITS files. - - The project homepage is - -HELP THIS PROJECT - If you intent to help, please, read the CONTRIBUTING.md file. On Debian systems, this file will be available at - /usr/share/doc/axel/ directory. diff -Nru axel-2.17.3/man/Makefile axel-2.17.5/man/Makefile --- axel-2.17.3/man/Makefile 2019-05-20 16:59:00.000000000 +0000 +++ axel-2.17.5/man/Makefile 1970-01-01 00:00:00.000000000 +0000 @@ -1,11 +0,0 @@ -P_DESC = "light command line download accelerator" - -.SUFFIXES: .txt .1 -.txt.1: - read P_VERSION P_DATE _ < ../VERSION && \ - tmp=$$(mktemp tmpXXXXXX) && \ - > "$$tmp" \ - txt2man -d "$$(date -d"$$P_DATE" '+%B %_d, %Y')" \ - -t "$(<:.txt=)" -r "$(<:.txt=)-$$P_VERSION" -s 1 \ - -v $(P_DESC) $< && \ - mv "$$tmp" $@ || { rm -f "$$tmp"; exit 1; } diff -Nru axel-2.17.3/po/de.po axel-2.17.5/po/de.po --- axel-2.17.3/po/de.po 2019-05-20 16:59:00.000000000 +0000 +++ axel-2.17.5/po/de.po 2019-07-23 17:53:03.000000000 +0000 @@ -1,94 +1,93 @@ +# Hermann J. Beckers , 2001 +# Ismael Luceno , 2019 msgid "" msgstr "" "Project-Id-Version: Axel\n" "Report-Msgid-Bugs-To: https://github.com/axel-download-accelerator/axel/" "issues\n" -"PO-Revision-Date: 2008-09-15 22:08+0200\n" -"Last-Translator: Hermann J. Beckers \n" -"Language-Team: deutsch \n" +"PO-Revision-Date: 2019-07-12 20:01+0200\n" +"Last-Translator: Ismael Luceno \n" +"Language-Team: Deutsch\n" "Language: de\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Generator: KBabel 1.11.4\n" -#: src/axel.c:90 +#: src/axel.c:94 msgid "Buffer resized for this speed." msgstr "Buffer für diese Geschwindigkeit angepasst." -#: src/axel.c:107 +#: src/axel.c:112 msgid "Invalid URL" msgstr "Ungültige URL" -#: src/axel.c:135 +#: src/axel.c:140 msgid "Could not parse URL.\n" msgstr "Kann URL nicht parsen.\n" -#: src/axel.c:159 +#: src/axel.c:164 #, c-format msgid "Incomplete download found, ignoring no-clobber option\n" msgstr "" "Es wurde ein unvollständiger Download gefunden, die No-Clobber-Option wurde " "ignoriert\n" -#: src/axel.c:162 +#: src/axel.c:167 #, c-format msgid "File '%s' already there; not retrieving.\n" msgstr "Datei '%s' bereits vorhanden; nicht abrufen.\n" -#: src/axel.c:192 +#: src/axel.c:197 #, c-format -msgid "File size: %lld bytes" -msgstr "Dateigröße: %lld bytes" +msgid "File size: %zu bytes" +msgstr "Dateigröße: %zu bytes" -#: src/axel.c:195 -#, fuzzy +#: src/axel.c:200 msgid "File size: unavailable" -msgstr "Dateigröße: %lld bytes" +msgstr "Dateigröße: nicht verfügbar" -#: src/axel.c:224 +#: src/axel.c:229 #, c-format msgid "Opening output file %s" msgstr "Öffne Ausgabedatei: %s" -#: src/axel.c:232 +#: src/axel.c:237 msgid "Server unsupported, starting from scratch with one connection." msgstr "Server versteht REST nicht, Neustart mit einer Verbindung." -#: src/axel.c:249 +#: src/axel.c:254 #, c-format msgid "%s.st: Error, truncated state file\n" msgstr "%s.st: Fehler, abgeschnittene Statusdatei\n" -#: src/axel.c:257 +#: src/axel.c:262 #, c-format msgid "Bogus number of connections stored in state file\n" msgstr "Falsche Anzahl in der Statusdatei gespeicherten Verbindungen\n" -#: src/axel.c:269 +#: src/axel.c:274 #, c-format msgid "State file has old format.\n" msgstr "Statusdatei hat altes Format.\n" -#: src/axel.c:302 +#: src/axel.c:307 #, c-format -msgid "State file found: %lld bytes downloaded, %lld to go." -msgstr "Status-Datei gefunden: %lld bytes übertragen, %lld verbleiben." +msgid "State file found: %zu bytes downloaded, %zu to go." +msgstr "Status-Datei gefunden: %zu bytes übertragen, %zu verbleiben." -#: src/axel.c:308 src/axel.c:319 +#: src/axel.c:313 src/axel.c:324 msgid "Error opening local file" msgstr "Fehler beim Öffnen der lokalen Datei" -#: src/axel.c:332 +#: src/axel.c:337 msgid "Crappy filesystem/OS.. Working around. :-(" msgstr "Schlechtes Datei-/Betriebssystem, Umgehung.." -#: src/axel.c:346 -#, fuzzy +#: src/axel.c:350 msgid "Error creating local file" -msgstr "Fehler beim Öffnen der lokalen Datei" +msgstr "Fehler beim Erstellen der lokalen Datei" -#: src/axel.c:378 +#: src/axel.c:383 #, c-format msgid "" "\n" @@ -97,100 +96,100 @@ "\n" "Verbindung %d wieder aktivieren\n" -#: src/axel.c:408 +#: src/axel.c:413 msgid "Starting download" msgstr "Starte Abruf" -#: src/axel.c:419 src/axel.c:601 +#: src/axel.c:421 src/axel.c:604 #, c-format msgid "Connection %i downloading from %s:%i using interface %s" msgstr "Verbindung %i: Abruf von %s:%i über Schnittstelle %s" -#: src/axel.c:429 src/axel.c:613 +#: src/axel.c:431 src/axel.c:616 msgid "pthread error!!!" msgstr "pthread Fehler!!!" -#: src/axel.c:474 -#, fuzzy, c-format +#: src/axel.c:477 +#, c-format msgid "Error while waiting for connection: %s" -msgstr "Fehler beim Schreiben des Befehls %s\n" +msgstr "Fehler beim Warten auf Verbindung: %s" -#: src/axel.c:506 +#: src/axel.c:509 #, c-format msgid "Connection %i timed out" msgstr "Time-out bei Verbindung %i" -#: src/axel.c:519 +#: src/axel.c:522 #, c-format msgid "Error on connection %i! Connection closed" msgstr "Fehler bei Verbindung %i! Verbindung getrennt" -#: src/axel.c:533 +#: src/axel.c:536 #, c-format msgid "Connection %i unexpectedly closed" msgstr "Verbindung %i unerwartet getrennt" -#: src/axel.c:537 src/axel.c:553 +#: src/axel.c:540 src/axel.c:556 #, c-format msgid "Connection %i finished" msgstr "Verbindung %i beendet" -#: src/axel.c:563 +#: src/axel.c:566 msgid "Write error!" msgstr "Schreibfehler!" -#: src/axel.c:661 +#: src/axel.c:664 #, c-format msgid "Error while enforcing throttling: %s" msgstr "Fehler beim Erzwingen der Drosselung: %s" -#: src/axel.c:839 +#: src/axel.c:844 #, c-format msgid "Too few bytes remaining, forcing a single connection\n" msgstr "" "Es sind zu wenige Bytes übrig, also eine einzelne Verbindung erzwingen\n" -#: src/axel.c:858 +#: src/axel.c:863 #, c-format msgid "Downloading %lld-%lld using conn. %i\n" msgstr "Herunterladen von %lld-%lld mithilfe der Verbindung %i\n" -#: src/conf.c:65 +#: src/conf.c:68 #, c-format msgid "I/O error while reading config file: %s\n" msgstr "I/O-Fehler beim Lesen Konfigurationsdatei: %s\n" -#: src/conf.c:80 +#: src/conf.c:83 #, c-format msgid "Unknown protocol %s\n" msgstr "Unbekannter Protokoll %s\n" -#: src/conf.c:185 +#: src/conf.c:187 #, c-format msgid "Requested too many connections, max is %i\n" msgstr "Zu viele Verbindungen angefordert, das Maximum ist %i\n" -#: src/conf.c:200 +#: src/conf.c:202 #, c-format msgid "Error in %s line %i.\n" msgstr "Fehler in %s Zeile %i.\n" -#: src/conf.c:265 -#, fuzzy, c-format +#: src/conf.c:266 +#, c-format msgid "HOME env variable too long\n" -msgstr "Dateiname zu lang!\n" +msgstr "Umgebungsvariable HOME zu lang!\n" -#: src/conn.c:77 +#: src/conn.c:76 #, c-format msgid "Unsupported protocol\n" msgstr "Nicht unterstütztes Protokoll\n" -#: src/conn.c:83 +#: src/conn.c:82 #, c-format msgid "Secure protocol is not supported\n" msgstr "Das sichere Protokoll wird nicht unterstützt\n" -#: src/conn.c:411 src/ftp.c:131 +#: src/conn.c:413 src/ftp.c:131 #, c-format msgid "Too many redirects.\n" msgstr "Zu viele Weiterleitungen (redirects).\n" @@ -210,17 +209,17 @@ msgid "Multiple matches for this URL.\n" msgstr "Mehrere Treffer für diese URL.\n" -#: src/ftp.c:258 +#: src/ftp.c:260 #, c-format msgid "Error opening passive data connection.\n" msgstr "Fehler beim Öffnen der Passiv-Verbindung.\n" -#: src/ftp.c:292 +#: src/ftp.c:294 #, c-format msgid "Error writing command %s\n" msgstr "Fehler beim Schreiben des Befehls %s\n" -#: src/ftp.c:317 src/http.c:249 +#: src/ftp.c:319 src/http.c:249 #, c-format msgid "Connection gone.\n" msgstr "Verbindung geschlossen.\n" @@ -231,75 +230,75 @@ msgstr "Ungültige Proxy-Angabe: %s\n" #: src/http.c:237 -#, fuzzy, c-format +#, c-format msgid "Connection gone while writing.\n" -msgstr "Verbindung geschlossen.\n" +msgstr "Verbindung verloren beim Schreiben.\n" -#: src/text.c:202 +#: src/text.c:201 #, c-format msgid "Can't redirect stdout to /dev/null.\n" msgstr "Kann Standardausgabe nicht nach /dev/null umleiten.\n" -#: src/text.c:245 +#: src/text.c:244 #, c-format msgid "Error when trying to read URL (Too long?).\n" msgstr "Fehler beim Lesen der URL (Zu lang?).\n" -#: src/text.c:253 +#: src/text.c:252 #, c-format -msgid "Can't handle URLs of length over %d\n" -msgstr "Kann URLs mit mehr als %d Zeichen nicht nutzen\n" +msgid "Can't handle URLs of length over %zu\n" +msgstr "Kann URLs mit mehr als %zu Zeichen nicht nutzen\n" -#: src/text.c:259 +#: src/text.c:258 #, c-format msgid "Initializing download: %s\n" msgstr "Starte Abruf: %s\n" -#: src/text.c:267 +#: src/text.c:266 #, c-format msgid "Doing search...\n" msgstr "Suche gestartet...\n" -#: src/text.c:270 +#: src/text.c:269 #, c-format msgid "File not found\n" msgstr "Datei nicht gefunden\n" -#: src/text.c:274 +#: src/text.c:273 #, c-format msgid "Testing speeds, this can take a while...\n" msgstr "Teste Geschwindigkeiten, das kann etwas dauern...\n" -#: src/text.c:277 +#: src/text.c:276 #, c-format msgid "Speed testing failed\n" msgstr "Geschwindigkeitstest fehlgeschlagen\n" -#: src/text.c:283 +#: src/text.c:282 #, c-format msgid "%i usable servers found, will use these URLs:\n" msgstr "%i benutzbare Server gefunden, werde diese URLs benutzen:\n" -#: src/text.c:286 +#: src/text.c:285 msgid "Speed" msgstr "Geschwindigkeit" -#: src/text.c:334 +#: src/text.c:333 #, c-format msgid "Filename too long!\n" msgstr "Dateiname zu lang!\n" -#: src/text.c:347 +#: src/text.c:346 #, c-format msgid "No state file, cannot resume!\n" msgstr "Keine Status-Datei, Fortsetzung nicht möglich!\n" -#: src/text.c:351 +#: src/text.c:350 #, c-format msgid "State file found, but no downloaded data. Starting from scratch.\n" msgstr "Status-Datei gefunden, aber noch nichts übertragen. Neustart.\n" -#: src/text.c:469 +#: src/text.c:438 #, c-format msgid "" "\n" @@ -308,49 +307,49 @@ "\n" "%s abgerufen in %s. (%.2f KB/s)\n" -#: src/text.c:496 +#: src/text.c:475 msgid "Kilo" msgstr "Kilo" -#: src/text.c:496 +#: src/text.c:475 msgid "Mega" msgstr "Mega" -#: src/text.c:496 +#: src/text.c:475 msgid "Giga" msgstr "Giga" -#: src/text.c:496 +#: src/text.c:475 msgid "Tera" msgstr "Tera" -#: src/text.c:502 +#: src/text.c:481 #, c-format msgid "%g %sbyte(s)" msgstr "%g %sbyte(s)" -#: src/text.c:518 -#, fuzzy, c-format +#: src/text.c:497 +#, c-format msgid "%i:%02i:%02i hour(s)" msgstr "%i:%02i:%02i Stunde(n)" -#: src/text.c:520 -#, fuzzy, c-format +#: src/text.c:499 +#, c-format msgid "%i:%02i minute(s)" -msgstr "%i:%02i Sekunden" +msgstr "%i:%02i Minute(n)" -#: src/text.c:522 -#, fuzzy, c-format +#: src/text.c:501 +#, c-format msgid "%i second(s)" msgstr "%i Sekunde(n)" -#: src/text.c:586 +#: src/text.c:594 #, c-format msgid "Can't setup alternate output. Deactivating.\n" msgstr "Alternative Ausgabe kann nicht eingerichtet werden. Ausschalten.\n" -#: src/text.c:650 -#, fuzzy, c-format +#: src/text.c:656 +#, c-format msgid "" "Usage: axel [options] url1 [url2] [url...]\n" "\n" @@ -377,21 +376,27 @@ "Aufruf: axel [Optionen] url1 [url2] [url...]\n" "\n" "-s x\tMaximale Geschwindigkeit (Bytes pro Sekunde)\n" -"-n x\tmaximale gleichzeitige Verbindungen\n" -"-o f\tlokale Ausgabe-Datei\n" +"-n x\tMaximale gleichzeitige Verbindungen\n" +"-o f\tLokale Ausgabe-Datei\n" "-S [x]\tSuche nach Spiegelservern und Abruf von x Servern\n" +"-4\tIPv4-Protokoll verwenden\n" +"-6\tIPv6-Protokoll verwenden\n" "-H x\tSende HTTP-Header\n" "-U x\tSetze Browser-Kennung\n" -"-N\tkeinen Proxy-Server benutzen\n" -"-q\tkeine Meldungen auf Standard-Ausgabe\n" -"-v\tzusätzliche Status-Information\n" -"-h\tdiese Information\n" +"-N\tKeinen Proxy-Server benutzen\n" +"-k\tÜberprüfen es das SSL-Zertifikat nicht\n" +"-c\tDownload überspringen, wenn Datei bereits vorhanden ist\n" +"-q\tKeine Meldungen auf Standard-Ausgabe\n" +"-v\tZusätzliche Status-Information\n" +"-a\tAlternative Fortschrittsanzeige\n" +"-h\tDiese Information\n" +"-T x\tE/A und Verbindungs-Timeout einstellen\n" "-V\tVersions-Information\n" "\n" -"Fehler an lintux@lintux.cx melden.\n" +"Besuchen Sie https://github.com/axel-download-accelerator/axel/issues\n" -#: src/text.c:672 -#, fuzzy, c-format +#: src/text.c:678 +#, c-format msgid "" "Usage: axel [options] url1 [url2] [url...]\n" "\n" @@ -419,30 +424,37 @@ msgstr "" "Aufruf: axel [Optionen] url1 [url2] [url...]\n" "\n" -"--max-speed=x\t\t-s x\tmaximale Geschwindigkeit (Bytes pro Sekunde)\n" -"--num-connections=x\t-n x\tmaximale gleichzeitige Verbindungen\n" -"--output=f\t\t-o f\tlokale Ausgabe-Datei\n" +"--max-speed=x\t\t-s x\tMaximale Geschwindigkeit (Bytes pro Sekunde)\n" +"--num-connections=x\t-n x\tMaximale gleichzeitige Verbindungen\n" +"--max-redirect=x\t\tMaximale Anzahl von Weiterleitungen\n" +"--output=f\t\t-o f\tLokale Ausgabe-Datei\n" "--search=[x]\t\t-S [x] Suche nach Spiegelservern und Abruf von x Servern\n" +"--ipv4\t\t\t-4\tIPv4-Protokoll verwenden\n" +"--ipv6\t\t\t-6\tIPv6-Protokoll verwenden\n" "--header=x\t\t-H x\tSende HTTP-Header\n" "--user-agent=x\t\t-U x\tSetze Browser-Kennung\n" -"--no-proxy\t\t-N\tkeinen Proxy-Server benutzen\n" -"--quiet\t\t\t-q\tkeine Meldungen auf Standard-Ausgabe\n" -"--verbose\t\t-v\tzusätzliche Status-Information\n" -"--help\t\t\t-h\tdiese Information\n" +"--no-proxy\t\t-N\tKeinen Proxy-Server benutzen\n" +"--insecure\t\t-k\tÜberprüfen es das SSL-Zertifikat nicht\n" +"--no-clobber\t\t-c\tDownload überspringen, wenn Datei bereits vorhanden ist\n" +"--quiet\t\t\t-q\tKeine Meldungen auf Standard-Ausgabe\n" +"--verbose\t\t-v\tZusätzliche Status-Information\n" +"--alternate\t\t-a\tAlternative Fortschrittsanzeige\n" +"--help\t\t\t-h\tDiese Information\n" +"--timeout=x\t\t-T x\tE/A und Verbindungs-Timeout einstellen\n" "--version\t\t-V\tVersions-Information\n" "\n" -"Fehler an lintux@lintux.cx melden.\n" +"Besuchen Sie https://github.com/axel-download-accelerator/axel/issues\n" -#: src/text.c:700 -#, fuzzy, c-format +#: src/text.c:706 +#, c-format msgid "Axel version %s (%s)\n" msgstr "Axel Version %s (%s)\n" -#: src/text.c:708 +#: src/text.c:714 msgid "and others." msgstr "und andere." -#: src/text.c:709 +#: src/text.c:715 msgid "" "Please, see the CREDITS file.\n" "\n" @@ -450,12 +462,12 @@ "Bitte sehen Sie die CREDITS-Datei\n" "\n" -#: src/ssl.c:92 +#: src/ssl.c:93 #, c-format msgid "SSL error: %s\n" msgstr "SSL-Fehler: %s\n" -#: src/tcp.c:63 -#, fuzzy, c-format +#: src/tcp.c:72 +#, c-format msgid "Unable to connect to server %s:%i: %s\n" -msgstr "Keine Verbindung mit %s:%i möglich\n" +msgstr "Keine Verbindung mit %s:%i möglich: %s\n" diff -Nru axel-2.17.3/po/es.po axel-2.17.5/po/es.po --- axel-2.17.3/po/es.po 2019-05-20 16:59:00.000000000 +0000 +++ axel-2.17.5/po/es.po 2019-07-23 17:53:03.000000000 +0000 @@ -1,15 +1,14 @@ # Spanish translations for axel package. -# Copyright 2017 Ismael Luceno +# Copyright 2017, 2019 Ismael Luceno # This file is distributed under the same license as the axel package. # Ismael Luceno , 2017. # msgid "" msgstr "" -"Project-Id-Version: axel 2.16\n" +"Project-Id-Version: axel 2.17.4\n" "Report-Msgid-Bugs-To: https://github.com/axel-download-accelerator/axel/" "issues\n" -"POT-Creation-Date: 2017-10-22 00:28-0300\n" -"PO-Revision-Date: 2017-11-24 22:35-0300\n" +"PO-Revision-Date: 2019-07-12 20:20+0200\n" "Last-Translator: Ismael Luceno \n" "Language-Team: Spanish\n" "Language: es\n" @@ -18,79 +17,79 @@ "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: src/axel.c:90 +#: src/axel.c:94 msgid "Buffer resized for this speed." msgstr "Buffer redimensionado para ésta velocidad." -#: src/axel.c:107 +#: src/axel.c:112 msgid "Invalid URL" msgstr "URL inválida" -#: src/axel.c:135 +#: src/axel.c:140 msgid "Could not parse URL.\n" msgstr "No se puede analizar la URL.\n" -#: src/axel.c:159 +#: src/axel.c:164 #, c-format msgid "Incomplete download found, ignoring no-clobber option\n" msgstr "Descarga incompleta encontrada, ignorando opción no-clobber\n" -#: src/axel.c:162 +#: src/axel.c:167 #, c-format msgid "File '%s' already there; not retrieving.\n" msgstr "Archivo '%s' ya existe; no recuperando.\n" -#: src/axel.c:192 +#: src/axel.c:197 #, c-format -msgid "File size: %lld bytes" -msgstr "Tamaño de archivo: %lld bytes" +msgid "File size: %zu bytes" +msgstr "Tamaño de archivo: %zu bytes" -#: src/axel.c:195 +#: src/axel.c:200 msgid "File size: unavailable" msgstr "Tamaño de archivo: no disponible" -#: src/axel.c:224 +#: src/axel.c:229 #, c-format msgid "Opening output file %s" msgstr "Abriendo archivo de salida %s" -#: src/axel.c:232 +#: src/axel.c:237 msgid "Server unsupported, starting from scratch with one connection." msgstr "Servidor no soportado, comenzando desde cero con una conexión." -#: src/axel.c:249 +#: src/axel.c:254 #, c-format msgid "%s.st: Error, truncated state file\n" msgstr "%s.st: Error, archivo de estado truncado\n" -#: src/axel.c:257 +#: src/axel.c:262 #, c-format msgid "Bogus number of connections stored in state file\n" msgstr "Número incorrecto de conexiones almacenado en el archivo de estado\n" -#: src/axel.c:269 +#: src/axel.c:274 #, c-format msgid "State file has old format.\n" msgstr "Archivo de estado en formato antiguo.\n" -#: src/axel.c:302 +#: src/axel.c:307 #, c-format -msgid "State file found: %lld bytes downloaded, %lld to go." -msgstr "Archivo de estado encontrado: %lld bytes descargados, %lld pendientes." +msgid "State file found: %zu bytes downloaded, %zu to go." +msgstr "Archivo de estado encontrado: %zu bytes descargados, %zu pendientes." -#: src/axel.c:308 src/axel.c:319 +#: src/axel.c:313 src/axel.c:324 msgid "Error opening local file" msgstr "Error abriendo archivo local" -#: src/axel.c:332 +#: src/axel.c:337 msgid "Crappy filesystem/OS.. Working around. :-(" msgstr "Sistema de archivos/SO horrible. Usando solución alternativa. :-(" -#: src/axel.c:346 +#: src/axel.c:350 msgid "Error creating local file" msgstr "Error creando archivo local" -#: src/axel.c:378 +#: src/axel.c:383 #, c-format msgid "" "\n" @@ -99,99 +98,99 @@ "\n" "Reactivar conexión %d\n" -#: src/axel.c:408 +#: src/axel.c:413 msgid "Starting download" msgstr "Comenzando descarga" -#: src/axel.c:419 src/axel.c:601 +#: src/axel.c:421 src/axel.c:604 #, c-format msgid "Connection %i downloading from %s:%i using interface %s" msgstr "Conexión %i descargando desde %s:%i usando la interfaz %s" -#: src/axel.c:429 src/axel.c:613 +#: src/axel.c:431 src/axel.c:616 msgid "pthread error!!!" msgstr "error de pthread!!!" -#: src/axel.c:474 +#: src/axel.c:477 #, c-format msgid "Error while waiting for connection: %s" msgstr "Error al esperar por conexión: %s" -#: src/axel.c:506 +#: src/axel.c:509 #, c-format msgid "Connection %i timed out" msgstr "Conexión %i caducada" -#: src/axel.c:519 +#: src/axel.c:522 #, c-format msgid "Error on connection %i! Connection closed" msgstr "Error en conexión %i! Conexión cerrada" -#: src/axel.c:533 +#: src/axel.c:536 #, c-format msgid "Connection %i unexpectedly closed" msgstr "Conexión %i cerrada inesperadamente" -#: src/axel.c:537 src/axel.c:553 +#: src/axel.c:540 src/axel.c:556 #, c-format msgid "Connection %i finished" msgstr "Conexión %i finalizada" -#: src/axel.c:563 +#: src/axel.c:566 msgid "Write error!" msgstr "Error de escritura!" -#: src/axel.c:661 +#: src/axel.c:664 #, c-format msgid "Error while enforcing throttling: %s" msgstr "Error al aplicar regulación: %s" -#: src/axel.c:839 +#: src/axel.c:844 #, c-format msgid "Too few bytes remaining, forcing a single connection\n" msgstr "Quedan muy pocos bytes, forzando una única conexión\n" -#: src/axel.c:858 +#: src/axel.c:863 #, c-format msgid "Downloading %lld-%lld using conn. %i\n" msgstr "Descargando %lld-%lld usando conn. %i\n" -#: src/conf.c:65 +#: src/conf.c:68 #, c-format msgid "I/O error while reading config file: %s\n" msgstr "Error de E/S al leer archivo de configuración: %s\n" -#: src/conf.c:80 +#: src/conf.c:83 #, c-format msgid "Unknown protocol %s\n" msgstr "Protocolo %s desconocido\n" -#: src/conf.c:185 +#: src/conf.c:187 #, c-format msgid "Requested too many connections, max is %i\n" msgstr "Demasiadas conexiones solicitadas, el máximo es %i\n" -#: src/conf.c:200 +#: src/conf.c:202 #, c-format msgid "Error in %s line %i.\n" msgstr "Error en %s línea %i.\n" -#: src/conf.c:265 +#: src/conf.c:266 #, c-format msgid "HOME env variable too long\n" msgstr "Variable de entorno HOME demasiado larga\n" -#: src/conn.c:77 -#, fuzzy, c-format +#: src/conn.c:76 +#, c-format msgid "Unsupported protocol\n" msgstr "Protocolo no soportado\n" -#: src/conn.c:83 +#: src/conn.c:82 #, c-format msgid "Secure protocol is not supported\n" msgstr "Protocolo seguro no está soportado\n" -#: src/conn.c:411 src/ftp.c:131 +#: src/conn.c:413 src/ftp.c:131 #, c-format msgid "Too many redirects.\n" msgstr "Demasiadas redirecciones.\n" @@ -211,17 +210,17 @@ msgid "Multiple matches for this URL.\n" msgstr "Múltiples coincidencias para ésta URL.\n" -#: src/ftp.c:258 +#: src/ftp.c:260 #, c-format msgid "Error opening passive data connection.\n" msgstr "Error abriendo conexión de datos pasiva.\n" -#: src/ftp.c:292 +#: src/ftp.c:294 #, c-format msgid "Error writing command %s\n" msgstr "Error escribiendo el comando %s\n" -#: src/ftp.c:317 src/http.c:249 +#: src/ftp.c:319 src/http.c:249 #, c-format msgid "Connection gone.\n" msgstr "Conexión desaparecida.\n" @@ -236,73 +235,73 @@ msgid "Connection gone while writing.\n" msgstr "Conexión desaparecida al escribir.\n" -#: src/text.c:202 +#: src/text.c:201 #, c-format msgid "Can't redirect stdout to /dev/null.\n" msgstr "No se puede redirigir stdout a /dev/null.\n" -#: src/text.c:245 +#: src/text.c:244 #, c-format msgid "Error when trying to read URL (Too long?).\n" msgstr "Error al intentar leer la URL (¿demasiado larga?).\n" -#: src/text.c:253 +#: src/text.c:252 #, c-format -msgid "Can't handle URLs of length over %d\n" -msgstr "No se pueden manejar URLs de longitud mayor a %d\n" +msgid "Can't handle URLs of length over %zu\n" +msgstr "No se pueden manejar URLs de longitud mayor a %zu\n" -#: src/text.c:259 +#: src/text.c:258 #, c-format msgid "Initializing download: %s\n" msgstr "Inicializando descarga: %s\n" -#: src/text.c:267 +#: src/text.c:266 #, c-format msgid "Doing search...\n" msgstr "Buscando...\n" -#: src/text.c:270 +#: src/text.c:269 #, c-format msgid "File not found\n" msgstr "Archivo no encontrado\n" -#: src/text.c:274 +#: src/text.c:273 #, c-format msgid "Testing speeds, this can take a while...\n" msgstr "Probando velocidades, esto puede tomar un tiempo...\n" -#: src/text.c:277 +#: src/text.c:276 #, c-format msgid "Speed testing failed\n" msgstr "Falló la prueba de velocidad\n" -#: src/text.c:283 +#: src/text.c:282 #, c-format msgid "%i usable servers found, will use these URLs:\n" msgstr "%i servidores usables encontrados, se utilizarán éstas URLs:\n" -#: src/text.c:286 +#: src/text.c:285 msgid "Speed" msgstr "Velocidad" -#: src/text.c:334 +#: src/text.c:333 #, c-format msgid "Filename too long!\n" msgstr "¡Nombre de archivo demasiado largo!\n" -#: src/text.c:347 +#: src/text.c:346 #, c-format msgid "No state file, cannot resume!\n" msgstr "¡No hay archivo de estado, no se puede reanudar!\n" -#: src/text.c:351 +#: src/text.c:350 #, c-format msgid "State file found, but no downloaded data. Starting from scratch.\n" msgstr "" "Archivo de estado encontrado, pero no hay datos descargados. Comenzando " "desde cero.\n" -#: src/text.c:469 +#: src/text.c:438 #, c-format msgid "" "\n" @@ -311,48 +310,48 @@ "\n" "Descargado %s en %s. (%.2f KB/s)\n" -#: src/text.c:496 +#: src/text.c:475 msgid "Kilo" msgstr "Kilo" -#: src/text.c:496 +#: src/text.c:475 msgid "Mega" msgstr "Mega" -#: src/text.c:496 +#: src/text.c:475 msgid "Giga" msgstr "Giga" -#: src/text.c:496 +#: src/text.c:475 msgid "Tera" msgstr "Tera" -#: src/text.c:502 +#: src/text.c:481 #, c-format msgid "%g %sbyte(s)" msgstr "%g %sbyte(s)" -#: src/text.c:518 +#: src/text.c:497 #, c-format msgid "%i:%02i:%02i hour(s)" msgstr "%i:%02i:%02i hora(s)" -#: src/text.c:520 +#: src/text.c:499 #, c-format msgid "%i:%02i minute(s)" msgstr "%i:%02i minuto(s)" -#: src/text.c:522 -#, fuzzy, c-format +#: src/text.c:501 +#, c-format msgid "%i second(s)" msgstr "%i segundo(s)" -#: src/text.c:586 +#: src/text.c:594 #, c-format msgid "Can't setup alternate output. Deactivating.\n" msgstr "No se puede configurar la salida alternativa. Desactivando.\n" -#: src/text.c:650 +#: src/text.c:656 #, c-format msgid "" "Usage: axel [options] url1 [url2] [url...]\n" @@ -397,8 +396,9 @@ "-T x\tEstablecer tiempo de expiración de E/S y conexión\n" "-V\tInformación de versión\n" "\n" +"Visita https://github.com/axel-download-accelerator/axel/issues\n" -#: src/text.c:672 +#: src/text.c:678 #, c-format msgid "" "Usage: axel [options] url1 [url2] [url...]\n" @@ -427,9 +427,9 @@ msgstr "" "Uso: axel [opciones] url1 [url2] [url...]\n" "\n" -"--max-speed=x\t\t-s x\tEspecifcar velocidad máxima (bytes por segundo)\n" +"--max-speed=x\t\t-s x\tEspecificar velocidad máxima (bytes por segundo)\n" "--num-connections=x\t-n x\tEspecificar número máximo de conexiones\n" -"--max-redirect=x\t\tSpecify maximum number of redirections\n" +"--max-redirect=x\t\tEspecificar número máximo de redirecciones\n" "--output=f\t\t-o f\tEspecificar archivo de salida local\n" "--search[=n]\t\t-S[n]\tBuscar por espejos y descargar desde n servidores\n" "--ipv4\t\t\t-4\tUsar el protocolo IPv4\n" @@ -446,17 +446,19 @@ "--timeout=x\t\t-T x\tEstablecer tiempo de expiración de E/S y conexión\n" "--version\t\t-V\tInformación de versión\n" "\n" +"Visita https://github.com/axel-download-accelerator/axel/issues para " +"reportar bugs\n" -#: src/text.c:700 +#: src/text.c:706 #, c-format msgid "Axel version %s (%s)\n" msgstr "Axel versión %s (%s)\n" -#: src/text.c:708 +#: src/text.c:714 msgid "and others." msgstr "y otros." -#: src/text.c:709 +#: src/text.c:715 msgid "" "Please, see the CREDITS file.\n" "\n" @@ -464,12 +466,12 @@ "Por favor, vea el archivo CREDITS.\n" "\n" -#: src/ssl.c:92 +#: src/ssl.c:93 #, c-format msgid "SSL error: %s\n" msgstr "Error de SSL: %s\n" -#: src/tcp.c:63 +#: src/tcp.c:72 #, c-format msgid "Unable to connect to server %s:%i: %s\n" msgstr "Incapaz de conectarse al servidor %s:%i: %s\n" diff -Nru axel-2.17.3/po/id_ID.po axel-2.17.5/po/id_ID.po --- axel-2.17.3/po/id_ID.po 2019-05-20 16:59:00.000000000 +0000 +++ axel-2.17.5/po/id_ID.po 2019-07-23 17:53:03.000000000 +0000 @@ -18,80 +18,80 @@ "Plural-Forms: nplurals=1; plural=0;\n" "X-Generator: Poedit 1.8.11\n" -#: src/axel.c:90 +#: src/axel.c:94 msgid "Buffer resized for this speed." msgstr "Buffer diubah ukurannya untuk kecepatan ini." -#: src/axel.c:107 +#: src/axel.c:112 msgid "Invalid URL" msgstr "URL tidak valid" -#: src/axel.c:135 +#: src/axel.c:140 msgid "Could not parse URL.\n" msgstr "Tidak bisa mengurai URL.\n" -#: src/axel.c:159 +#: src/axel.c:164 #, c-format msgid "Incomplete download found, ignoring no-clobber option\n" msgstr "Unduhan tidak lengkap ditemukan, mengabaikan opsi no-clobber\n" -#: src/axel.c:162 +#: src/axel.c:167 #, c-format msgid "File '%s' already there; not retrieving.\n" msgstr "Berkas '%s' sudah ada; tidak mengambil.\n" -#: src/axel.c:192 -#, c-format -msgid "File size: %lld bytes" -msgstr "Ukuran berkas: %lld bytes" +#: src/axel.c:197 +#, fuzzy, c-format +msgid "File size: %zu bytes" +msgstr "Ukuran berkas: %zu bytes" -#: src/axel.c:195 +#: src/axel.c:200 #, fuzzy msgid "File size: unavailable" -msgstr "Ukuran berkas: %lld bytes" +msgstr "Ukuran berkas: tidak tersedia" -#: src/axel.c:224 +#: src/axel.c:229 #, c-format msgid "Opening output file %s" msgstr "Membuka berkas keluaran %s" -#: src/axel.c:232 +#: src/axel.c:237 msgid "Server unsupported, starting from scratch with one connection." msgstr "Server tidak didukung, mulai dari dasar dengan satu koneksi." -#: src/axel.c:249 +#: src/axel.c:254 #, c-format msgid "%s.st: Error, truncated state file\n" msgstr "%s.st: Galat, bagian berkas terpotong\n" -#: src/axel.c:257 +#: src/axel.c:262 #, c-format msgid "Bogus number of connections stored in state file\n" msgstr "Jumlah koneksi palsu tersimpan dalam bagian berkas\n" -#: src/axel.c:269 +#: src/axel.c:274 #, c-format msgid "State file has old format.\n" msgstr "Bagian berkas memiliki format lama..\n" -#: src/axel.c:302 -#, c-format -msgid "State file found: %lld bytes downloaded, %lld to go." -msgstr "Bagian berkas ditemukan: %lld bytes diunduh, %lld untuk berjalan." +#: src/axel.c:307 +#, fuzzy, c-format +msgid "State file found: %zu bytes downloaded, %zu to go." +msgstr "Bagian berkas ditemukan: %zu bytes diunduh, %zu untuk berjalan." -#: src/axel.c:308 src/axel.c:319 +#: src/axel.c:313 src/axel.c:324 msgid "Error opening local file" msgstr "Galat saat membuka berkas lokal" -#: src/axel.c:332 +#: src/axel.c:337 msgid "Crappy filesystem/OS.. Working around. :-(" msgstr "Filesystem/OS jelek.. Bekerja di sekitar. :-(" -#: src/axel.c:346 +#: src/axel.c:350 msgid "Error creating local file" msgstr "Galat membuat berkas lokal" -#: src/axel.c:378 +#: src/axel.c:383 #, c-format msgid "" "\n" @@ -100,99 +100,99 @@ "\n" "Aktifkan kembali koneksi %d\n" -#: src/axel.c:408 +#: src/axel.c:413 msgid "Starting download" msgstr "Mulai mengunduh" -#: src/axel.c:419 src/axel.c:601 +#: src/axel.c:421 src/axel.c:604 #, c-format msgid "Connection %i downloading from %s:%i using interface %s" msgstr "Sambungan %i diunduh dari %s:%i menggunakan antarmuka %s" -#: src/axel.c:429 src/axel.c:613 +#: src/axel.c:431 src/axel.c:616 msgid "pthread error!!!" msgstr "pthread galat!!!" -#: src/axel.c:474 +#: src/axel.c:477 #, c-format msgid "Error while waiting for connection: %s" msgstr "Galat saat menunggu koneksi: %s" -#: src/axel.c:506 +#: src/axel.c:509 #, c-format msgid "Connection %i timed out" msgstr "Sambungan %i habis waktunya" -#: src/axel.c:519 +#: src/axel.c:522 #, c-format msgid "Error on connection %i! Connection closed" msgstr "Galat pada koneksi %i! Sambungan putus" -#: src/axel.c:533 +#: src/axel.c:536 #, c-format msgid "Connection %i unexpectedly closed" msgstr "Koneksi %i tiba-tiba putus" -#: src/axel.c:537 src/axel.c:553 +#: src/axel.c:540 src/axel.c:556 #, c-format msgid "Connection %i finished" msgstr "Koneksi %i selesai" -#: src/axel.c:563 +#: src/axel.c:566 msgid "Write error!" msgstr "Tulis galat!" -#: src/axel.c:661 +#: src/axel.c:664 #, c-format msgid "Error while enforcing throttling: %s" msgstr "Galat saat menerapkan throttling: %s" -#: src/axel.c:839 +#: src/axel.c:844 #, c-format msgid "Too few bytes remaining, forcing a single connection\n" msgstr "" -#: src/axel.c:858 +#: src/axel.c:863 #, c-format msgid "Downloading %lld-%lld using conn. %i\n" msgstr "Mengunduh %lld-%lld menggunakan conn. %i\n" -#: src/conf.c:65 +#: src/conf.c:68 #, c-format msgid "I/O error while reading config file: %s\n" msgstr "Galat I/O saat membaca berkas konfigurasi: %s\n" -#: src/conf.c:80 +#: src/conf.c:83 #, c-format msgid "Unknown protocol %s\n" msgstr "Protokol tidak dikenal %s\n" -#: src/conf.c:185 +#: src/conf.c:187 #, c-format msgid "Requested too many connections, max is %i\n" msgstr "Meminta terlalu banyak koneksi, max adalah %i\n" -#: src/conf.c:200 +#: src/conf.c:202 #, c-format msgid "Error in %s line %i.\n" msgstr "Galat di %s baris %i.\n" -#: src/conf.c:265 +#: src/conf.c:266 #, c-format msgid "HOME env variable too long\n" msgstr "HOME env variabel terlalu panjang!\n" -#: src/conn.c:77 +#: src/conn.c:76 #, fuzzy, c-format msgid "Unsupported protocol\n" msgstr "Protokol yang tidak didukung\n" -#: src/conn.c:83 +#: src/conn.c:82 #, c-format msgid "Secure protocol is not supported\n" msgstr "Protokol aman tidak didukung\n" -#: src/conn.c:411 src/ftp.c:131 +#: src/conn.c:413 src/ftp.c:131 #, c-format msgid "Too many redirects.\n" msgstr "Terlalu banyak pengalihan.\n" @@ -212,17 +212,17 @@ msgid "Multiple matches for this URL.\n" msgstr "Beberapa kecocokan untuk URL ini.\n" -#: src/ftp.c:258 +#: src/ftp.c:260 #, c-format msgid "Error opening passive data connection.\n" msgstr "Galat saat membuka koneksi data pasif.\n" -#: src/ftp.c:292 +#: src/ftp.c:294 #, c-format msgid "Error writing command %s\n" msgstr "Galat menulis perintah %s\n" -#: src/ftp.c:317 src/http.c:249 +#: src/ftp.c:319 src/http.c:249 #, c-format msgid "Connection gone.\n" msgstr "Koneksi hilang.\n" @@ -237,71 +237,71 @@ msgid "Connection gone while writing.\n" msgstr "Koneksi hilang saat menulis.\n" -#: src/text.c:202 +#: src/text.c:201 #, c-format msgid "Can't redirect stdout to /dev/null.\n" msgstr "Tidak bisa mengalihkan stdout ke /dev/null.\n" -#: src/text.c:245 +#: src/text.c:244 #, c-format msgid "Error when trying to read URL (Too long?).\n" msgstr "Galat saat mencoba membaca URL (Terlalu lama?).\n" -#: src/text.c:253 -#, c-format -msgid "Can't handle URLs of length over %d\n" -msgstr "Tidak dapat menangani URL dengan panjang di atas %d\n" +#: src/text.c:252 +#, fuzzy, c-format +msgid "Can't handle URLs of length over %zu\n" +msgstr "Tidak dapat menangani URL dengan panjang di atas %zu\n" -#: src/text.c:259 +#: src/text.c:258 #, c-format msgid "Initializing download: %s\n" msgstr "Menginisialisasi unduh: %s\n" -#: src/text.c:267 +#: src/text.c:266 #, c-format msgid "Doing search...\n" msgstr "Melakukan pencarian..\n" -#: src/text.c:270 +#: src/text.c:269 #, c-format msgid "File not found\n" msgstr "Berkas tidak ditemukan\n" -#: src/text.c:274 +#: src/text.c:273 #, c-format msgid "Testing speeds, this can take a while...\n" msgstr "Menguji kecepatan, ini bisa memakan waktu beberapa lama...\n" -#: src/text.c:277 +#: src/text.c:276 #, c-format msgid "Speed testing failed\n" msgstr "Pengujian kecepatan gagal\n" -#: src/text.c:283 +#: src/text.c:282 #, c-format msgid "%i usable servers found, will use these URLs:\n" msgstr "%i server yang dapat digunakan ditemukan, akan menggunakan URL ini:\n" -#: src/text.c:286 +#: src/text.c:285 msgid "Speed" msgstr "Kecepatan" -#: src/text.c:334 +#: src/text.c:333 #, c-format msgid "Filename too long!\n" msgstr "Nama berkas terlalu panjang!\n" -#: src/text.c:347 +#: src/text.c:346 #, c-format msgid "No state file, cannot resume!\n" msgstr "Tidak ada bagian berkas, tidak bisa melanjutkan!\n" -#: src/text.c:351 +#: src/text.c:350 #, c-format msgid "State file found, but no downloaded data. Starting from scratch.\n" msgstr "Bagian berkas ditemukan, tapi data tidak diunduh. Mulai dari awal.\n" -#: src/text.c:469 +#: src/text.c:438 #, c-format msgid "" "\n" @@ -310,48 +310,48 @@ "\n" "Diunduh %s in %s. (%.2f KB/s)\n" -#: src/text.c:496 +#: src/text.c:475 msgid "Kilo" msgstr "Kilo" -#: src/text.c:496 +#: src/text.c:475 msgid "Mega" msgstr "Mega" -#: src/text.c:496 +#: src/text.c:475 msgid "Giga" msgstr "Giga" -#: src/text.c:496 +#: src/text.c:475 msgid "Tera" msgstr "Tera" -#: src/text.c:502 +#: src/text.c:481 #, c-format msgid "%g %sbyte(s)" msgstr "%g %sbyte(s)" -#: src/text.c:518 +#: src/text.c:497 #, c-format msgid "%i:%02i:%02i hour(s)" msgstr "%i:%02i:%02i jam(s)" -#: src/text.c:520 +#: src/text.c:499 #, c-format msgid "%i:%02i minute(s)" msgstr "%i:%02i menit(s)" -#: src/text.c:522 +#: src/text.c:501 #, fuzzy, c-format msgid "%i second(s)" msgstr "%i detik" -#: src/text.c:586 +#: src/text.c:594 #, c-format msgid "Can't setup alternate output. Deactivating.\n" msgstr "Tidak dapat menyiapkan keluaran alternatif. Menonaktifkan.\n" -#: src/text.c:650 +#: src/text.c:656 #, fuzzy, c-format msgid "" "Usage: axel [options] url1 [url2] [url...]\n" @@ -397,7 +397,7 @@ "\n" "Kunjungi https://github.com/axel-download-accelerator/axel/issues\n" -#: src/text.c:672 +#: src/text.c:678 #, fuzzy, c-format msgid "" "Usage: axel [options] url1 [url2] [url...]\n" @@ -447,16 +447,16 @@ "Kunjungi https://github.com/axel-download-accelerator/axel/issues untuk " "melaporkan kutu\n" -#: src/text.c:700 +#: src/text.c:706 #, c-format msgid "Axel version %s (%s)\n" msgstr "Axel versi %s (%s)\n" -#: src/text.c:708 +#: src/text.c:714 msgid "and others." msgstr "dan lainnya." -#: src/text.c:709 +#: src/text.c:715 msgid "" "Please, see the CREDITS file.\n" "\n" @@ -464,12 +464,12 @@ "Silakan, lihat berkas CREDITS.\n" "\n" -#: src/ssl.c:92 +#: src/ssl.c:93 #, c-format msgid "SSL error: %s\n" msgstr "SSL galat: %s\n" -#: src/tcp.c:63 +#: src/tcp.c:72 #, c-format msgid "Unable to connect to server %s:%i: %s\n" msgstr "Tidak bisa terhubung ke server %s:%i: %s\n" diff -Nru axel-2.17.3/po/it.po axel-2.17.5/po/it.po --- axel-2.17.3/po/it.po 2019-05-20 16:59:00.000000000 +0000 +++ axel-2.17.5/po/it.po 2019-07-23 17:53:03.000000000 +0000 @@ -18,80 +18,79 @@ "Plural-Forms: nplurals=2; plural=(n != 1);\n" "X-Generator: Poedit 2.0.3\n" -#: src/axel.c:90 +#: src/axel.c:94 msgid "Buffer resized for this speed." msgstr "Buffer ridimensionato per questa velocità." -#: src/axel.c:107 +#: src/axel.c:112 msgid "Invalid URL" msgstr "URL non valido" -#: src/axel.c:135 +#: src/axel.c:140 msgid "Could not parse URL.\n" msgstr "Impossibile interpretare l'URL.\n" -#: src/axel.c:159 +#: src/axel.c:164 #, c-format msgid "Incomplete download found, ignoring no-clobber option\n" msgstr "Trovato download incompleto, ignoro l'opzione \"no-clobber\"\n" -#: src/axel.c:162 +#: src/axel.c:167 #, c-format msgid "File '%s' already there; not retrieving.\n" msgstr "Il file '%s' è già presente; download non effettuato.\n" -#: src/axel.c:192 -#, c-format -msgid "File size: %lld bytes" -msgstr "Dimensione file: %lld byte" +#: src/axel.c:197 +#, fuzzy, c-format +msgid "File size: %zu bytes" +msgstr "Dimensione file: %zu byte" -#: src/axel.c:195 -#, fuzzy +#: src/axel.c:200 msgid "File size: unavailable" -msgstr "Dimensione file: %lld byte" +msgstr "Dimensione file: non disponibile" -#: src/axel.c:224 +#: src/axel.c:229 #, c-format msgid "Opening output file %s" msgstr "Sto aprendo il file di output %s" -#: src/axel.c:232 +#: src/axel.c:237 msgid "Server unsupported, starting from scratch with one connection." msgstr "Server non supportato, sto ricominciando da zero con una connessione." -#: src/axel.c:249 +#: src/axel.c:254 #, c-format msgid "%s.st: Error, truncated state file\n" msgstr "%s.st: Errore, file di stato troncato\n" -#: src/axel.c:257 +#: src/axel.c:262 #, c-format msgid "Bogus number of connections stored in state file\n" msgstr "" -#: src/axel.c:269 +#: src/axel.c:274 #, c-format msgid "State file has old format.\n" msgstr "Il file di stato utilizza il vecchio formato.\n" -#: src/axel.c:302 +#: src/axel.c:307 #, c-format -msgid "State file found: %lld bytes downloaded, %lld to go." -msgstr "Trovato file di stato: %lld byte scaricati, %lld al termine." +msgid "State file found: %zu bytes downloaded, %zu to go." +msgstr "Trovato file di stato: %zu byte scaricati, %zu al termine." -#: src/axel.c:308 src/axel.c:319 +#: src/axel.c:313 src/axel.c:324 msgid "Error opening local file" msgstr "Errore nell'apertura del file locale" -#: src/axel.c:332 +#: src/axel.c:337 msgid "Crappy filesystem/OS.. Working around. :-(" msgstr "Filesystem/OS scadente.. Raggiro il problema. :-(" -#: src/axel.c:346 +#: src/axel.c:350 msgid "Error creating local file" msgstr "Errore nella creazione del file locale" -#: src/axel.c:378 +#: src/axel.c:383 #, c-format msgid "" "\n" @@ -100,99 +99,99 @@ "\n" "Riattivando la connessione %d\n" -#: src/axel.c:408 +#: src/axel.c:413 msgid "Starting download" msgstr "Inizio download" -#: src/axel.c:419 src/axel.c:601 +#: src/axel.c:421 src/axel.c:604 #, c-format msgid "Connection %i downloading from %s:%i using interface %s" msgstr "La connessione %i sta scaricando da %s:%i usando l'interfaccia %s" -#: src/axel.c:429 src/axel.c:613 +#: src/axel.c:431 src/axel.c:616 msgid "pthread error!!!" msgstr "Errore pthread!!!" -#: src/axel.c:474 +#: src/axel.c:477 #, c-format msgid "Error while waiting for connection: %s" msgstr "Errore durante l'attesa della connessione: %s" -#: src/axel.c:506 +#: src/axel.c:509 #, c-format msgid "Connection %i timed out" msgstr "Connessione %i scaduta" -#: src/axel.c:519 +#: src/axel.c:522 #, c-format msgid "Error on connection %i! Connection closed" msgstr "Errore nella connessione %i! Connessione terminata" -#: src/axel.c:533 +#: src/axel.c:536 #, c-format msgid "Connection %i unexpectedly closed" msgstr "Connessione %i terminata inaspettatamente" -#: src/axel.c:537 src/axel.c:553 +#: src/axel.c:540 src/axel.c:556 #, c-format msgid "Connection %i finished" msgstr "Connessione %i terminata" -#: src/axel.c:563 +#: src/axel.c:566 msgid "Write error!" msgstr "Errore di scrittura!" -#: src/axel.c:661 +#: src/axel.c:664 #, c-format msgid "Error while enforcing throttling: %s" msgstr "Errore nell'applicazione del limite di velocità: %s" -#: src/axel.c:839 +#: src/axel.c:844 #, c-format msgid "Too few bytes remaining, forcing a single connection\n" msgstr "Restano pochi byte, forzando una singola connessione\n" -#: src/axel.c:858 +#: src/axel.c:863 #, c-format msgid "Downloading %lld-%lld using conn. %i\n" msgstr "Scaricando %lld-%lld usando la conn. %i\n" -#: src/conf.c:65 +#: src/conf.c:68 #, c-format msgid "I/O error while reading config file: %s\n" msgstr "Errore I/O nella lettura del file di configurazione: %s\n" -#: src/conf.c:80 +#: src/conf.c:83 #, c-format msgid "Unknown protocol %s\n" msgstr "Protocollo sconosciuto %s\n" -#: src/conf.c:185 +#: src/conf.c:187 #, c-format msgid "Requested too many connections, max is %i\n" msgstr "Richiesto troppe connessioni, il massimo è %i\n" -#: src/conf.c:200 +#: src/conf.c:202 #, c-format msgid "Error in %s line %i.\n" msgstr "Errore in %s linea %i.\n" -#: src/conf.c:265 +#: src/conf.c:266 #, fuzzy, c-format msgid "HOME env variable too long\n" msgstr "Nome del file troppo lungo!\n" -#: src/conn.c:77 +#: src/conn.c:76 #, fuzzy, c-format msgid "Unsupported protocol\n" msgstr "Protocollo sconosciuto %s\n" -#: src/conn.c:83 +#: src/conn.c:82 #, c-format msgid "Secure protocol is not supported\n" msgstr "Il protocollo sicuro non è supportato\n" -#: src/conn.c:411 src/ftp.c:131 +#: src/conn.c:413 src/ftp.c:131 #, c-format msgid "Too many redirects.\n" msgstr "Troppi reindirizzamenti.\n" @@ -212,17 +211,17 @@ msgid "Multiple matches for this URL.\n" msgstr "Più corrispondenze per questo URL.\n" -#: src/ftp.c:258 +#: src/ftp.c:260 #, c-format msgid "Error opening passive data connection.\n" msgstr "Errore nella connessione passiva dati.\n" -#: src/ftp.c:292 +#: src/ftp.c:294 #, c-format msgid "Error writing command %s\n" msgstr "Errore nella scrittura del comando %s\n" -#: src/ftp.c:317 src/http.c:249 +#: src/ftp.c:319 src/http.c:249 #, c-format msgid "Connection gone.\n" msgstr "Connessione terminata.\n" @@ -237,71 +236,71 @@ msgid "Connection gone while writing.\n" msgstr "Connessione terminata durante la scrittura.\n" -#: src/text.c:202 +#: src/text.c:201 #, c-format msgid "Can't redirect stdout to /dev/null.\n" msgstr "Impossibile reindirizzare stdout a /dev/null.\n" -#: src/text.c:245 +#: src/text.c:244 #, c-format msgid "Error when trying to read URL (Too long?).\n" msgstr "Errore nella lettura dell'URL (Troppo lungo?).\n" -#: src/text.c:253 +#: src/text.c:252 #, c-format -msgid "Can't handle URLs of length over %d\n" -msgstr "Impossibile gestire URL con lunghezza superiore a %d\n" +msgid "Can't handle URLs of length over %zu\n" +msgstr "Impossibile gestire URL con lunghezza superiore a %zu\n" -#: src/text.c:259 +#: src/text.c:258 #, c-format msgid "Initializing download: %s\n" msgstr "Inizializzazione download: %s\n" -#: src/text.c:267 +#: src/text.c:266 #, c-format msgid "Doing search...\n" msgstr "Ricerca...\n" -#: src/text.c:270 +#: src/text.c:269 #, c-format msgid "File not found\n" msgstr "File non trovato\n" -#: src/text.c:274 +#: src/text.c:273 #, c-format msgid "Testing speeds, this can take a while...\n" msgstr "Testando le velocità, potrebbe volerci un po'...\n" -#: src/text.c:277 +#: src/text.c:276 #, c-format msgid "Speed testing failed\n" msgstr "Test delle velocità fallito\n" -#: src/text.c:283 +#: src/text.c:282 #, c-format msgid "%i usable servers found, will use these URLs:\n" msgstr "%i server utilizzabili trovati, userò questi URL:\n" -#: src/text.c:286 +#: src/text.c:285 msgid "Speed" msgstr "Velocità" -#: src/text.c:334 +#: src/text.c:333 #, c-format msgid "Filename too long!\n" msgstr "Nome del file troppo lungo!\n" -#: src/text.c:347 +#: src/text.c:346 #, c-format msgid "No state file, cannot resume!\n" msgstr "Nessun file di stato, non posso riprendere!\n" -#: src/text.c:351 +#: src/text.c:350 #, c-format msgid "State file found, but no downloaded data. Starting from scratch.\n" msgstr "Trovato file di stato, ma dati non scaricati. Riparto da zero.\n" -#: src/text.c:469 +#: src/text.c:438 #, c-format msgid "" "\n" @@ -310,49 +309,49 @@ "\n" "Scaricato %s in %s. (%.2f KB/s)\n" -#: src/text.c:496 +#: src/text.c:475 msgid "Kilo" msgstr "Kilo" -#: src/text.c:496 +#: src/text.c:475 msgid "Mega" msgstr "Mega" -#: src/text.c:496 +#: src/text.c:475 msgid "Giga" msgstr "Giga" -#: src/text.c:496 +#: src/text.c:475 msgid "Tera" msgstr "Tera" -#: src/text.c:502 +#: src/text.c:481 #, c-format msgid "%g %sbyte(s)" msgstr "%g %sbyte" -#: src/text.c:518 +#: src/text.c:497 #, c-format msgid "%i:%02i:%02i hour(s)" msgstr "%i:%02i:%02i ora/e" -#: src/text.c:520 +#: src/text.c:499 #, c-format msgid "%i:%02i minute(s)" msgstr "%i:%02i minuto/i" -#: src/text.c:522 +#: src/text.c:501 #, c-format msgid "%i second(s)" msgstr "%i secondo/i" -#: src/text.c:586 +#: src/text.c:594 #, c-format msgid "Can't setup alternate output. Deactivating.\n" msgstr "" "Impossibile impostare barra di progresso alternativo. Disattivazione.\n" -#: src/text.c:650 +#: src/text.c:656 #, fuzzy, c-format msgid "" "Usage: axel [options] url1 [url2] [url...]\n" @@ -398,7 +397,7 @@ "\n" "Visita il sito https://github.com/axel-download-accelerator/axel/issues\n" -#: src/text.c:672 +#: src/text.c:678 #, fuzzy, c-format msgid "" "Usage: axel [options] url1 [url2] [url...]\n" @@ -448,16 +447,16 @@ "Visita il sito https://github.com/axel-download-accelerator/axel/issues per " "riportare bug\n" -#: src/text.c:700 +#: src/text.c:706 #, c-format msgid "Axel version %s (%s)\n" msgstr "Axel versione %s (%s)\n" -#: src/text.c:708 +#: src/text.c:714 msgid "and others." msgstr "e altri." -#: src/text.c:709 +#: src/text.c:715 msgid "" "Please, see the CREDITS file.\n" "\n" @@ -465,12 +464,12 @@ "Per favore, vedere il file CREDITS.\n" "\n" -#: src/ssl.c:92 +#: src/ssl.c:93 #, c-format msgid "SSL error: %s\n" msgstr "Errore SSL: %s\n" -#: src/tcp.c:63 +#: src/tcp.c:72 #, c-format msgid "Unable to connect to server %s:%i: %s\n" msgstr "Impossibile connettersi al server %s:%i: %s\n" diff -Nru axel-2.17.3/po/ja.po axel-2.17.5/po/ja.po --- axel-2.17.3/po/ja.po 2019-05-20 16:59:00.000000000 +0000 +++ axel-2.17.5/po/ja.po 2019-07-23 17:53:03.000000000 +0000 @@ -14,83 +14,83 @@ "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -#: src/axel.c:90 +#: src/axel.c:94 msgid "Buffer resized for this speed." msgstr "このスピードに合わせバッファーをリサイズします。" -#: src/axel.c:107 +#: src/axel.c:112 msgid "Invalid URL" msgstr "無効なURL" -#: src/axel.c:135 +#: src/axel.c:140 msgid "Could not parse URL.\n" msgstr "URL を解析できません。\n" -#: src/axel.c:159 +#: src/axel.c:164 #, c-format msgid "Incomplete download found, ignoring no-clobber option\n" msgstr "" "不完全なダウンロードが見つかりましたが、no-clobberオプションは無視されます\n" -#: src/axel.c:162 +#: src/axel.c:167 #, c-format msgid "File '%s' already there; not retrieving.\n" msgstr "ファイル '%s' はすでに存在します。 だからそれは取得されません。\n" -#: src/axel.c:192 -#, c-format -msgid "File size: %lld bytes" -msgstr "ファイルサイズ: %lld バイト" +#: src/axel.c:197 +#, fuzzy, c-format +msgid "File size: %zu bytes" +msgstr "ファイルサイズ: %zu バイト" -#: src/axel.c:195 +#: src/axel.c:200 #, fuzzy msgid "File size: unavailable" -msgstr "ファイルサイズ: %lld バイト" +msgstr "ファイルサイズ: 利用不可" -#: src/axel.c:224 +#: src/axel.c:229 #, c-format msgid "Opening output file %s" msgstr "出力ファイル %s をオープンします" -#: src/axel.c:232 +#: src/axel.c:237 msgid "Server unsupported, starting from scratch with one connection." msgstr "" "サポートされていないサーバーなので、単一コネクションを使い最初から始めます。" -#: src/axel.c:249 +#: src/axel.c:254 #, c-format msgid "%s.st: Error, truncated state file\n" msgstr "%s.st: エラー、状態ファイルが切り捨てられました\n" -#: src/axel.c:257 +#: src/axel.c:262 #, c-format msgid "Bogus number of connections stored in state file\n" msgstr "状態ファイルに保存されている接続の偽の数\n" -#: src/axel.c:269 +#: src/axel.c:274 #, c-format msgid "State file has old format.\n" msgstr "状態ファイルは古い形式です。\n" -#: src/axel.c:302 -#, c-format -msgid "State file found: %lld bytes downloaded, %lld to go." -msgstr "状態ファイル発見: %lld バイトがダウンロード済み、あと %lld バイト。" +#: src/axel.c:307 +#, fuzzy, c-format +msgid "State file found: %zu bytes downloaded, %zu to go." +msgstr "状態ファイル発見: %zu バイトがダウンロード済み、あと %zu バイト。" -#: src/axel.c:308 src/axel.c:319 +#: src/axel.c:313 src/axel.c:324 msgid "Error opening local file" msgstr "ローカルファイルをオープンする際にエラー発生しました" -#: src/axel.c:332 +#: src/axel.c:337 msgid "Crappy filesystem/OS.. Working around. :-(" msgstr "ファイルシステム/OSがイマイチ。回避します。 :-(" -#: src/axel.c:346 +#: src/axel.c:350 #, fuzzy msgid "Error creating local file" msgstr "ローカルファイルをオープンする際にエラー発生しました" -#: src/axel.c:378 +#: src/axel.c:383 #, c-format msgid "" "\n" @@ -99,99 +99,99 @@ "\n" "接続 %d を再アクティブ化しています\n" -#: src/axel.c:408 +#: src/axel.c:413 msgid "Starting download" msgstr "ダウンロード開始します" -#: src/axel.c:419 src/axel.c:601 +#: src/axel.c:421 src/axel.c:604 #, c-format msgid "Connection %i downloading from %s:%i using interface %s" msgstr "接続 %i は %s:%i から、インターフェース %s でダウンロードします" -#: src/axel.c:429 src/axel.c:613 +#: src/axel.c:431 src/axel.c:616 msgid "pthread error!!!" msgstr "pthread のエラー!!!" -#: src/axel.c:474 +#: src/axel.c:477 #, fuzzy, c-format msgid "Error while waiting for connection: %s" msgstr "コマンド %s を書く際にエラー\n" -#: src/axel.c:506 +#: src/axel.c:509 #, c-format msgid "Connection %i timed out" msgstr "接続 %i がタイムアウトしました" -#: src/axel.c:519 +#: src/axel.c:522 #, c-format msgid "Error on connection %i! Connection closed" msgstr "接続 %i でエラー! コネクションをクローズしました" -#: src/axel.c:533 +#: src/axel.c:536 #, c-format msgid "Connection %i unexpectedly closed" msgstr "接続 %i が不意にクローズされました" -#: src/axel.c:537 src/axel.c:553 +#: src/axel.c:540 src/axel.c:556 #, c-format msgid "Connection %i finished" msgstr "接続 %i が終了しました" -#: src/axel.c:563 +#: src/axel.c:566 msgid "Write error!" msgstr "書き込みエラー!" -#: src/axel.c:661 +#: src/axel.c:664 #, c-format msgid "Error while enforcing throttling: %s" msgstr "調整を強制している間のエラー: %s" -#: src/axel.c:839 +#: src/axel.c:844 #, c-format msgid "Too few bytes remaining, forcing a single connection\n" msgstr "残りのバイト数が少なすぎて、単一接続が強制される\n" -#: src/axel.c:858 +#: src/axel.c:863 #, c-format msgid "Downloading %lld-%lld using conn. %i\n" msgstr "%lld-%lld をダウンロード中、接続 %i を使用して\n" -#: src/conf.c:65 +#: src/conf.c:68 #, c-format msgid "I/O error while reading config file: %s\n" msgstr "構成ファイルの読み取り中に入出力エラーが発生しました: %s\n" -#: src/conf.c:80 +#: src/conf.c:83 #, c-format msgid "Unknown protocol %s\n" msgstr "不明なプロトコル %s\n" -#: src/conf.c:185 +#: src/conf.c:187 #, c-format msgid "Requested too many connections, max is %i\n" msgstr "要求された接続が多すぎます。最大値は %i です\n" -#: src/conf.c:200 +#: src/conf.c:202 #, c-format msgid "Error in %s line %i.\n" msgstr "%s の %i 行目でエラー。\n" -#: src/conf.c:265 +#: src/conf.c:266 #, fuzzy, c-format msgid "HOME env variable too long\n" msgstr "ファイル名が長すぎます!\n" -#: src/conn.c:77 +#: src/conn.c:76 #, c-format msgid "Unsupported protocol\n" msgstr "サポートされていないプロトコル\n" -#: src/conn.c:83 +#: src/conn.c:82 #, c-format msgid "Secure protocol is not supported\n" msgstr "セキュアプロトコルはサポートされていません\n" -#: src/conn.c:411 src/ftp.c:131 +#: src/conn.c:413 src/ftp.c:131 #, c-format msgid "Too many redirects.\n" msgstr "リディレクト回数が多すぎます。\n" @@ -211,17 +211,17 @@ msgid "Multiple matches for this URL.\n" msgstr "この URL には複数のマッチがあります。\n" -#: src/ftp.c:258 +#: src/ftp.c:260 #, c-format msgid "Error opening passive data connection.\n" msgstr "受動的データー接続の開始でエラー。\n" -#: src/ftp.c:292 +#: src/ftp.c:294 #, c-format msgid "Error writing command %s\n" msgstr "コマンド %s を書く際にエラー\n" -#: src/ftp.c:317 src/http.c:249 +#: src/ftp.c:319 src/http.c:249 #, c-format msgid "Connection gone.\n" msgstr "接続が失われています。\n" @@ -236,74 +236,74 @@ msgid "Connection gone while writing.\n" msgstr "接続が失われています。\n" -#: src/text.c:202 +#: src/text.c:201 #, c-format msgid "Can't redirect stdout to /dev/null.\n" msgstr "標準出力を /dev/null にリディレクトできません。\n" -#: src/text.c:245 +#: src/text.c:244 #, c-format msgid "Error when trying to read URL (Too long?).\n" msgstr "URL を読もうとした際に(長すぎ?)エラー。\n" -#: src/text.c:253 -#, c-format -msgid "Can't handle URLs of length over %d\n" -msgstr "%d を超える長さの URL は取り扱えません\n" +#: src/text.c:252 +#, fuzzy, c-format +msgid "Can't handle URLs of length over %zu\n" +msgstr "%zu を超える長さの URL は取り扱えません\n" -#: src/text.c:259 +#: src/text.c:258 #, c-format msgid "Initializing download: %s\n" msgstr "ダウンロードを初期化: %s\n" -#: src/text.c:267 +#: src/text.c:266 #, c-format msgid "Doing search...\n" msgstr "サーチ中...\n" -#: src/text.c:270 +#: src/text.c:269 #, c-format msgid "File not found\n" msgstr "ファイルが見つかりません\n" -#: src/text.c:274 +#: src/text.c:273 #, c-format msgid "Testing speeds, this can take a while...\n" msgstr "スピードをテスト中、時間がかかるかもしれません...\n" -#: src/text.c:277 +#: src/text.c:276 #, c-format msgid "Speed testing failed\n" msgstr "スピードテストに失敗しました\n" -#: src/text.c:283 +#: src/text.c:282 #, c-format msgid "%i usable servers found, will use these URLs:\n" msgstr "" "使用可能なサーバーが %i つ見つかりましたので、以下の URL を使用します:\n" -#: src/text.c:286 +#: src/text.c:285 msgid "Speed" msgstr "スピード" -#: src/text.c:334 +#: src/text.c:333 #, c-format msgid "Filename too long!\n" msgstr "ファイル名が長すぎます!\n" -#: src/text.c:347 +#: src/text.c:346 #, c-format msgid "No state file, cannot resume!\n" msgstr "状態ファイルがありませんので、再開できません!\n" -#: src/text.c:351 +#: src/text.c:350 #, c-format msgid "State file found, but no downloaded data. Starting from scratch.\n" msgstr "" "状態ファイルが見つかったけれど、ダウンロードされたデーターが見つかりません。" "最初から始めます。\n" -#: src/text.c:469 +#: src/text.c:438 #, c-format msgid "" "\n" @@ -312,48 +312,48 @@ "\n" "%s を %s にダウンロード。(%.2f KB/s)\n" -#: src/text.c:496 +#: src/text.c:475 msgid "Kilo" msgstr "キロ" -#: src/text.c:496 +#: src/text.c:475 msgid "Mega" msgstr "メガ" -#: src/text.c:496 +#: src/text.c:475 msgid "Giga" msgstr "ギガ" -#: src/text.c:496 +#: src/text.c:475 msgid "Tera" msgstr "テラ" -#: src/text.c:502 +#: src/text.c:481 #, c-format msgid "%g %sbyte(s)" msgstr "%g %sバイト" -#: src/text.c:518 +#: src/text.c:497 #, c-format msgid "%i:%02i:%02i hour(s)" msgstr "%i 時 %02i 分 %02i 秒" -#: src/text.c:520 +#: src/text.c:499 #, c-format msgid "%i:%02i minute(s)" msgstr "%i 分 %02i 秒" -#: src/text.c:522 +#: src/text.c:501 #, fuzzy, c-format msgid "%i second(s)" msgstr "%i 秒" -#: src/text.c:586 +#: src/text.c:594 #, c-format msgid "Can't setup alternate output. Deactivating.\n" msgstr "代替出力を設定できません。 それを無効に。\n" -#: src/text.c:650 +#: src/text.c:656 #, fuzzy, c-format msgid "" "Usage: axel [options] url1 [url2] [url...]\n" @@ -397,7 +397,7 @@ "https://github.com/axel-download-accelerator/axel/issues にバグ報告を行なって" "ください\n" -#: src/text.c:672 +#: src/text.c:678 #, fuzzy, c-format msgid "" "Usage: axel [options] url1 [url2] [url...]\n" @@ -443,16 +443,16 @@ "https://github.com/axel-download-accelerator/axel/issues にバグ報告を行なって" "ください\n" -#: src/text.c:700 +#: src/text.c:706 #, c-format msgid "Axel version %s (%s)\n" msgstr "Axel バージョン %s (%s)\n" -#: src/text.c:708 +#: src/text.c:714 msgid "and others." msgstr "そして他の者。" -#: src/text.c:709 +#: src/text.c:715 msgid "" "Please, see the CREDITS file.\n" "\n" @@ -460,12 +460,12 @@ "CREDITS というファイルを見てみましょう\n" "\n" -#: src/ssl.c:92 +#: src/ssl.c:93 #, c-format msgid "SSL error: %s\n" msgstr "SSL エラー: %s\n" -#: src/tcp.c:63 +#: src/tcp.c:72 #, c-format msgid "Unable to connect to server %s:%i: %s\n" msgstr "サーバー %s:%i に接続できません: %s\n" diff -Nru axel-2.17.3/po/Makevars axel-2.17.5/po/Makevars --- axel-2.17.3/po/Makevars 2019-05-20 16:59:00.000000000 +0000 +++ axel-2.17.5/po/Makevars 2019-07-23 17:53:03.000000000 +0000 @@ -3,6 +3,9 @@ # Usually the message domain is the same as the package name. DOMAIN = $(PACKAGE) +# workaround for gettext 0.11-0.12 +mkinstalldirs = $(INSTALL) -d + # These two variables depend on the location of this directory. subdir = po top_builddir = .. diff -Nru axel-2.17.3/po/nl.po axel-2.17.5/po/nl.po --- axel-2.17.3/po/nl.po 2019-05-20 16:59:00.000000000 +0000 +++ axel-2.17.5/po/nl.po 2019-07-23 17:53:03.000000000 +0000 @@ -1,190 +1,190 @@ +# Wilmer van der Gaast , 2001 +# Ismael Luceno , 2019 msgid "" msgstr "" "Project-Id-Version: Axel\n" "Report-Msgid-Bugs-To: https://github.com/axel-download-accelerator/axel/" "issues\n" -"PO-Revision-Date: 2001-11-14 15:22+0200\n" -"Last-Translator: Wilmer van der Gaast \n" -"Language-Team: Dutch \n" +"PO-Revision-Date: 2019-07-15 11:53+0200\n" +"Last-Translator: Ismael Luceno \n" +"Language-Team: Dutch\n" "Language: nl\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8-bit\n" -#: src/axel.c:90 +#: src/axel.c:94 msgid "Buffer resized for this speed." msgstr "Buffer verkleind voor deze snelheid." -#: src/axel.c:107 +#: src/axel.c:112 msgid "Invalid URL" msgstr "" -#: src/axel.c:135 +#: src/axel.c:140 msgid "Could not parse URL.\n" msgstr "Kan URL niet verwerken.\n" -#: src/axel.c:159 +#: src/axel.c:164 #, c-format msgid "Incomplete download found, ignoring no-clobber option\n" msgstr "" -#: src/axel.c:162 +#: src/axel.c:167 #, c-format msgid "File '%s' already there; not retrieving.\n" msgstr "" -#: src/axel.c:192 +#: src/axel.c:197 #, c-format -msgid "File size: %lld bytes" -msgstr "Bestandsgrootte: %lld bytes" +msgid "File size: %zu bytes" +msgstr "Bestandsgrootte: %zu bytes" -#: src/axel.c:195 -#, fuzzy +#: src/axel.c:200 msgid "File size: unavailable" -msgstr "Bestandsgrootte: %lld bytes" +msgstr "Bestandsgrootte: niet beschikbaar" -#: src/axel.c:224 +#: src/axel.c:229 #, c-format msgid "Opening output file %s" msgstr "Openen uitvoerbestand %s" -#: src/axel.c:232 +#: src/axel.c:237 msgid "Server unsupported, starting from scratch with one connection." msgstr "Server niet ondersteund, opnieuw beginnen met 1 verbinding." -#: src/axel.c:249 +#: src/axel.c:254 #, c-format msgid "%s.st: Error, truncated state file\n" msgstr "" -#: src/axel.c:257 +#: src/axel.c:262 #, c-format msgid "Bogus number of connections stored in state file\n" msgstr "" -#: src/axel.c:269 +#: src/axel.c:274 #, c-format msgid "State file has old format.\n" msgstr "" -#: src/axel.c:302 +#: src/axel.c:307 #, c-format -msgid "State file found: %lld bytes downloaded, %lld to go." -msgstr ".st bestand gevonden: %lld bytes gedownload, %lld te gaan." +msgid "State file found: %zu bytes downloaded, %zu to go." +msgstr ".st bestand gevonden: %zu bytes gedownload, %zu te gaan." -#: src/axel.c:308 src/axel.c:319 +#: src/axel.c:313 src/axel.c:324 msgid "Error opening local file" msgstr "Fout bij openen lokaal bestand" -#: src/axel.c:332 +#: src/axel.c:337 msgid "Crappy filesystem/OS.. Working around. :-(" msgstr "Niet-fatale fout in OS/bestandssysteem, omheen werken.." -#: src/axel.c:346 -#, fuzzy +#: src/axel.c:350 msgid "Error creating local file" -msgstr "Fout bij openen lokaal bestand" +msgstr "Fout bij maken lokaal bestand" -#: src/axel.c:378 +#: src/axel.c:383 #, c-format msgid "" "\n" "Reactivate connection %d\n" msgstr "" -#: src/axel.c:408 +#: src/axel.c:413 msgid "Starting download" msgstr "Begin download" -#: src/axel.c:419 src/axel.c:601 +#: src/axel.c:421 src/axel.c:604 #, c-format msgid "Connection %i downloading from %s:%i using interface %s" msgstr "Verbinding %i gebruikt server %s:%i via interface %s" -#: src/axel.c:429 src/axel.c:613 +#: src/axel.c:431 src/axel.c:616 msgid "pthread error!!!" msgstr "pthread fout!!!" -#: src/axel.c:474 -#, fuzzy, c-format +#: src/axel.c:477 +#, c-format msgid "Error while waiting for connection: %s" -msgstr "Fout bij het schrijven van commando %s\n" +msgstr "Fout bij wachten op verbinding: %s" -#: src/axel.c:506 +#: src/axel.c:509 #, c-format msgid "Connection %i timed out" msgstr "Time-out op verbinding %i" -#: src/axel.c:519 +#: src/axel.c:522 #, c-format msgid "Error on connection %i! Connection closed" msgstr "Fout op verbinding %i! Verbinding gesloten" -#: src/axel.c:533 +#: src/axel.c:536 #, c-format msgid "Connection %i unexpectedly closed" msgstr "Verbinding %i onverwachts gesloten" -#: src/axel.c:537 src/axel.c:553 +#: src/axel.c:540 src/axel.c:556 #, c-format msgid "Connection %i finished" msgstr "Verbinding %i klaar" -#: src/axel.c:563 +#: src/axel.c:566 msgid "Write error!" msgstr "Schrijffout!" -#: src/axel.c:661 +#: src/axel.c:664 #, c-format msgid "Error while enforcing throttling: %s" msgstr "" -#: src/axel.c:839 +#: src/axel.c:844 #, c-format msgid "Too few bytes remaining, forcing a single connection\n" msgstr "" -#: src/axel.c:858 +#: src/axel.c:863 #, c-format msgid "Downloading %lld-%lld using conn. %i\n" msgstr "" -#: src/conf.c:65 +#: src/conf.c:68 #, c-format msgid "I/O error while reading config file: %s\n" msgstr "" -#: src/conf.c:80 +#: src/conf.c:83 #, c-format msgid "Unknown protocol %s\n" msgstr "" -#: src/conf.c:185 +#: src/conf.c:187 #, c-format msgid "Requested too many connections, max is %i\n" msgstr "" -#: src/conf.c:200 +#: src/conf.c:202 #, c-format msgid "Error in %s line %i.\n" msgstr "Fout in %s regel %i.\n" -#: src/conf.c:265 +#: src/conf.c:266 #, c-format msgid "HOME env variable too long\n" msgstr "" -#: src/conn.c:77 +#: src/conn.c:76 #, c-format msgid "Unsupported protocol\n" msgstr "" -#: src/conn.c:83 +#: src/conn.c:82 #, c-format msgid "Secure protocol is not supported\n" msgstr "" -#: src/conn.c:411 src/ftp.c:131 +#: src/conn.c:413 src/ftp.c:131 #, c-format msgid "Too many redirects.\n" msgstr "Te veel redirects.\n" @@ -204,17 +204,17 @@ msgid "Multiple matches for this URL.\n" msgstr "Meerdere bestanden passen bij deze URL.\n" -#: src/ftp.c:258 +#: src/ftp.c:260 #, c-format msgid "Error opening passive data connection.\n" msgstr "Fout bij het openen van een data verbinding.\n" -#: src/ftp.c:292 +#: src/ftp.c:294 #, c-format msgid "Error writing command %s\n" msgstr "Fout bij het schrijven van commando %s\n" -#: src/ftp.c:317 src/http.c:249 +#: src/ftp.c:319 src/http.c:249 #, c-format msgid "Connection gone.\n" msgstr "Verbinding gesloten.\n" @@ -225,75 +225,75 @@ msgstr "Ongeldige proxy string: %s\n" #: src/http.c:237 -#, fuzzy, c-format +#, c-format msgid "Connection gone while writing.\n" -msgstr "Verbinding gesloten.\n" +msgstr "Verbinding is verdwenen tijdens het schrijven.\n" -#: src/text.c:202 +#: src/text.c:201 #, c-format msgid "Can't redirect stdout to /dev/null.\n" msgstr "Fout bij het afsluiten van stdout.\n" -#: src/text.c:245 +#: src/text.c:244 #, c-format msgid "Error when trying to read URL (Too long?).\n" msgstr "" -#: src/text.c:253 +#: src/text.c:252 #, c-format -msgid "Can't handle URLs of length over %d\n" +msgid "Can't handle URLs of length over %zu\n" msgstr "" -#: src/text.c:259 +#: src/text.c:258 #, c-format msgid "Initializing download: %s\n" msgstr "Begin download: %s\n" -#: src/text.c:267 +#: src/text.c:266 #, c-format msgid "Doing search...\n" msgstr "Zoeken...\n" -#: src/text.c:270 +#: src/text.c:269 #, c-format msgid "File not found\n" msgstr "Bestand niet gevonden\n" -#: src/text.c:274 +#: src/text.c:273 #, c-format msgid "Testing speeds, this can take a while...\n" msgstr "Snelheden testen, dit kan even duren...\n" -#: src/text.c:277 +#: src/text.c:276 #, c-format msgid "Speed testing failed\n" msgstr "" -#: src/text.c:283 +#: src/text.c:282 #, c-format msgid "%i usable servers found, will use these URLs:\n" msgstr "%i bruikbare servers gevonden, de volgende worden gebruikt:\n" -#: src/text.c:286 +#: src/text.c:285 msgid "Speed" msgstr "" -#: src/text.c:334 +#: src/text.c:333 #, c-format msgid "Filename too long!\n" msgstr "" -#: src/text.c:347 +#: src/text.c:346 #, c-format msgid "No state file, cannot resume!\n" msgstr "Geen .st bestand, kan niet resumen!\n" -#: src/text.c:351 +#: src/text.c:350 #, c-format msgid "State file found, but no downloaded data. Starting from scratch.\n" msgstr ".st bestand gevonden maar geen uitvoerbestand. Opnieuw beginnen.\n" -#: src/text.c:469 +#: src/text.c:438 #, c-format msgid "" "\n" @@ -302,49 +302,49 @@ "\n" "%s gedownload in %s. (%.2f KB/s)\n" -#: src/text.c:496 +#: src/text.c:475 msgid "Kilo" msgstr "Kilo" -#: src/text.c:496 +#: src/text.c:475 msgid "Mega" msgstr "Mega" -#: src/text.c:496 +#: src/text.c:475 msgid "Giga" msgstr "Giga" -#: src/text.c:496 +#: src/text.c:475 msgid "Tera" msgstr "Tera" -#: src/text.c:502 +#: src/text.c:481 #, c-format msgid "%g %sbyte(s)" msgstr "%g %sbyte(s)" -#: src/text.c:518 -#, fuzzy, c-format +#: src/text.c:497 +#, c-format msgid "%i:%02i:%02i hour(s)" -msgstr "%i:%02i:%02i uur" +msgstr "%i:%02i:%02i uren" -#: src/text.c:520 -#, fuzzy, c-format +#: src/text.c:499 +#, c-format msgid "%i:%02i minute(s)" -msgstr "%i:%02i minuten" +msgstr "%i:%02i minute(n)" -#: src/text.c:522 -#, fuzzy, c-format +#: src/text.c:501 +#, c-format msgid "%i second(s)" msgstr "%i seconde(n)" -#: src/text.c:586 +#: src/text.c:594 #, c-format msgid "Can't setup alternate output. Deactivating.\n" msgstr "" -#: src/text.c:650 -#, fuzzy, c-format +#: src/text.c:656 +#, c-format msgid "" "Usage: axel [options] url1 [url2] [url...]\n" "\n" @@ -373,17 +373,25 @@ "-s x\tMaximale snelheid (bytes per seconde)\n" "-n x\tMaximale aantal verbindingen\n" "-o f\tLokaal uitvoerbestand\n" -"-S [x]\tMirrors opzoeken en x mirrors gebruiken\n" +"-S[x]\tMirrors opzoeken en x mirrors gebruiken\n" +"-4\tGebruik het IPv4-protocol\n" +"-6\tGebruik het IPv6-protocol\n" +"-H x\tHTTP-header reeks toevoegen\n" +"-U x\tStel user agent\n" "-N\tGeen proxy server gebruiken\n" +"-k\tVerifieer het SSL-certificaat niet\n" +"-c\tSla de download over als het bestand al bestaat\n" "-q\tGeen uitvoer naar stdout\n" "-v\tMeer status informatie\n" "-a\tAlternatieve voortgangs indicator\n" "-h\tDeze informatie\n" +"-T x\tStel I/O en verbinding time-out\n" "-V\tVersie informatie\n" "\n" +"Bezoek https://github.com/axel-download-accelerator/axel/issues\n" -#: src/text.c:672 -#, fuzzy, c-format +#: src/text.c:678 +#, c-format msgid "" "Usage: axel [options] url1 [url2] [url...]\n" "\n" @@ -413,37 +421,47 @@ "\n" "--max-speed=x\t\t-s x\tMaximale snelheid (bytes per seconde)\n" "--num-connections=x\t-n x\tMaximale aantal verbindingen\n" +"--max-redirect=x\t\tFIXME\n" "--output=f\t\t-o f\tLokaal uitvoerbestand\n" "--search[=x]\t\t-S [x]\tMirrors opzoeken en x mirrors gebruiken\n" +"--ipv4\t\t\t-4\tGebruik het IPv4-protocol\n" +"--ipv6\t\t\t-6\tGebruik het IPv6-protocol\n" +"--header=x\t\t-H x\tHTTP-header reeks toevoegen\n" +"--user-agent=x\t\t-U x\tStel user agent\n" "--no-proxy\t\t-N\tGeen proxy server gebruiken\n" +"--insecure\t\t-k\tVerifieer het SSL-certificaat niet\n" +"--no-clobber\t\t-c\tSla de download over als het bestand al bestaat\n" "--quiet\t\t\t-q\tGeen uitvoer naar stdout\n" "--verbose\t\t-v\tMeer status informatie\n" "--alternate\t\t-a\tAlternatieve voortgangs indicator\n" "--help\t\t\t-h\tDeze informatie\n" +"--timeout=x\t\t-T x\tStel I/O en verbinding time-out\n" "--version\t\t-V\tVersie informatie\n" "\n" +"Bezoek https://github.com/axel-download-accelerator/axel/issues om bugs te " +"melden\n" -#: src/text.c:700 -#, fuzzy, c-format +#: src/text.c:706 +#, c-format msgid "Axel version %s (%s)\n" msgstr "Axel versie %s (%s)\n" -#: src/text.c:708 +#: src/text.c:714 msgid "and others." msgstr "" -#: src/text.c:709 +#: src/text.c:715 msgid "" "Please, see the CREDITS file.\n" "\n" msgstr "" -#: src/ssl.c:92 +#: src/ssl.c:93 #, c-format msgid "SSL error: %s\n" msgstr "" -#: src/tcp.c:63 +#: src/tcp.c:72 #, c-format msgid "Unable to connect to server %s:%i: %s\n" msgstr "Kan niet verbinden met server %s:%i %s\n" diff -Nru axel-2.17.3/po/pt_BR.po axel-2.17.5/po/pt_BR.po --- axel-2.17.3/po/pt_BR.po 2019-05-20 16:59:00.000000000 +0000 +++ axel-2.17.5/po/pt_BR.po 2019-07-23 17:53:03.000000000 +0000 @@ -1,99 +1,97 @@ # Portuguese translations for axel package. # Copyright (C) 2016-2017 Joao Eriberto Mota Filho -# Copyright 2017 Ismael Luceno +# Copyright 2017-2019 Ismael Luceno # This file is distributed under the same license as the axel package. # Eriberto Mota , 2016-2017. -# Ismael Luceno , 2017. +# Ismael Luceno , 2017-2019. # msgid "" msgstr "" -"Project-Id-Version: axel 2.16\n" +"Project-Id-Version: axel 2.17.4\n" "Report-Msgid-Bugs-To: https://github.com/axel-download-accelerator/axel/" "issues\n" -"PO-Revision-Date: 2017-11-24 22:43-0300\n" -"Last-Translator: Joao Eriberto Mota Filho \n" +"PO-Revision-Date: 2019-07-14 17:07+0200\n" +"Last-Translator: Ismael Luceno \n" "Language-Team: Brazilian Portuguese\n" "Language: pt_BR\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n" -"X-Generator: Poedit 1.8.11\n" -#: src/axel.c:90 +#: src/axel.c:94 msgid "Buffer resized for this speed." msgstr "Buffer redimensionado para esta velocidade." -#: src/axel.c:107 +#: src/axel.c:112 msgid "Invalid URL" msgstr "URL inválida" -#: src/axel.c:135 +#: src/axel.c:140 msgid "Could not parse URL.\n" msgstr "Não posso analisar esta URL.\n" -#: src/axel.c:159 +#: src/axel.c:164 #, c-format msgid "Incomplete download found, ignoring no-clobber option\n" msgstr "Encontrado um download incompleto, ignorando opção no-clobber\n" -#: src/axel.c:162 +#: src/axel.c:167 #, c-format msgid "File '%s' already there; not retrieving.\n" msgstr "Arquivo '%s' já existe; ignorando novo download do mesmo.\n" -#: src/axel.c:192 +#: src/axel.c:197 #, c-format -msgid "File size: %lld bytes" -msgstr "Tamanho do arquivo: %lld bytes" +msgid "File size: %zu bytes" +msgstr "Tamanho do arquivo: %zu bytes" -#: src/axel.c:195 -#, fuzzy +#: src/axel.c:200 msgid "File size: unavailable" -msgstr "Tamanho do arquivo: %lld bytes" +msgstr "Tamanho do arquivo: indisponível" -#: src/axel.c:224 +#: src/axel.c:229 #, c-format msgid "Opening output file %s" msgstr "Abrindo o arquivo de saída %s" -#: src/axel.c:232 +#: src/axel.c:237 msgid "Server unsupported, starting from scratch with one connection." msgstr "Servidor não suportado. Iniciando do zero com apenas uma conexão." -#: src/axel.c:249 +#: src/axel.c:254 #, c-format msgid "%s.st: Error, truncated state file\n" msgstr "%s.st: Erro, estado do arquivo alterado\n" -#: src/axel.c:257 +#: src/axel.c:262 #, c-format msgid "Bogus number of connections stored in state file\n" msgstr "Número incorrecto de conexões armazenado no arquivo de estado\n" -#: src/axel.c:269 +#: src/axel.c:274 #, c-format msgid "State file has old format.\n" msgstr "Estado do arquivo foi alterado.\n" -#: src/axel.c:302 +#: src/axel.c:307 #, c-format -msgid "State file found: %lld bytes downloaded, %lld to go." -msgstr "Situação do arquivo: %lld bytes baixados, %lld restantes." +msgid "State file found: %zu bytes downloaded, %zu to go." +msgstr "Arquivo de estado encontrado: %zu bytes baixados, %zu restantes." -#: src/axel.c:308 src/axel.c:319 +#: src/axel.c:313 src/axel.c:324 msgid "Error opening local file" msgstr "Erro ao abrir o arquivo local" -#: src/axel.c:332 +#: src/axel.c:337 msgid "Crappy filesystem/OS.. Working around. :-(" msgstr "Filesystem/SO ruim... Trabalhando em torno disso. :-(" -#: src/axel.c:346 +#: src/axel.c:350 msgid "Error creating local file" msgstr "Erro ao criar o arquivo local" -#: src/axel.c:378 +#: src/axel.c:383 #, c-format msgid "" "\n" @@ -102,99 +100,99 @@ "\n" "Reativar conexão %d\n" -#: src/axel.c:408 +#: src/axel.c:413 msgid "Starting download" msgstr "Iniciando o download" -#: src/axel.c:419 src/axel.c:601 +#: src/axel.c:421 src/axel.c:604 #, c-format msgid "Connection %i downloading from %s:%i using interface %s" msgstr "Conexão %i baixando a partir de %s:%i, usando interface %s" -#: src/axel.c:429 src/axel.c:613 +#: src/axel.c:431 src/axel.c:616 msgid "pthread error!!!" msgstr "erro de pthread!!!" -#: src/axel.c:474 +#: src/axel.c:477 #, c-format msgid "Error while waiting for connection: %s" msgstr "Erro ao esperar por conexão: %s" -#: src/axel.c:506 +#: src/axel.c:509 #, c-format msgid "Connection %i timed out" msgstr "Tempo esgotado para a conexão %i" -#: src/axel.c:519 +#: src/axel.c:522 #, c-format msgid "Error on connection %i! Connection closed" msgstr "Erro na conexão %i! Conexão fechada." -#: src/axel.c:533 +#: src/axel.c:536 #, c-format msgid "Connection %i unexpectedly closed" msgstr "Conexão %i fechada inesperadamente" -#: src/axel.c:537 src/axel.c:553 +#: src/axel.c:540 src/axel.c:556 #, c-format msgid "Connection %i finished" msgstr "Conexão %i finalizada" -#: src/axel.c:563 +#: src/axel.c:566 msgid "Write error!" msgstr "Erro de escrita!" -#: src/axel.c:661 +#: src/axel.c:664 #, c-format msgid "Error while enforcing throttling: %s" msgstr "Erro ao aplicar regulagem de velocidade: %s" -#: src/axel.c:839 +#: src/axel.c:844 #, c-format msgid "Too few bytes remaining, forcing a single connection\n" msgstr "Muito poucos bytes restantes, forçando uma única conexão\n" -#: src/axel.c:858 +#: src/axel.c:863 #, c-format msgid "Downloading %lld-%lld using conn. %i\n" msgstr "Baixando %lld-%lld usando conexão %i\n" -#: src/conf.c:65 +#: src/conf.c:68 #, c-format msgid "I/O error while reading config file: %s\n" msgstr "Erro de I/O ao ler arquivo de configuração: %s\n" -#: src/conf.c:80 +#: src/conf.c:83 #, c-format msgid "Unknown protocol %s\n" msgstr "Protocolo desconhecido %s\n" -#: src/conf.c:185 -#, fuzzy, c-format +#: src/conf.c:187 +#, c-format msgid "Requested too many connections, max is %i\n" msgstr "Demasiadas conexões solicitadas, o máximo é %i\n" -#: src/conf.c:200 +#: src/conf.c:202 #, c-format msgid "Error in %s line %i.\n" msgstr "Erro em %s linha %i.\n" -#: src/conf.c:265 -#, fuzzy, c-format +#: src/conf.c:266 +#, c-format msgid "HOME env variable too long\n" -msgstr "Nome de arquivo muito longo!\n" +msgstr "Variável HOME muito longa\n" -#: src/conn.c:77 -#, fuzzy, c-format +#: src/conn.c:76 +#, c-format msgid "Unsupported protocol\n" msgstr "Protocolo não suportado\n" -#: src/conn.c:83 +#: src/conn.c:82 #, c-format msgid "Secure protocol is not supported\n" msgstr "Protocolo seguro não suportado\n" -#: src/conn.c:411 src/ftp.c:131 +#: src/conn.c:413 src/ftp.c:131 #, c-format msgid "Too many redirects.\n" msgstr "Redirecionamentos excessivos.\n" @@ -214,17 +212,17 @@ msgid "Multiple matches for this URL.\n" msgstr "Muitas possibilidades (matches) para esta URL.\n" -#: src/ftp.c:258 +#: src/ftp.c:260 #, c-format msgid "Error opening passive data connection.\n" msgstr "Erro ao abrir conexão passiva.\n" -#: src/ftp.c:292 +#: src/ftp.c:294 #, c-format msgid "Error writing command %s\n" msgstr "Erro ao escrever comando %s\n" -#: src/ftp.c:317 src/http.c:249 +#: src/ftp.c:319 src/http.c:249 #, c-format msgid "Connection gone.\n" msgstr "Conexão perdida.\n" @@ -239,73 +237,73 @@ msgid "Connection gone while writing.\n" msgstr "Conexão perdida enquanto escrevia no disco.\n" -#: src/text.c:202 +#: src/text.c:201 #, c-format msgid "Can't redirect stdout to /dev/null.\n" msgstr "Não posso redirecionar a saída padrão para /dev/null.\n" -#: src/text.c:245 +#: src/text.c:244 #, c-format msgid "Error when trying to read URL (Too long?).\n" msgstr "Erro ao tentar ler a URL (muito longa?).\n" -#: src/text.c:253 +#: src/text.c:252 #, c-format -msgid "Can't handle URLs of length over %d\n" -msgstr "Não posso manipular URLs com tamanho superior a %d\n" +msgid "Can't handle URLs of length over %zu\n" +msgstr "Não posso manipular URLs com tamanho superior a %zu\n" -#: src/text.c:259 +#: src/text.c:258 #, c-format msgid "Initializing download: %s\n" msgstr "Inicializando download: %s\n" -#: src/text.c:267 +#: src/text.c:266 #, c-format msgid "Doing search...\n" msgstr "Procurando...\n" -#: src/text.c:270 +#: src/text.c:269 #, c-format msgid "File not found\n" msgstr "Arquivo não encontrado\n" -#: src/text.c:274 +#: src/text.c:273 #, c-format msgid "Testing speeds, this can take a while...\n" msgstr "Testando velocidades. Isso pode demorar um pouco...\n" -#: src/text.c:277 +#: src/text.c:276 #, c-format msgid "Speed testing failed\n" msgstr "Falha no teste de velocidade\n" -#: src/text.c:283 +#: src/text.c:282 #, c-format msgid "%i usable servers found, will use these URLs:\n" msgstr "%i servidores possíveis encontrados. Serão utilizadas essas URLs:\n" -#: src/text.c:286 +#: src/text.c:285 msgid "Speed" msgstr "Velocidade" -#: src/text.c:334 +#: src/text.c:333 #, c-format msgid "Filename too long!\n" msgstr "Nome de arquivo muito longo!\n" -#: src/text.c:347 +#: src/text.c:346 #, c-format msgid "No state file, cannot resume!\n" msgstr "Estado do arquivo não encontrado. Não posso reiniciar!\n" -#: src/text.c:351 +#: src/text.c:350 #, c-format msgid "State file found, but no downloaded data. Starting from scratch.\n" msgstr "" "Estado do arquivo encontrado mas não há dados de download. Iniciando do " "zero.\n" -#: src/text.c:469 +#: src/text.c:438 #, c-format msgid "" "\n" @@ -314,49 +312,49 @@ "\n" "Baixados %s em %s. (%.2f KB/s)\n" -#: src/text.c:496 +#: src/text.c:475 msgid "Kilo" msgstr "Kilo" -#: src/text.c:496 +#: src/text.c:475 msgid "Mega" msgstr "Mega" -#: src/text.c:496 +#: src/text.c:475 msgid "Giga" msgstr "Giga" -#: src/text.c:496 +#: src/text.c:475 msgid "Tera" msgstr "Tera" -#: src/text.c:502 +#: src/text.c:481 #, c-format msgid "%g %sbyte(s)" msgstr "%g %sbyte(s)" -#: src/text.c:518 +#: src/text.c:497 #, c-format msgid "%i:%02i:%02i hour(s)" msgstr "%i:%02i:%02i hora(s)" -#: src/text.c:520 +#: src/text.c:499 #, c-format msgid "%i:%02i minute(s)" msgstr "%i:%02i minuto(s)" -#: src/text.c:522 -#, fuzzy, c-format +#: src/text.c:501 +#, c-format msgid "%i second(s)" msgstr "%i segundo(s)" -#: src/text.c:586 +#: src/text.c:594 #, c-format msgid "Can't setup alternate output. Deactivating.\n" msgstr "Não posso configurar uma saída alternativa. Desativando.\n" -#: src/text.c:650 -#, fuzzy, c-format +#: src/text.c:656 +#, c-format msgid "" "Usage: axel [options] url1 [url2] [url...]\n" "\n" @@ -382,27 +380,27 @@ msgstr "" "Uso: axel [opções] url1 [url2] [url...]\n" "\n" -"-s x\tEspecifica a velocidade máxima (bytes por segundo)\n" -"-n x\tEspecifica o número máximo de conexões\n" -"-o f\tEspecifica o arquivo de saída\n" -"-S [x]\tProcura por mirrors e baixa a partir de x servidores\n" +"-s x\tEspecificar a velocidade máxima (bytes por segundo)\n" +"-n x\tEspecificar o número máximo de conexões\n" +"-o f\tEspecificar o arquivo de saída\n" +"-S[x]\tProcurar por mirrors e baixa a partir de x servidores\n" "-4\tConectar usando IPv4\n" "-6\tConectar usando IPv6\n" -"-H x\tAdiciona uma entrada adicional de cabeçalho\n" -"-U x\tConfigura um user agent\n" -"-N\tNão utiliza qualquer servidor proxy\n" -"-k\tNão verifica o certificado SSL\n" -"-c\tIgnora download se o arquivo já existir\n" -"-q\tEvita mensagens na tela\n" -"-v\tAumenta o número de informações\n" -"-a\tSubstitui o indicador de progresso\n" -"-h\tMostra esta tela de ajuda\n" +"-H x\tAdicionar uma entrada adicional de cabeçalho\n" +"-U x\tConfigurar um user agent\n" +"-N\tNão utilizar qualquer servidor proxy\n" +"-k\tNão verificar o certificado SSL\n" +"-c\tIgnorar download se o arquivo já existir\n" +"-q\tEvitar mensagens na tela\n" +"-v\tAumentar o número de informações\n" +"-a\tIndicador de progresso alternativo\n" +"-h\tMostrar esta tela de ajuda\n" "-V\tInformação sobre a versão\n" "\n" "Visite https://github.com/axel-download-accelerator/axel/issues\n" -#: src/text.c:672 -#, fuzzy, c-format +#: src/text.c:678 +#, c-format msgid "" "Usage: axel [options] url1 [url2] [url...]\n" "\n" @@ -430,50 +428,49 @@ msgstr "" "Uso: axel [opções] url1 [url2] [url...]\n" "\n" -"--max-speed=x\t\t-s x\tEspecifica a velocidade máxima (bytes por segundo)\n" -"--num-connections=x\t-n x\tEspecifica o número máximo de conexões\n" -"--max-redirect=x\t\tEspecifica a quantidade máxima de redirecionamentos\n" -"--output=f\t\t-o f\tEspecifica o arquivo de saída\n" -"--search[=x]\t\t-S [x]\tProcura por mirrors e baixa a partir de x " +"--max-speed=x\t\t-s x\tEspecificar a velocidade máxima (bytes por segundo)\n" +"--num-connections=x\t-n x\tEspecificar o número máximo de conexões\n" +"--max-redirect=x\t\tEspecificar a quantidade máxima de redirecionamentos\n" +"--output=f\t\t-o f\tEspecificar o arquivo de saída\n" +"--search[=x]\t\t-S[x]\tProcurar por mirrors e baixa a partir de x " "servidores\n" "--ipv4\t\t\t-4\tUsar o protocolo IPv4\n" "--ipv6\t\t\t-6\tUsar o protocolo IPv6\n" -"--header=x\t\t-H x\tAdiciona uma entrada adicional de cabeçalho\n" -"--user-agent=x\t\t-U x\tConfigura um user agent\n" -"--no-proxy\t\t-N\tNão utiliza qualquer servidor proxy\n" -"--insecure\t\t-k\tNão verifica o certificado SSL\n" -"--no-clobber\t\t-c\tIgnora o download se o arquivo já existir\n" -"--quiet\t\t\t-q\tEvita mensagens na tela\n" -"--verbose\t\t-v\tAumenta o número de informações\n" -"--alternate\t\t-a\tSubstitui o indicador de progresso\n" -"--help\t\t\t-h\tMostra esta tela de ajuda\n" +"--header=x\t\t-H x\tAdicionar uma entrada adicional de cabeçalho\n" +"--user-agent=x\t\t-U x\tConfigurar um user agent\n" +"--no-proxy\t\t-N\tNão utilizar qualquer servidor proxy\n" +"--insecure\t\t-k\tNão verificar o certificado SSL\n" +"--no-clobber\t\t-c\tIgnorar o download se o arquivo já existir\n" +"--quiet\t\t\t-q\tEvitar mensagens na tela\n" +"--verbose\t\t-v\tAumentar o número de informações\n" +"--alternate\t\t-a\tIndicador de progresso alternativo\n" +"--help\t\t\t-h\tMostrar esta tela de ajuda\n" "--version\t\t-V\tInformação sobre a versão\n" "\n" "Visite https://github.com/axel-download-accelerator/axel/issues to report " "bugs\n" -#: src/text.c:700 -#, fuzzy, c-format +#: src/text.c:706 +#, c-format msgid "Axel version %s (%s)\n" msgstr "Axel versão %s (%s)\n" -#: src/text.c:708 +#: src/text.c:714 msgid "and others." msgstr "e outros." -#: src/text.c:709 -#, fuzzy +#: src/text.c:715 msgid "" "Please, see the CREDITS file.\n" "\n" msgstr "Por favor, veja o arquivo CREDITS.\n" -#: src/ssl.c:92 +#: src/ssl.c:93 #, c-format msgid "SSL error: %s\n" msgstr "Erro SSL: %s\n" -#: src/tcp.c:63 +#: src/tcp.c:72 #, c-format msgid "Unable to connect to server %s:%i: %s\n" msgstr "Não consigo conectar o servidor %s:%i %s\n" diff -Nru axel-2.17.3/po/ru.po axel-2.17.5/po/ru.po --- axel-2.17.3/po/ru.po 2019-05-20 16:59:00.000000000 +0000 +++ axel-2.17.5/po/ru.po 2019-07-23 17:53:03.000000000 +0000 @@ -11,82 +11,82 @@ "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -#: src/axel.c:90 +#: src/axel.c:94 msgid "Buffer resized for this speed." msgstr "Размер буфера изменен для этой скорости." -#: src/axel.c:107 +#: src/axel.c:112 msgid "Invalid URL" msgstr "Неверная ссылка" -#: src/axel.c:135 +#: src/axel.c:140 msgid "Could not parse URL.\n" msgstr "Невозможно обработать URL.\n" -#: src/axel.c:159 +#: src/axel.c:164 #, c-format msgid "Incomplete download found, ignoring no-clobber option\n" msgstr "Обнаружена неполная загрузка, игнорируется опция no-clobber\n" -#: src/axel.c:162 +#: src/axel.c:167 #, c-format msgid "File '%s' already there; not retrieving.\n" msgstr "Файл '% s' уже существует; не получить.\n" -#: src/axel.c:192 -#, c-format -msgid "File size: %lld bytes" -msgstr "Размер файла: %lld байта(ов)" +#: src/axel.c:197 +#, fuzzy, c-format +msgid "File size: %zu bytes" +msgstr "Размер файла: %zu байта(ов)" -#: src/axel.c:195 +#: src/axel.c:200 #, fuzzy msgid "File size: unavailable" -msgstr "Размер файла: %lld байта(ов)" +msgstr "Размер файла: недоступен" -#: src/axel.c:224 +#: src/axel.c:229 #, c-format msgid "Opening output file %s" msgstr "Открывается выходной файл %s" -#: src/axel.c:232 +#: src/axel.c:237 msgid "Server unsupported, starting from scratch with one connection." msgstr "Сервер не поддерживается, начинаем заново с одним соединением." -#: src/axel.c:249 +#: src/axel.c:254 #, c-format msgid "%s.st: Error, truncated state file\n" msgstr "%s.st: Ошибка, усеченный файл состояния\n" -#: src/axel.c:257 +#: src/axel.c:262 #, c-format msgid "Bogus number of connections stored in state file\n" msgstr "Поддельное количество соединений хранится в файле состояния\n" -#: src/axel.c:269 +#: src/axel.c:274 #, c-format msgid "State file has old format.\n" msgstr "Государственный файл имеет старый формат\n" -#: src/axel.c:302 -#, c-format -msgid "State file found: %lld bytes downloaded, %lld to go." -msgstr "Найден файл состояния: %lld байта(ов) скачано, %lld осталось." +#: src/axel.c:307 +#, fuzzy, c-format +msgid "State file found: %zu bytes downloaded, %zu to go." +msgstr "Найден файл состояния: %zu байта(ов) скачано, %zu осталось." -#: src/axel.c:308 src/axel.c:319 +#: src/axel.c:313 src/axel.c:324 msgid "Error opening local file" msgstr "Ошибка при открытии локального файла" -#: src/axel.c:332 +#: src/axel.c:337 msgid "Crappy filesystem/OS.. Working around. :-(" msgstr "" "Ошибки в файловой системе или операционной системе.. Пробуем исправить :-(" -#: src/axel.c:346 +#: src/axel.c:350 #, fuzzy msgid "Error creating local file" msgstr "Ошибка при открытии локального файла" -#: src/axel.c:378 +#: src/axel.c:383 #, c-format msgid "" "\n" @@ -95,99 +95,99 @@ "\n" "Реактивировать соединение %d\n" -#: src/axel.c:408 +#: src/axel.c:413 msgid "Starting download" msgstr "Начинаем скачивание" -#: src/axel.c:419 src/axel.c:601 +#: src/axel.c:421 src/axel.c:604 #, c-format msgid "Connection %i downloading from %s:%i using interface %s" msgstr "Соединение %i скачивает с %s:%i через интерфейс %s" -#: src/axel.c:429 src/axel.c:613 +#: src/axel.c:431 src/axel.c:616 msgid "pthread error!!!" msgstr "ошибка pthread!!!" -#: src/axel.c:474 +#: src/axel.c:477 #, fuzzy, c-format msgid "Error while waiting for connection: %s" msgstr "Ошибка записи команды %s\n" -#: src/axel.c:506 +#: src/axel.c:509 #, c-format msgid "Connection %i timed out" msgstr "Время соединения %i вышло" -#: src/axel.c:519 +#: src/axel.c:522 #, c-format msgid "Error on connection %i! Connection closed" msgstr "Ошибка в соединении %i! Соединение закрыто" -#: src/axel.c:533 +#: src/axel.c:536 #, c-format msgid "Connection %i unexpectedly closed" msgstr "Соединение %i неожиданно закрылось" -#: src/axel.c:537 src/axel.c:553 +#: src/axel.c:540 src/axel.c:556 #, c-format msgid "Connection %i finished" msgstr "Соединение %i закончилось" -#: src/axel.c:563 +#: src/axel.c:566 msgid "Write error!" msgstr "Ошибка записи!" -#: src/axel.c:661 +#: src/axel.c:664 #, c-format msgid "Error while enforcing throttling: %s" msgstr "Ошибка при применении регулирования: %s" -#: src/axel.c:839 +#: src/axel.c:844 #, c-format msgid "Too few bytes remaining, forcing a single connection\n" msgstr "Осталось слишком мало байтов, форсируя одно соединение\n" -#: src/axel.c:858 +#: src/axel.c:863 #, c-format msgid "Downloading %lld-%lld using conn. %i\n" msgstr "Загрузка %lld-%lld с использованием соединения %i\n" -#: src/conf.c:65 +#: src/conf.c:68 #, c-format msgid "I/O error while reading config file: %s\n" msgstr "Ошибка ввода-вывода при чтении файла конфигурации: %s\n" -#: src/conf.c:80 +#: src/conf.c:83 #, c-format msgid "Unknown protocol %s\n" msgstr "Неизвестный протокол %s\n" -#: src/conf.c:185 +#: src/conf.c:187 #, c-format msgid "Requested too many connections, max is %i\n" msgstr "Запрошено слишком много соединений, максимум %i\n" -#: src/conf.c:200 +#: src/conf.c:202 #, c-format msgid "Error in %s line %i.\n" msgstr "Ошибка в файле %s линия %i.\n" -#: src/conf.c:265 +#: src/conf.c:266 #, c-format msgid "HOME env variable too long\n" msgstr "Слишком длинная переменная среды HOME\n" -#: src/conn.c:77 +#: src/conn.c:76 #, c-format msgid "Unsupported protocol\n" msgstr "Неподдерживаемый протокол\n" -#: src/conn.c:83 +#: src/conn.c:82 #, c-format msgid "Secure protocol is not supported\n" msgstr "Безопасный протокол не поддерживается\n" -#: src/conn.c:411 src/ftp.c:131 +#: src/conn.c:413 src/ftp.c:131 #, c-format msgid "Too many redirects.\n" msgstr "Слишком много перенаправлений.\n" @@ -207,17 +207,17 @@ msgid "Multiple matches for this URL.\n" msgstr "Несколько совпадений для этого URL.\n" -#: src/ftp.c:258 +#: src/ftp.c:260 #, c-format msgid "Error opening passive data connection.\n" msgstr "Ошибка открытия пассивного соединения.\n" -#: src/ftp.c:292 +#: src/ftp.c:294 #, c-format msgid "Error writing command %s\n" msgstr "Ошибка записи команды %s\n" -#: src/ftp.c:317 src/http.c:249 +#: src/ftp.c:319 src/http.c:249 #, c-format msgid "Connection gone.\n" msgstr "Соединение пропало.\n" @@ -232,73 +232,73 @@ msgid "Connection gone while writing.\n" msgstr "Соединение пропало.\n" -#: src/text.c:202 +#: src/text.c:201 #, c-format msgid "Can't redirect stdout to /dev/null.\n" msgstr "Невозможно перенаправить stdout в /dev/null.\n" -#: src/text.c:245 +#: src/text.c:244 #, c-format msgid "Error when trying to read URL (Too long?).\n" msgstr "Ошибка при попытке прочитать URL (слишком долго?).\n" -#: src/text.c:253 -#, c-format -msgid "Can't handle URLs of length over %d\n" -msgstr "URLs длинной больше %d не поддерживаются\n" +#: src/text.c:252 +#, fuzzy, c-format +msgid "Can't handle URLs of length over %zu\n" +msgstr "URLs длинной больше %zu не поддерживаются\n" -#: src/text.c:259 +#: src/text.c:258 #, c-format msgid "Initializing download: %s\n" msgstr "Начинаю скачивание: %s\n" -#: src/text.c:267 +#: src/text.c:266 #, c-format msgid "Doing search...\n" msgstr "Ищем...\n" -#: src/text.c:270 +#: src/text.c:269 #, c-format msgid "File not found\n" msgstr "Файл не найден\n" -#: src/text.c:274 +#: src/text.c:273 #, c-format msgid "Testing speeds, this can take a while...\n" msgstr "Пробуем скорости, это может занять некоторое время...\n" -#: src/text.c:277 +#: src/text.c:276 #, c-format msgid "Speed testing failed\n" msgstr "Тестирование скорости не удалось\n" -#: src/text.c:283 +#: src/text.c:282 #, c-format msgid "%i usable servers found, will use these URLs:\n" msgstr "Найдено %i полезных серверов, будут использованы следующие URLs:\n" -#: src/text.c:286 +#: src/text.c:285 msgid "Speed" msgstr "скорость" -#: src/text.c:334 +#: src/text.c:333 #, c-format msgid "Filename too long!\n" msgstr "Имя файла слишком длинное!\n" -#: src/text.c:347 +#: src/text.c:346 #, c-format msgid "No state file, cannot resume!\n" msgstr "Файл состояния не найден, возобновление невозможно!\n" -#: src/text.c:351 +#: src/text.c:350 #, c-format msgid "State file found, but no downloaded data. Starting from scratch.\n" msgstr "" "Файл состояния найден, но предварительно скачанные данные отсутствуют. " "Начинаем заново.\n" -#: src/text.c:469 +#: src/text.c:438 #, c-format msgid "" "\n" @@ -307,48 +307,48 @@ "\n" "%s скачано за %s. (%.2f КБ/с)\n" -#: src/text.c:496 +#: src/text.c:475 msgid "Kilo" msgstr "кило" -#: src/text.c:496 +#: src/text.c:475 msgid "Mega" msgstr "мега" -#: src/text.c:496 +#: src/text.c:475 msgid "Giga" msgstr "гига" -#: src/text.c:496 +#: src/text.c:475 msgid "Tera" msgstr "тера" -#: src/text.c:502 +#: src/text.c:481 #, c-format msgid "%g %sbyte(s)" msgstr "%g %sбайта(ов)" -#: src/text.c:518 +#: src/text.c:497 #, fuzzy, c-format msgid "%i:%02i:%02i hour(s)" msgstr "%i:%02i:%02i секунд(ы)" -#: src/text.c:520 +#: src/text.c:499 #, fuzzy, c-format msgid "%i:%02i minute(s)" msgstr "%i:%02i секунд(ы)" -#: src/text.c:522 +#: src/text.c:501 #, fuzzy, c-format msgid "%i second(s)" msgstr "%i секунд(ы)" -#: src/text.c:586 +#: src/text.c:594 #, c-format msgid "Can't setup alternate output. Deactivating.\n" msgstr "Не могу настроить альтернативный выход. Деактивация.\n" -#: src/text.c:650 +#: src/text.c:656 #, fuzzy, c-format msgid "" "Usage: axel [options] url1 [url2] [url...]\n" @@ -387,7 +387,7 @@ "-V\tИнформация о версии\n" "\n" -#: src/text.c:672 +#: src/text.c:678 #, fuzzy, c-format msgid "" "Usage: axel [options] url1 [url2] [url...]\n" @@ -428,16 +428,16 @@ "--version\t\t-V\tИнформация о версии\n" "\n" -#: src/text.c:700 +#: src/text.c:706 #, c-format msgid "Axel version %s (%s)\n" msgstr "Axel, версия %s (%s)\n" -#: src/text.c:708 +#: src/text.c:714 msgid "and others." msgstr "и другие." -#: src/text.c:709 +#: src/text.c:715 msgid "" "Please, see the CREDITS file.\n" "\n" @@ -445,12 +445,12 @@ "Пожалуйста, смотрите файл CREDITS.\n" "\n" -#: src/ssl.c:92 +#: src/ssl.c:93 #, c-format msgid "SSL error: %s\n" msgstr "Ошибка SSL: %s\n" -#: src/tcp.c:63 +#: src/tcp.c:72 #, c-format msgid "Unable to connect to server %s:%i: %s\n" msgstr "Невозможно подсоединиться к серверу %s:%i %s\n" diff -Nru axel-2.17.3/po/zh_CN.po axel-2.17.5/po/zh_CN.po --- axel-2.17.3/po/zh_CN.po 2019-05-20 16:59:00.000000000 +0000 +++ axel-2.17.5/po/zh_CN.po 2019-07-23 17:53:03.000000000 +0000 @@ -1,3 +1,5 @@ +# Shuge Lee , 2008. +# Jeff Bai , 2016. msgid "" msgstr "" "Project-Id-Version: Axel\n" @@ -13,80 +15,80 @@ "Last-Revision: Li Jin \n" "X-Generator: Poedit 1.8.8\n" -#: src/axel.c:90 +#: src/axel.c:94 msgid "Buffer resized for this speed." msgstr "为这个速率调整缓冲区大小。" -#: src/axel.c:107 +#: src/axel.c:112 msgid "Invalid URL" msgstr "不可用的URL。" -#: src/axel.c:135 +#: src/axel.c:140 msgid "Could not parse URL.\n" msgstr "无法解析 URL。\n" -#: src/axel.c:159 +#: src/axel.c:164 #, c-format msgid "Incomplete download found, ignoring no-clobber option\n" msgstr "发现不完整的下载,忽略no-clobber选项\n" -#: src/axel.c:162 +#: src/axel.c:167 #, c-format msgid "File '%s' already there; not retrieving.\n" msgstr "文件'%s' 已存在\n" -#: src/axel.c:192 -#, c-format -msgid "File size: %lld bytes" -msgstr "文件大小:%lld 字节" +#: src/axel.c:197 +#, fuzzy, c-format +msgid "File size: %zu bytes" +msgstr "文件大小:%zu 字节" -#: src/axel.c:195 +#: src/axel.c:200 #, fuzzy msgid "File size: unavailable" -msgstr "文件大小:%lld 字节" +msgstr "文件大小:不可用" -#: src/axel.c:224 +#: src/axel.c:229 #, c-format msgid "Opening output file %s" msgstr "正在打开输出文件 %s" -#: src/axel.c:232 +#: src/axel.c:237 msgid "Server unsupported, starting from scratch with one connection." msgstr "服务器不支持,使用单个连接从头下载。" -#: src/axel.c:249 +#: src/axel.c:254 #, c-format msgid "%s.st: Error, truncated state file\n" msgstr "%s.st: 错误,已清空的状态文件\n" -#: src/axel.c:257 +#: src/axel.c:262 #, c-format msgid "Bogus number of connections stored in state file\n" msgstr "" -#: src/axel.c:269 +#: src/axel.c:274 #, c-format msgid "State file has old format.\n" msgstr "状态文件版本陈旧\n" -#: src/axel.c:302 -#, c-format -msgid "State file found: %lld bytes downloaded, %lld to go." -msgstr "找到状态文件:已下载 %lld 字节,剩余 %lld 字节。" +#: src/axel.c:307 +#, fuzzy, c-format +msgid "State file found: %zu bytes downloaded, %zu to go." +msgstr "找到状态文件:已下载 %zu 字节,剩余 %zu 字节。" -#: src/axel.c:308 src/axel.c:319 +#: src/axel.c:313 src/axel.c:324 msgid "Error opening local file" msgstr "无法打开本地文件" -#: src/axel.c:332 +#: src/axel.c:337 msgid "Crappy filesystem/OS.. Working around. :-(" msgstr "文件系统/操作系统不讨喜…… 正在寻求解决方法(不开心)。" -#: src/axel.c:346 +#: src/axel.c:350 msgid "Error creating local file" msgstr "无法创建本地文件" -#: src/axel.c:378 +#: src/axel.c:383 #, c-format msgid "" "\n" @@ -95,99 +97,99 @@ "\n" "重新激活链接:%d \n" -#: src/axel.c:408 +#: src/axel.c:413 msgid "Starting download" msgstr "正在开始下载" -#: src/axel.c:419 src/axel.c:601 +#: src/axel.c:421 src/axel.c:604 #, c-format msgid "Connection %i downloading from %s:%i using interface %s" msgstr "连接 %1$i 正通过接口 %4$s 从 %2$s:%3$i 下载" -#: src/axel.c:429 src/axel.c:613 +#: src/axel.c:431 src/axel.c:616 msgid "pthread error!!!" msgstr "pthread 出错啦!!!" -#: src/axel.c:474 +#: src/axel.c:477 #, fuzzy, c-format msgid "Error while waiting for connection: %s" msgstr "写命令 %s 出错" -#: src/axel.c:506 +#: src/axel.c:509 #, c-format msgid "Connection %i timed out" msgstr "连接 %i 超时" -#: src/axel.c:519 +#: src/axel.c:522 #, c-format msgid "Error on connection %i! Connection closed" msgstr "连接 %i 出错!连接中断" -#: src/axel.c:533 +#: src/axel.c:536 #, c-format msgid "Connection %i unexpectedly closed" msgstr "连接 %i 被异常中断" -#: src/axel.c:537 src/axel.c:553 +#: src/axel.c:540 src/axel.c:556 #, c-format msgid "Connection %i finished" msgstr "连接 %i 完成下载" -#: src/axel.c:563 +#: src/axel.c:566 msgid "Write error!" msgstr "写错误!" -#: src/axel.c:661 +#: src/axel.c:664 #, c-format msgid "Error while enforcing throttling: %s" msgstr "强制调整流量时出错:%s" -#: src/axel.c:839 +#: src/axel.c:844 #, c-format msgid "Too few bytes remaining, forcing a single connection\n" msgstr "" -#: src/axel.c:858 +#: src/axel.c:863 #, c-format msgid "Downloading %lld-%lld using conn. %i\n" msgstr "使用链接下载 %lld-%lld [%i]\n" -#: src/conf.c:65 +#: src/conf.c:68 #, c-format msgid "I/O error while reading config file: %s\n" msgstr "配置文件I/O错误:%s\n" -#: src/conf.c:80 +#: src/conf.c:83 #, c-format msgid "Unknown protocol %s\n" msgstr "未知的协议 %s\n" -#: src/conf.c:185 +#: src/conf.c:187 #, c-format msgid "Requested too many connections, max is %i\n" msgstr "" -#: src/conf.c:200 +#: src/conf.c:202 #, c-format msgid "Error in %s line %i.\n" msgstr "%s 中第 %i 行出错。\n" -#: src/conf.c:265 +#: src/conf.c:266 #, fuzzy, c-format msgid "HOME env variable too long\n" msgstr "文件名太长!\n" -#: src/conn.c:77 +#: src/conn.c:76 #, fuzzy, c-format msgid "Unsupported protocol\n" -msgstr "未知的协议 %s\n" +msgstr "未知的协议\n" -#: src/conn.c:83 +#: src/conn.c:82 #, c-format msgid "Secure protocol is not supported\n" msgstr "" -#: src/conn.c:411 src/ftp.c:131 +#: src/conn.c:413 src/ftp.c:131 #, c-format msgid "Too many redirects.\n" msgstr "太多重定向。\n" @@ -207,17 +209,17 @@ msgid "Multiple matches for this URL.\n" msgstr "此 URL 有多个匹配。\n" -#: src/ftp.c:258 +#: src/ftp.c:260 #, c-format msgid "Error opening passive data connection.\n" msgstr "无法打开被动数据连接。\n" -#: src/ftp.c:292 +#: src/ftp.c:294 #, c-format msgid "Error writing command %s\n" msgstr "写命令 %s 出错\n" -#: src/ftp.c:317 src/http.c:249 +#: src/ftp.c:319 src/http.c:249 #, c-format msgid "Connection gone.\n" msgstr "连接丢失。\n" @@ -232,71 +234,71 @@ msgid "Connection gone while writing.\n" msgstr "写入时连接丢失。\n" -#: src/text.c:202 +#: src/text.c:201 #, c-format msgid "Can't redirect stdout to /dev/null.\n" msgstr "不能将 stdout 重定向到 /dev/null。\n" -#: src/text.c:245 +#: src/text.c:244 #, c-format msgid "Error when trying to read URL (Too long?).\n" msgstr "尝试读取 URL 时出错(URL 太长?)。\n" -#: src/text.c:253 -#, c-format -msgid "Can't handle URLs of length over %d\n" -msgstr "不能处理长度超过 %d 的 URL\n" +#: src/text.c:252 +#, fuzzy, c-format +msgid "Can't handle URLs of length over %zu\n" +msgstr "不能处理长度超过 %zu 的 URL\n" -#: src/text.c:259 +#: src/text.c:258 #, c-format msgid "Initializing download: %s\n" msgstr "正在初始化下载:%s\n" -#: src/text.c:267 +#: src/text.c:266 #, c-format msgid "Doing search...\n" msgstr "正在搜索…\n" -#: src/text.c:270 +#: src/text.c:269 #, c-format msgid "File not found\n" msgstr "找不到文件\n" -#: src/text.c:274 +#: src/text.c:273 #, c-format msgid "Testing speeds, this can take a while...\n" msgstr "正在测试速度,可能需要一些时间…\n" -#: src/text.c:277 +#: src/text.c:276 #, c-format msgid "Speed testing failed\n" msgstr "速度测试失败\n" -#: src/text.c:283 +#: src/text.c:282 #, c-format msgid "%i usable servers found, will use these URLs:\n" msgstr "找到 %i 个可用的服务器,将使用这些 URL:\n" -#: src/text.c:286 +#: src/text.c:285 msgid "Speed" msgstr "速度" -#: src/text.c:334 +#: src/text.c:333 #, c-format msgid "Filename too long!\n" msgstr "文件名太长!\n" -#: src/text.c:347 +#: src/text.c:346 #, c-format msgid "No state file, cannot resume!\n" msgstr "没有状态文件,无法继续下载!\n" -#: src/text.c:351 +#: src/text.c:350 #, c-format msgid "State file found, but no downloaded data. Starting from scratch.\n" msgstr "找到状态文件,但未有下载数据。重新开始下载。\n" -#: src/text.c:469 +#: src/text.c:438 #, c-format msgid "" "\n" @@ -305,48 +307,48 @@ "\n" "已下载 %s,用时 %s。(%.2f KB/s)\n" -#: src/text.c:496 +#: src/text.c:475 msgid "Kilo" msgstr "千" -#: src/text.c:496 +#: src/text.c:475 msgid "Mega" msgstr "兆" -#: src/text.c:496 +#: src/text.c:475 msgid "Giga" msgstr "吉" -#: src/text.c:496 +#: src/text.c:475 msgid "Tera" msgstr "兆兆" -#: src/text.c:502 +#: src/text.c:481 #, c-format msgid "%g %sbyte(s)" msgstr "%g %s字节" -#: src/text.c:518 +#: src/text.c:497 #, c-format msgid "%i:%02i:%02i hour(s)" msgstr "%i 时 %02i 分 %02i 秒" -#: src/text.c:520 +#: src/text.c:499 #, c-format msgid "%i:%02i minute(s)" msgstr "%i 分 %02i 秒" -#: src/text.c:522 +#: src/text.c:501 #, fuzzy, c-format msgid "%i second(s)" msgstr "%i 秒" -#: src/text.c:586 +#: src/text.c:594 #, c-format msgid "Can't setup alternate output. Deactivating.\n" msgstr "无法设置备用输出,挂起.\n" -#: src/text.c:650 +#: src/text.c:656 #, fuzzy, c-format msgid "" "Usage: axel [options] url1 [url2] [url...]\n" @@ -389,7 +391,7 @@ "\n" "请前往 https://github.com/axel-download-accelerator/axel/issues 报告问题\n" -#: src/text.c:672 +#: src/text.c:678 #, fuzzy, c-format msgid "" "Usage: axel [options] url1 [url2] [url...]\n" @@ -434,16 +436,16 @@ "\n" "请前往 https://github.com/axel-download-accelerator/axel/issues 报告问题\n" -#: src/text.c:700 +#: src/text.c:706 #, c-format msgid "Axel version %s (%s)\n" msgstr "Axel 版本 %s (%s)\n" -#: src/text.c:708 +#: src/text.c:714 msgid "and others." msgstr "及其他人。" -#: src/text.c:709 +#: src/text.c:715 #, fuzzy msgid "" "Please, see the CREDITS file.\n" @@ -452,12 +454,12 @@ "请阅读 CREDITS 文件。\n" "\n" -#: src/ssl.c:92 +#: src/ssl.c:93 #, c-format msgid "SSL error: %s\n" msgstr "SSL 错误:%s\n" -#: src/tcp.c:63 +#: src/tcp.c:72 #, c-format msgid "Unable to connect to server %s:%i: %s\n" msgstr "无法连接到服务器 %s:%i:%s\n" diff -Nru axel-2.17.3/README axel-2.17.5/README --- axel-2.17.3/README 2019-05-20 16:59:00.000000000 +0000 +++ axel-2.17.5/README 1970-01-01 00:00:00.000000000 +0000 @@ -1,123 +0,0 @@ -# AXEL - -#### Axel — Light command line download accelerator for Linux and Unix - -## 1. Help this project ## - -Axel needs your help. **If you are a programmer** and if you wants to -help a nice project, this is your opportunity. - -Axel was imported from its old repository[1] to GitHub (the original -homepage and developers are inactive). After this, all patches found -in Debian project and other places for this program were applied. All -initial work was registered in ChangeLog file (version 2.5 and later -releases). Axel is being packaged in Debian[2]. - -If you are interested to help Axel, read the [CONTRIBUTING.md](CONTRIBUTING.md) file. -Additionally, there is a group to discuss and to coordinate the -development process[3]. You can also find other developers in the -#axel channel on freenode. - -[1] https://alioth.debian.org/projects/axel -[2] https://packages.qa.debian.org/a/axel.html -[3] https://groups.google.com/forum/#!forum/axel-accelerator-dev - -## 2. What is Axel? ## - -Axel tries to accelerate the downloading process by using multiple -connections for one file, similar to DownThemAll and other famous -programs. It can also use multiple mirrors for one download. - -Using Axel, you will get files faster from Internet. So, Axel can -speed up a download up to 60% (approximately, according to some tests). - -Axel tries to be as light as possible, so it might be useful as a -wget clone (and other console based programs) on byte-critical systems. - -Axel supports HTTP, HTTPS, FTP and FTPS protocols. - -Axel was originally developed by Wilmer van der Gaast. Thanks for your -efforts. Over time, Axel got several contributions from people. Please, -see AUTHORS and CREDITS files in source code. - -## Building from source ## - -Release tarballs contain a pre-generated buildsystem, but if you need to -edit/patch it, or you're building from a copy of the repository, then you may -need to run `autoreconf -i` to generate it. Further instructions are provided in -the [INSTALL](INSTALL) file. The basic actions for most users are: - - ./configure && make && make install - -To build without SSL/TLS support, use `./configure --without-ssl`. - -### Dependencies for release tarballs ### - -* `gettext` (or `gettext-tiny`) -* `pkg-config` - -Optional: - -* `libssl` (OpenSSL, LibreSSL or compatible) -- for SSL/TLS support. - -### Extra dependencies for building from snapshots ### - -* `autoconf-archive` -* `autoconf` -* `automake` -* `autopoint` - -### Building on Ubuntu from Git ### - -#### Packages #### - -* `build-essetial` -* `autoconf` -* `autoconf-archive` -* `automake` -* `autopoint` -* `gettext` -* `libssl-dev` -* `pkg-config` - -### Build instrucitons ### - - $ autoreconf -fiv - $ ./configure && make && sudo make install - -## Mac OS X ## -### Install with Homebrew ### - - brew install axel - -### Building ## - -Install the following homebrew packages: - - brew install autoconf-archive automake gettext openssl - -You'll need to provide some extra options to autotools so it can find gettext -and openssl. - - GETTEXT=/usr/local/opt/gettext - OPENSSL=/usr/local/opt/openssl - PATH="$GETTEXT/bin:$PATH" - - autoreconf -fiv -I$GETTEXT/share/aclocal/ - - CFLAGS="-I$GETTEXT/include -I$OPENSSL/include" \ - LDFLAGS=-L$GETTEXT/lib ./configure - -You can just run `make` as usual after these steps. - -## Related projects ## - -* [aria2](https://github.com/aria2/aria2) -* [hget](https://github.com/huydx/hget) -* [lftp](https://github.com/lavv17/lftp) -* [nugget](https://github.com/maxogden/nugget) -* [pget](https://github.com/Code-Hex/pget) - -## License ## - -Axel is under GPL-2+ with OpenSSL exception. diff -Nru axel-2.17.3/README.md axel-2.17.5/README.md --- axel-2.17.3/README.md 2019-05-20 16:59:00.000000000 +0000 +++ axel-2.17.5/README.md 2019-07-23 17:53:03.000000000 +0000 @@ -1,6 +1,6 @@ # AXEL -#### Axel — Light command line download accelerator for Linux and Unix +#### Axel - Lightweight CLI download accelerator ## 1. Help this project ## @@ -8,31 +8,26 @@ help a nice project, this is your opportunity. Axel was imported from its old repository[1] to GitHub (the original -homepage and developers are inactive). After this, all patches found -in Debian project and other places for this program were applied. All -initial work was registered in ChangeLog file (version 2.5 and later -releases). Axel is being packaged in Debian[2]. +homepage and developers are inactive). If you are interested to help Axel, read the [CONTRIBUTING.md](CONTRIBUTING.md) file. + Additionally, there is a group to discuss and to coordinate the development process[3]. You can also find other developers in the -#axel channel on freenode. +`#axel` channel on freenode. -[1] https://alioth.debian.org/projects/axel -[2] https://packages.qa.debian.org/a/axel.html -[3] https://groups.google.com/forum/#!forum/axel-accelerator-dev +[1]: https://alioth.debian.org/projects/axel +[2]: https://packages.qa.debian.org/a/axel.html +[3]: https://groups.google.com/forum/#!forum/axel-accelerator-dev ## 2. What is Axel? ## -Axel tries to accelerate the downloading process by using multiple -connections for one file, similar to DownThemAll and other famous -programs. It can also use multiple mirrors for one download. - -Using Axel, you will get files faster from Internet. So, Axel can -speed up a download up to 60% (approximately, according to some tests). +Axel tries to accelerate the download process by using multiple +connections per file, and can also balance the load between +different servers. -Axel tries to be as light as possible, so it might be useful as a -wget clone (and other console based programs) on byte-critical systems. +Axel tries to be as light as possible, so it might be useful on +byte-critical systems. Axel supports HTTP, HTTPS, FTP and FTPS protocols. @@ -66,12 +61,13 @@ * `autoconf` * `automake` * `autopoint` +* `txt2man` ### Building on Ubuntu from Git ### #### Packages #### -* `build-essetial` +* `build-essential` * `autoconf` * `autoconf-archive` * `automake` @@ -80,7 +76,7 @@ * `libssl-dev` * `pkg-config` -### Build instrucitons ### +### Build instructions ### $ autoreconf -fiv $ ./configure && make && sudo make install diff -Nru axel-2.17.3/src/android-compat.h axel-2.17.5/src/android-compat.h --- axel-2.17.3/src/android-compat.h 1970-01-01 00:00:00.000000000 +0000 +++ axel-2.17.5/src/android-compat.h 2019-07-23 17:53:03.000000000 +0000 @@ -0,0 +1,63 @@ +/* + Axel -- A lighter download accelerator for Linux and other Unices + + Copyright 2018 Ismael Luceno + + This program is free software; you can redistribute it and/or + modify it under the terms of the GNU General Public License + as published by the Free Software Foundation; either version 2 + of the License, or (at your option) any later version. + + In addition, as a special exception, the copyright holders give + permission to link the code of portions of this program with the + OpenSSL library under certain conditions as described in each + individual source file, and distribute linked combinations including + the two. + + You must obey the GNU General Public License in all respects for all + of the code used other than OpenSSL. If you modify file(s) with this + exception, you may extend this exception to your version of the + file(s), but you are not obligated to do so. If you do not wish to do + so, delete this exception statement from your version. If you delete + this exception statement from all source files in the program, then + also delete it here. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +*/ + +/* Android compatibility stubs */ + +#if !defined(AXEL_COMPAT_ANDROID) && defined(__ANDROID__) + +inline static +int pthread_cancel(pthread_t h) { + return pthread_kill(h, 0); +} + +inline static +int pthread_setcancelstate(int state, int *oldstate) +{ + return 0; +} + +inline static +int pthread_setcanceltype(int type, int *oldtype) +{ + return 0; +} + +enum { + PTHREAD_CANCEL_DISABLE, + PTHREAD_CANCEL_ENABLE, + PTHREAD_CANCEL_DEFERRED, + PTHREAD_CANCEL_ASYNCHRONOUS, +}; + +#endif /* !defined(AXEL_COMPAT_ANDROID) && defined(__ANDROID__) */ diff -Nru axel-2.17.3/src/axel.c axel-2.17.5/src/axel.c --- axel-2.17.3/src/axel.c 2019-05-20 16:59:00.000000000 +0000 +++ axel-2.17.5/src/axel.c 2019-07-23 17:53:03.000000000 +0000 @@ -51,7 +51,11 @@ /* Axel */ static void save_state(axel_t *axel); static void *setup_thread(void *); -static void axel_message(axel_t *axel, char *format, ...); + +#ifdef __GNUC__ +__attribute__((format(printf, 2, 3))) +#endif /* __GNUC__ */ +static void axel_message(axel_t *axel, const char *format, ...); static void axel_divide(axel_t *axel); static char *buffer = NULL; @@ -98,7 +102,8 @@ } if (buffer == NULL) { /* reserve 4 additional bytes for file extension ".st" */ - buffer = malloc(max(MAX_STRING + 4, axel->conf->buffer_size)); + buffer = malloc(max(MAX_STRING + 4, + (size_t)axel->conf->buffer_size)); if (!buffer) goto nomem; } @@ -115,7 +120,7 @@ goto nomem; axel->url->next = axel->url; - strncpy(axel->url->text, url, sizeof(axel->url->text) - 1); + strlcpy(axel->url->text, url, sizeof(axel->url->text)); } else { res = url; u = malloc(sizeof(url_t) * count); @@ -124,7 +129,7 @@ axel->url = u; for (i = 0; i < count; i++) { - strncpy(u[i].text, res[i].url, sizeof(u[i].text) - 1); + strlcpy(u[i].text, res[i].url, sizeof(u[i].text)); u[i].next = &u[i + 1]; } u[count - 1].next = u; @@ -140,7 +145,7 @@ axel->conn[0].local_if = axel->conf->interfaces->text; axel->conf->interfaces = axel->conf->interfaces->next; - strncpy(axel->filename, axel->conn[0].file, sizeof(axel->filename) - 1); + strlcpy(axel->filename, axel->conn[0].file, sizeof(axel->filename)); http_decode(axel->filename); if ((s = strchr(axel->filename, '?')) != NULL && @@ -148,13 +153,13 @@ *s = 0; /* Get rid of CGI parameters */ if (*axel->filename == 0) /* Index page == no fn */ - strncpy(axel->filename, axel->conf->default_filename, - sizeof(axel->filename) - 1); + strlcpy(axel->filename, axel->conf->default_filename, + sizeof(axel->filename)); if (axel->conf->no_clobber && access(axel->filename, F_OK) == 0) { char stfile[MAX_STRING + 3]; - sprintf(stfile, "%s.st", axel->filename); + snprintf(stfile, sizeof(stfile), "%s.st", axel->filename); if (access(stfile, F_OK) == 0) { printf(_("Incomplete download found, ignoring " "no-clobber option\n")); @@ -168,7 +173,7 @@ do { if (!conn_init(&axel->conn[0])) { - axel_message(axel, axel->conn[0].message); + axel_message(axel, "%s", axel->conn[0].message); axel->ready = -1; return axel; } @@ -177,7 +182,7 @@ * depends on the protocol used. */ status = conn_info(&axel->conn[0]); if (!status) { - axel_message(axel, axel->conn[0].message); + axel_message(axel, "%s", axel->conn[0].message); axel->ready = -1; return axel; } @@ -189,7 +194,7 @@ axel->size = axel->conn[0].size; if (axel->conf->verbose > 0) { if (axel->size != LLONG_MAX) { - axel_message(axel, _("File size: %lld bytes"), + axel_message(axel, _("File size: %zu bytes"), axel->size); } else { axel_message(axel, _("File size: unavailable")); @@ -198,12 +203,12 @@ /* Wildcards in URL --> Get complete filename */ if (strchr(axel->filename, '*') || strchr(axel->filename, '?')) - strncpy(axel->filename, axel->conn[0].file, - sizeof(axel->filename) - 1); + strlcpy(axel->filename, axel->conn[0].file, + sizeof(axel->filename)); if (*axel->conn[0].output_filename != 0) { - strncpy(axel->filename, axel->conn[0].output_filename, - sizeof(axel->filename) - 1); + strlcpy(axel->filename, axel->conn[0].output_filename, + sizeof(axel->filename)); } return axel; @@ -259,10 +264,10 @@ return 0; } - if (stsize < (sizeof(axel->conf->num_connections) + - sizeof(axel->bytes_done) + - 2 * axel->conf->num_connections * - sizeof(axel->conn[0].currentbyte))) { + if (stsize < (off_t)(sizeof(axel->conf->num_connections) + + sizeof(axel->bytes_done) + + 2 * axel->conf->num_connections * + sizeof(axel->conn[0].currentbyte))) { /* FIXME this might be wrong, the file may have been * truncated, we need another way to check. */ #ifdef DEBUG @@ -299,7 +304,7 @@ } axel_message(axel, - _("State file found: %lld bytes downloaded, %lld to go."), + _("State file found: %zu bytes downloaded, %zu to go."), axel->bytes_done, axel->size - axel->bytes_done); close(fd); @@ -338,8 +343,7 @@ if ((nwrite = write(axel->outfd, buffer, - min(j, - axel->conf->buffer_size))) < 0) { + min(j, axel->conf->buffer_size))) < 0) { if (errno == EINTR || errno == EAGAIN) continue; axel_message(axel, @@ -791,7 +795,7 @@ /* Add a message to the axel->message structure */ static void -axel_message(axel_t *axel, char *format, ...) +axel_message(axel_t *axel, const char *format, ...) { message_t *m; va_list params; @@ -829,7 +833,7 @@ axel_divide(axel_t *axel) { /* Optimize the number of connections in case the file is small */ - size_t maxconns = max(1, axel->size / MIN_CHUNK_WORTH); + size_t maxconns = max(1u, axel->size / MIN_CHUNK_WORTH); if (maxconns < axel->conf->num_connections) axel->conf->num_connections = maxconns; diff -Nru axel-2.17.3/src/axel.h axel-2.17.5/src/axel.h --- axel-2.17.3/src/axel.h 2019-05-20 16:59:00.000000000 +0000 +++ axel-2.17.5/src/axel.h 2019-07-23 17:53:03.000000000 +0000 @@ -51,7 +51,6 @@ #include #include #ifndef NOGETOPTLONG -#define _GNU_SOURCE #include #endif #include @@ -69,6 +68,7 @@ #include #include #include +#include "android-compat.h" /* Internationalization */ #ifdef ENABLE_NLS @@ -80,7 +80,7 @@ #endif /* Compiled-in settings */ -#define MAX_STRING 1024 +#define MAX_STRING ((size_t)1024) #define MAX_ADD_HEADERS 10 #define MAX_REDIRECT 20 #define DEFAULT_IO_TIMEOUT 120 @@ -121,7 +121,7 @@ char filename[MAX_STRING]; double start_time; int next_state, finish_time; - long long bytes_done, start_byte, size; + size_t bytes_done, start_byte, size; int bytes_per_second; struct timespec delay_time; int outfd; @@ -139,4 +139,13 @@ double axel_gettime(void); + +#ifndef HAVE_STRLCAT +size_t strlcat(char *, const char *, size_t); +#endif /* HAVE_strlcat */ + +#ifndef HAVE_STRLCPY +size_t strlcpy(char *, const char *, size_t); +#endif /* HAVE_STRLCPY */ + #endif /* AXEL_AXEL_H */ diff -Nru axel-2.17.3/src/conf.c axel-2.17.5/src/conf.c --- axel-2.17.3/src/conf.c 2019-05-20 16:59:00.000000000 +0000 +++ axel-2.17.5/src/conf.c 2019-07-23 17:53:03.000000000 +0000 @@ -50,6 +50,9 @@ int parse_interfaces(conf_t *conf, char *s); +#ifdef __GNUC__ +__attribute__((format(scanf, 2, 3))) +#endif /* __GNUC__ */ static int axel_fscanf(FILE *fp, const char *format, ...) { @@ -85,7 +88,7 @@ } int -conf_loadfile(conf_t *conf, char *file) +conf_loadfile(conf_t *conf, const char *file) { int line = 0, ret = 1; FILE *fp; @@ -134,8 +137,7 @@ goto num_keys; /* Save string option */ - strncpy(dst, value, MAX_STRING - 1); - ((char *)dst)[MAX_STRING - 1] = '\0'; + strlcpy(dst, value, MAX_STRING); continue; /* Numeric options */ @@ -214,7 +216,8 @@ /* Set defaults */ memset(conf, 0, sizeof(conf_t)); - strcpy(conf->default_filename, "default"); + strlcpy(conf->default_filename, "default", + sizeof(conf->default_filename)); *conf->http_proxy = 0; *conf->no_proxy = 0; conf->strip_cgi_parameters = 1; @@ -248,10 +251,8 @@ conf->interfaces->next = conf->interfaces; - if ((s2 = getenv("http_proxy")) != NULL) - strncpy(conf->http_proxy, s2, sizeof(conf->http_proxy) - 1); - else if ((s2 = getenv("HTTP_PROXY")) != NULL) - strncpy(conf->http_proxy, s2, sizeof(conf->http_proxy) - 1); + if ((s2 = getenv("http_proxy")) || (s2 = getenv("HTTP_PROXY"))) + strlcpy(conf->http_proxy, s2, sizeof(conf->http_proxy)); if (!conf_loadfile(conf, ETCDIR "/axelrc")) return 0; @@ -261,7 +262,7 @@ int ret; ret = snprintf(s, sizeof(s), "%s/.axelrc", s2); - if (ret >= sizeof(s)) { + if (ret >= (int)sizeof(s)) { fprintf(stderr, _("HOME env variable too long\n") ); return 0; } @@ -322,9 +323,9 @@ for (s2 = s; *s2 != ' ' && *s2 != '\t' && *s2; s2++) ; *s2 = 0; if (*s < '0' || *s > '9') - get_if_ip(s, iface->text); + get_if_ip(iface->text, sizeof(iface->text), s); else - strcpy(iface->text, s); + strlcpy(iface->text, s, sizeof(iface->text)); s = s2 + 1; if (*s) { iface->next = malloc(sizeof(if_t)); diff -Nru axel-2.17.3/src/conf.h axel-2.17.5/src/conf.h --- axel-2.17.3/src/conf.h 2019-05-20 16:59:00.000000000 +0000 +++ axel-2.17.5/src/conf.h 2019-07-23 17:53:03.000000000 +0000 @@ -74,7 +74,7 @@ char add_header[MAX_ADD_HEADERS][MAX_STRING]; } conf_t; -int conf_loadfile(conf_t *conf, char *file); +int conf_loadfile(conf_t *conf, const char *file); int conf_init(conf_t *conf); void conf_free(conf_t *conf); diff -Nru axel-2.17.3/src/conn.c axel-2.17.5/src/conn.c --- axel-2.17.3/src/conn.c 2019-05-20 16:59:00.000000000 +0000 +++ axel-2.17.5/src/conn.c 2019-07-23 17:53:03.000000000 +0000 @@ -57,8 +57,7 @@ if ((i = strstr(set_url, "://")) == NULL) { conn->proto = PROTO_DEFAULT; conn->port = PROTO_DEFAULT_PORT; - strncpy(url, set_url, sizeof(url) - 1); - url[sizeof(url) - 1] = '\0'; + strlcpy(url, set_url, sizeof(url)); } else { int proto_len = i - set_url; if (strncmp(set_url, "ftp", proto_len) == 0) { @@ -74,18 +73,17 @@ conn->proto = PROTO_HTTPS; conn->port = PROTO_HTTPS_PORT; } else { - sprintf(conn->message, _("Unsupported protocol\n")); + fprintf(stderr, _("Unsupported protocol\n")); return 0; } #ifndef HAVE_SSL if (PROTO_IS_SECURE(conn->proto)) { - sprintf(conn->message, + fprintf(stderr, _("Secure protocol is not supported\n")); return 0; } #endif - strncpy(url, i + 3, sizeof(url) - 1); - url[sizeof(url) - 1] = '\0'; + strlcpy(url, i + 3, sizeof(url)); } /* Split */ @@ -95,7 +93,7 @@ *i = 0; snprintf(conn->dir, MAX_STRING, "/%s", i + 1); if (conn->proto == PROTO_HTTP || conn->proto == PROTO_HTTPS) - http_encode(conn->dir); + http_encode(conn->dir, sizeof(conn->dir)); } j = strchr(conn->dir, '?'); if (j != NULL) @@ -107,19 +105,20 @@ if (j != NULL) *j = '?'; if (i == NULL) { - strncpy(conn->file, conn->dir, sizeof(conn->file) - 1); + strlcpy(conn->file, conn->dir, sizeof(conn->file)); strcpy(conn->dir, "/"); } else { - strncpy(conn->file, i + 1, sizeof(conn->file) - 1); - strcat(conn->dir, "/"); + strlcpy(conn->file, i + 1, sizeof(conn->file)); + strlcat(conn->dir, "/", sizeof(conn->dir)); } /* Check for username in host field */ + // FIXME: optimize if (strrchr(url, '@') != NULL) { - strncpy(conn->user, url, sizeof(conn->user) - 1); + strlcpy(conn->user, url, sizeof(conn->user)); i = strrchr(conn->user, '@'); *i = 0; - strncpy(url, i + 1, sizeof(url) - 1); + strlcpy(url, i + 1, sizeof(url)); *conn->pass = 0; } else { /* If not: Fill in defaults */ @@ -136,19 +135,19 @@ /* Password? */ if ((i = strchr(conn->user, ':')) != NULL) { *i = 0; - strncpy(conn->pass, i + 1, sizeof(conn->pass) - 1); + strlcpy(conn->pass, i + 1, sizeof(conn->pass)); } // Look for IPv6 literal hostname if (*url == '[') { - strncpy(conn->host, url + 1, sizeof(conn->host) - 1); + strlcpy(conn->host, url + 1, sizeof(conn->host)); if ((i = strrchr(conn->host, ']')) != NULL) { *i++ = 0; } else { return 0; } } else { - strncpy(conn->host, url, sizeof(conn->host) - 1); + strlcpy(conn->host, url, sizeof(conn->host)); i = conn->host; while (*i && *i != ':') { i++; @@ -188,12 +187,11 @@ const char *prefix = "", *postfix = ""; const char *scheme = scheme_from_proto(conn->proto); - unsigned int scheme_len = strlen(scheme); + size_t scheme_len = strlcpy(dst, scheme, len); if (scheme_len > len) return NULL; - strcpy(dst, scheme); len -= scheme_len; char *p = dst + scheme_len; @@ -338,11 +336,11 @@ { /* It's all a bit messed up.. But it works. */ if (PROTO_IS_FTP(conn->proto) && !conn->proxy) { - ftp_command(conn->ftp, "REST %lld", 1); + ftp_command(conn->ftp, "REST %d", 1); if (ftp_wait(conn->ftp) / 100 == 3 || conn->ftp->status / 100 == 2) { conn->supported = true; - ftp_command(conn->ftp, "REST %lld", 0); + ftp_command(conn->ftp, "REST %d", 0); ftp_wait(conn->ftp); } else { conn->supported = false; @@ -360,7 +358,7 @@ else if (conn->size == -2) conn->size = LLONG_MAX; } else { - char s[MAX_STRING]; + char s[1005]; long long int i = 0; do { @@ -382,16 +380,20 @@ return 0; sscanf(t, "%1000s", s); if (s[0] == '/') { - sprintf(conn->http->headers, "%s%s:%i%s", - scheme_from_proto(conn->proto), - conn->host, conn->port, s); - strncpy(s, conn->http->headers, sizeof(s) - 1); + snprintf(conn->http->headers, + sizeof(conn->http->headers), + "%s%s:%i%s", + scheme_from_proto(conn->proto), + conn->host, conn->port, s); + strlcpy(s, conn->http->headers, sizeof(s)); } else if (strstr(s, "://") == NULL) { - conn_url(conn->http->headers, MAX_QUERY, conn); - strncat(conn->http->headers, s, MAX_QUERY - 1); - strncpy(s, conn->http->headers, sizeof(s) - 1); + conn_url(conn->http->headers, + sizeof(conn->http->headers), conn); + strlcat(conn->http->headers, s, + sizeof(conn->http->headers)); + strlcpy(s, conn->http->headers, sizeof(s)); } - s[sizeof(s) - 1] = '\0'; + if (!conn_set(conn, s)) { return 0; } @@ -408,7 +410,7 @@ i < conn->conf->max_redirect); if (i == conn->conf->max_redirect) { - sprintf(conn->message, _("Too many redirects.\n")); + fprintf(stderr, _("Too many redirects.\n")); return 0; } diff -Nru axel-2.17.3/src/ftp.c axel-2.17.5/src/ftp.c --- axel-2.17.3/src/ftp.c 2019-05-20 16:59:00.000000000 +0000 +++ axel-2.17.5/src/ftp.c 2019-07-23 17:53:03.000000000 +0000 @@ -51,7 +51,7 @@ conn->proto = proto; if (tcp_connect(&conn->tcp, host, port, PROTO_IS_SECURE(conn->proto), - conn->local_if, conn->message, io_timeout) == -1) + conn->local_if, io_timeout) == -1) return 0; if (ftp_wait(conn) / 100 != 2) @@ -103,7 +103,7 @@ return 0; } - strncpy(conn->cwd, cwd, sizeof(conn->cwd) - 1); + strlcpy(conn->cwd, cwd, sizeof(conn->cwd)); return 1; } @@ -122,13 +122,13 @@ sscanf(conn->message, "%*i %lld", &i); return i; } else if (conn->status / 10 != 50) { - sprintf(conn->message, _("File not found.\n")); + fprintf(stderr, _("File not found.\n")); return -1; } } if (maxredir == 0) { - sprintf(conn->message, _("Too many redirects.\n")); + fprintf(stderr, _("Too many redirects.\n")); return -1; } @@ -182,9 +182,9 @@ /* No match or more than one match */ if (j != 1) { if (j == 0) - sprintf(conn->message, _("File not found.\n")); + fprintf(stderr, _("File not found.\n")); else - sprintf(conn->message, + fprintf(stderr, _("Multiple matches for this URL.\n")); free(reply); return -1; @@ -194,10 +194,11 @@ if ((s = strstr(reply, "\nl")) != NULL) { /* Get the real filename */ sscanf(s, "%*s %*i %*s %*s %*i %*s %*i %*s %100s", fn); + // FIXME: replace by strlcpy strcpy(file, fn); /* Get size of the file linked to */ - strncpy(fn, strstr(s, "->") + 3, sizeof(fn) - 1); + strlcpy(fn, strstr(s, "->") + 3, sizeof(fn)); fn[sizeof(fn) - 1] = '\0'; free(reply); if ((reply = strchr(fn, '\r')) != NULL) @@ -219,6 +220,7 @@ return -2; } } + // FIXME: replace by strlcpy strcpy(file, fn); free(reply); @@ -248,48 +250,48 @@ if (sscanf(&conn->message[i], "%i,%i,%i,%i,%i,%i", &info[0], &info[1], &info[2], &info[3], &info[4], &info[5]) == 6) { - sprintf(host, "%i.%i.%i.%i", - info[0], info[1], info[2], info[3]); + snprintf(host, sizeof(host), "%i.%i.%i.%i", + info[0], info[1], info[2], info[3]); break; } } if (!*host) { - sprintf(conn->message, + fprintf(stderr, _("Error opening passive data connection.\n")); return 0; } if (tcp_connect(&conn->data_tcp, host, info[4] * 256 + info[5], PROTO_IS_SECURE(conn->proto), conn->local_if, - conn->message, io_timeout) == -1) + io_timeout) == -1) return 0; return 1; /* } else { - sprintf(conn->message, _("Active FTP not implemented yet.\n")); + fprintf(stderr, _("Active FTP not implemented yet.\n")); return 0; } */ } /* Send a command to the server */ int -ftp_command(ftp_t *conn, char *format, ...) +ftp_command(ftp_t *conn, const char *format, ...) { va_list params; char cmd[MAX_STRING]; va_start(params, format); vsnprintf(cmd, sizeof(cmd) - 3, format, params); - strcat(cmd, "\r\n"); + strlcat(cmd, "\r\n", sizeof(cmd)); va_end(params); #ifdef DEBUG fprintf(stderr, "fd(%i)<--%s", conn->tcp.fd, cmd); #endif - if (tcp_write(&conn->tcp, cmd, strlen(cmd)) != strlen(cmd)) { - sprintf(conn->message, _("Error writing command %s\n"), format); + if (tcp_write(&conn->tcp, cmd, strlen(cmd)) != (ssize_t)strlen(cmd)) { + fprintf(stderr, _("Error writing command %s\n"), cmd); return 0; } else { return 1; @@ -303,18 +305,18 @@ { int size = MAX_STRING, r = 0, complete, i, j; char *s; - void *new_msg; - - new_msg = realloc(conn->message, size); - if (!new_msg) - return -1; - conn->message = new_msg; + { + void *new_msg = realloc(conn->message, size); + if (!new_msg) + return -1; + conn->message = new_msg; + } do { do { r += i = tcp_read(&conn->tcp, conn->message + r, 1); if (i <= 0) { - sprintf(conn->message, _("Connection gone.\n")); + fprintf(stderr, _("Connection gone.\n")); return -1; } if ((r + 10) >= size) { diff -Nru axel-2.17.3/src/ftp.h axel-2.17.5/src/ftp.h --- axel-2.17.3/src/ftp.h 2019-05-20 16:59:00.000000000 +0000 +++ axel-2.17.5/src/ftp.h 2019-07-23 17:53:03.000000000 +0000 @@ -58,7 +58,10 @@ char *pass, unsigned io_timeout); void ftp_disconnect(ftp_t *conn); int ftp_wait(ftp_t *conn); -int ftp_command(ftp_t *conn, char *format, ...); +#ifdef __GNUC__ +__attribute__((format(printf, 2, 3))) +#endif /* __GNUC__ */ +int ftp_command(ftp_t *conn, const char *format, ...); int ftp_cwd(ftp_t *conn, char *cwd); int ftp_data(ftp_t *conn, unsigned io_timeout); long long int ftp_size(ftp_t *conn, char *file, int maxredir, unsigned io_timeout); diff -Nru axel-2.17.3/src/http.c axel-2.17.5/src/http.c --- axel-2.17.3/src/http.c 2019-05-20 16:59:00.000000000 +0000 +++ axel-2.17.5/src/http.c 2019-07-23 17:53:03.000000000 +0000 @@ -98,19 +98,19 @@ http_connect(http_t *conn, int proto, char *proxy, char *host, int port, char *user, char *pass, unsigned io_timeout) { - char *puser = NULL, *ppass = ""; + const char *puser = NULL, *ppass = ""; conn_t tconn[1]; - strncpy(conn->host, host, sizeof(conn->host) - 1); + strlcpy(conn->host, host, sizeof(conn->host)); conn->port = port; conn->proto = proto; if (proxy != NULL) { if (*proxy != 0) { - sprintf(conn->host, "%s:%i", host, port); + snprintf(conn->host, sizeof(conn->host), + "%s:%i", host, port); if (!conn_set(tconn, proxy)) { - /* We'll put the message in conn->headers, not in request */ - sprintf(conn->headers, + fprintf(stderr, _("Invalid proxy string: %s\n"), proxy); return 0; } @@ -126,7 +126,7 @@ } if (tcp_connect(&conn->tcp, host, port, PROTO_IS_SECURE(proto), - conn->local_if, conn->headers, io_timeout) == -1) + conn->local_if, io_timeout) == -1) return 0; if (*user == 0) { @@ -199,17 +199,17 @@ } void -http_addheader(http_t *conn, char *format, ...) +http_addheader(http_t *conn, const char *format, ...) { char s[MAX_STRING]; va_list params; va_start(params, format); vsnprintf(s, sizeof(s) - 3, format, params); - strcat(s, "\r\n"); + strlcat(s, "\r\n", sizeof(s)); va_end(params); - strncat(conn->request, s, MAX_QUERY - strlen(conn->request) - 1); + strlcat(conn->request, s, sizeof(conn->request)); } int @@ -224,16 +224,16 @@ conn->request); #endif - http_addheader(conn, ""); + strlcat(conn->request, "\r\n", sizeof(conn->request)); - while (nwrite < strlen(conn->request)) { + while (nwrite < (ssize_t)strlen(conn->request)) { if ((i = tcp_write(&conn->tcp, conn->request + nwrite, strlen(conn->request) - nwrite)) < 0) { if (errno == EINTR || errno == EAGAIN) continue; - /* We'll put the message in conn->headers, not in request */ - sprintf(conn->headers, + + fprintf(stderr, _("Connection gone while writing.\n")); return 0; } @@ -241,12 +241,12 @@ } *conn->headers = 0; + /* Read the headers byte by byte to make sure we don't touch the actual data */ while (1) { if (tcp_read(&conn->tcp, s, 1) <= 0) { - /* We'll put the message in conn->headers, not in request */ - sprintf(conn->headers, _("Connection gone.\n")); + fprintf(stderr, _("Connection gone.\n")); return 0; } @@ -259,8 +259,8 @@ } else { i++; } - strncat(conn->headers, s, - MAX_QUERY - strlen(conn->headers) - 1); + /* FIXME wasteful */ + strlcat(conn->headers, s, sizeof(conn->headers)); } #ifdef DEBUG @@ -271,7 +271,7 @@ sscanf(conn->headers, "%*s %3i", &conn->status); s2 = strchr(conn->headers, '\n'); *s2 = 0; - strcpy(conn->request, conn->headers); + strlcpy(conn->request, conn->headers, sizeof(conn->request)); *s2 = '\n'; return 1; @@ -393,21 +393,16 @@ } void -http_encode(char *s) +http_encode(char *s, size_t len) { char t[MAX_STRING]; - int i, j; - - for (i = j = 0; s[i]; i++, j++) { - /* Fix buffer overflow */ - if (j >= MAX_STRING - 1) { - break; - } + unsigned i, j; + for (i = j = 0; s[i] && j < sizeof(t) - 1; i++, j++) { t[j] = s[i]; if (s[i] <= 0x20 || s[i] >= 0x7f) { /* Fix buffer overflow */ - if (j >= MAX_STRING - 3) { + if (j >= sizeof(t) - 3) { break; } @@ -417,5 +412,5 @@ } t[j] = 0; - strcpy(s, t); + strlcpy(s, t, len); } diff -Nru axel-2.17.3/src/http.h axel-2.17.5/src/http.h --- axel-2.17.3/src/http.h 2019-05-20 16:59:00.000000000 +0000 +++ axel-2.17.5/src/http.h 2019-07-23 17:53:03.000000000 +0000 @@ -65,13 +65,16 @@ char *user, char *pass, unsigned io_timeout); void http_disconnect(http_t *conn); void http_get(http_t *conn, char *lurl); -void http_addheader(http_t *conn, char *format, ...); +#ifdef __GNUC__ +__attribute__((format(printf, 2, 3))) +#endif /* __GNUC__ */ +void http_addheader(http_t *conn, const char *format, ...); int http_exec(http_t *conn); const char *http_header(const http_t *conn, const char *header); void http_filename(const http_t *conn, char *filename); long long int http_size(http_t *conn); long long int http_size_from_range(http_t *conn); -void http_encode(char *s); +void http_encode(char *s, size_t len); void http_decode(char *s); #endif /* AXEL_HTTP_H */ diff -Nru axel-2.17.3/src/Makefile.am axel-2.17.5/src/Makefile.am --- axel-2.17.3/src/Makefile.am 2019-05-20 16:59:00.000000000 +0000 +++ axel-2.17.5/src/Makefile.am 2019-07-23 17:53:03.000000000 +0000 @@ -1,25 +1,32 @@ bin_PROGRAMS = axel axel_SOURCES = \ - axel.c \ - axel.h \ - sleep.h \ - conf.c \ - conf.h \ - conn.c \ - conn.h \ - ftp.c \ - ftp.h \ - http.c \ - http.h \ - search.c \ - search.h \ - ssl.c \ - ssl.h \ - tcp.c \ - tcp.h \ - text.c + src/android-compat.h \ + src/axel.c \ + src/axel.h \ + src/sleep.h \ + src/conf.c \ + src/conf.h \ + src/conn.c \ + src/conn.h \ + src/ftp.c \ + src/ftp.h \ + src/http.c \ + src/http.h \ + src/search.c \ + src/search.h \ + src/ssl.c \ + src/ssl.h \ + src/tcp.c \ + src/tcp.h \ + src/text.c -axel_LDADD = $(SSL_LIBS) -lm +AM_CFLAGS = $(PTHREAD_CFLAGS) $(WARN_CFLAGS) \ + -Wno-declaration-after-statement \ + -Wno-error=cast-align \ + -Wno-error=inline + +axel_LDADD = $(LIBOBJS) $(SSL_LIBS) $(LIBINTL) $(PTHREAD_LIBS) +axel_CC = $(PTHREAD_CC) AM_CPPFLAGS = -DLOCALEDIR=\""$(localedir)"\" AM_CPPFLAGS += -D_BSD_SOURCE -D_DEFAULT_SOURCE diff -Nru axel-2.17.3/src/search.c axel-2.17.5/src/search.c --- axel-2.17.3/src/search.c 2019-05-20 16:59:00.000000000 +0000 +++ axel-2.17.5/src/search.c 2019-07-23 17:53:03.000000000 +0000 @@ -43,7 +43,6 @@ #include "axel.h" #include "sleep.h" -static char *axel_strrstr(char *haystack, char *needle); static void *search_speedtest(void *r); static int search_sortlist_qsort(const void *a, const void *b); @@ -93,91 +92,103 @@ #endif int -search_makelist(search_t *results, char *url) +search_makelist(search_t *results, char *orig_url) { - int i, size = 8192, j = 0; - char *s, *s1, *s3; + int size = 8192; conn_t conn[1]; double t; + const char *start, *end; memset(conn, 0, sizeof(conn_t)); conn->conf = results->conf; t = axel_gettime(); - if (!conn_set(conn, url) || !conn_init(conn) || !conn_info(conn)) + if (!conn_set(conn, orig_url) || !conn_init(conn) || !conn_info(conn)) return -1; - strncpy(results[0].url, url, sizeof(results[0].url) - 1); - results[0].url[sizeof(results[0].url) - 1] = '\0'; + size_t orig_len = strlcpy(results[0].url, orig_url, + sizeof(results[0].url)); results[0].speed = 1 + 1000 * (axel_gettime() - t); results[0].size = conn->size; + int nresults = 1; - s = malloc(size); + char *s = malloc(size); if (!s) - return -1; + return 1; - sprintf(s, "http://www.filesearching.com/cgi-bin/s?q=%s&w=a&l=en&" - "t=f&e=on&m=%i&o=n&s1=%lld&s2=%lld&x=15&y=15", - conn->file, results->conf->search_amount, - conn->size, conn->size); + /* TODO improve matches */ + snprintf(s, size, "http://www.filesearching.com/cgi-bin/s?" + "w=a&" /* TODO describe */ + "x=15&y=15&" /* TODO describe */ + /* Size in bytes: */ "s=on&" + /* Exact search: */ "e=on&" + /* Language: */ "l=en&" + /* Search Type: */ "t=f&" + /* Sorting: */ "o=n&" + /* Filename: */ "q=%s&" + /* Num. of results: */ "m=%i&" + /* Size (min/max): */ "s1=%lld&s2=%lld", + conn->file, results->conf->search_amount, + conn->size, conn->size); conn_disconnect(conn); memset(conn, 0, sizeof(conn_t)); conn->conf = results->conf; - if (!conn_set(conn, s) || !conn_setup(conn) || !conn_exec(conn)) { - free(s); - return 1; - } + if (!conn_set(conn, s) || !conn_setup(conn) || !conn_exec(conn)) + goto done; - while ((i = tcp_read(conn->tcp, s + j, size - j)) > 0) { - j += i; - if (j + 10 >= size) { - size *= 2; - char *tmp = realloc(s, size); - if (!tmp) { - free(s); - return 1; + { + int j = 0; + + for (int i; (i = tcp_read(conn->tcp, s + j, size - j)) > 0;) { + j += i; + if (j + 10 >= size) { + size *= 2; + char *tmp = realloc(s, size); + if (!tmp) + goto done; + s = tmp; + memset(s + size / 2, 0, size / 2); } - s = tmp; - memset(s + size / 2, 0, size / 2); } + s[j] = '\0'; } - s[j] = '\0'; conn_disconnect(conn); - s1 = strstr(s, "
") == NULL) {
-		/* Incomplete list */
-		free(s);
-		return 1;
-	}
-	for (i = 1;
-	     strncmp(s1, "
", 6) && i < results->conf->search_amount && *s1; - i++) { - s3 = strchr(s1, '\n'); - *s3 = 0; - char *s2 = axel_strrstr(s1, ""); + /* Incomplete list */ + if (!end) + goto done; + + for (const char *url, *eol; + start < end && nresults < results->conf->search_amount; + start = eol + 1) { + eol = strchr(start, '\n'); + if (eol > end || !eol) + eol = end; + do { + url = start; + start = strstr(start, " void ssl_init(conf_t *conf); -SSL *ssl_connect(int fd, char *hostname, char *message); +SSL *ssl_connect(int fd, char *hostname); void ssl_disconnect(SSL *ssl); #endif /* AXEL_SSL_H */ diff -Nru axel-2.17.3/src/tcp.c axel-2.17.5/src/tcp.c --- axel-2.17.3/src/tcp.c 2019-05-20 16:59:00.000000000 +0000 +++ axel-2.17.5/src/tcp.c 2019-07-23 17:53:03.000000000 +0000 @@ -46,6 +46,15 @@ #include #include #include +#include + +#ifndef TCP_FASTOPEN_CONNECT +#ifdef __linux__ +#define TCP_FASTOPEN_CONNECT 30 +#else /* __linux__ */ +#define TCP_FASTOPEN_CONNECT 0 +#endif /* __linux__ */ +#endif /* !TCP_FASTOPEN_CONNECT */ /* * Check if the given hostname is ipv6 literal @@ -57,17 +66,17 @@ return hostname && 1 == inet_pton(AF_INET6, hostname, buf); } -static void -tcp_error(char *buffer, char *hostname, int port, const char *reason) +inline static void +tcp_error(char *hostname, int port, const char *reason) { - sprintf(buffer, _("Unable to connect to server %s:%i: %s\n"), + fprintf(stderr, _("Unable to connect to server %s:%i: %s\n"), hostname, port, reason); } /* Get a TCP connection */ int tcp_connect(tcp_t *tcp, char *hostname, int port, int secure, char *local_if, - char *message, unsigned io_timeout) + unsigned io_timeout) { struct sockaddr_in local_addr; char portstr[10]; @@ -77,10 +86,14 @@ int sock_fd = -1; memset(&local_addr, 0, sizeof(local_addr)); - if (tcp->ai_family == AF_INET && local_if && *local_if) { - local_addr.sin_family = AF_INET; - local_addr.sin_port = 0; - local_addr.sin_addr.s_addr = inet_addr(local_if); + if (local_if) { + if (!*local_if || tcp->ai_family != AF_INET) { + local_if = NULL; + } else { + local_addr.sin_family = AF_INET; + local_addr.sin_port = 0; + local_addr.sin_addr.s_addr = inet_addr(local_if); + } } snprintf(portstr, sizeof(portstr), "%d", port); @@ -93,71 +106,75 @@ ret = getaddrinfo(hostname, portstr, &ai_hints, &gai_results); if (ret != 0) { - tcp_error(message, hostname, port, gai_strerror(ret)); + tcp_error(hostname, port, gai_strerror(ret)); return -1; } gai_result = gai_results; - sock_fd = -1; - while ((sock_fd == -1) && (gai_result != NULL)) { + do { + int tcp_fastopen = -1; + if (sock_fd != -1) { + close(sock_fd); + sock_fd = -1; + } sock_fd = socket(gai_result->ai_family, gai_result->ai_socktype, gai_result->ai_protocol); + if (sock_fd == -1) + continue; - if (sock_fd != -1) { + if (local_if && gai_result->ai_family == AF_INET) { + bind(sock_fd, (struct sockaddr *)&local_addr, + sizeof(local_addr)); + /* FIXME report errors */ + } - if (gai_result->ai_family == AF_INET) { - if (local_if && *local_if) { - ret = bind(sock_fd, - (struct sockaddr *) - &local_addr, - sizeof(local_addr)); - if (ret == -1) { - close(sock_fd); - sock_fd = -1; - gai_result = - gai_result->ai_next; - } - } - } - - if (sock_fd != -1) { - struct timeval tout = { .tv_sec = io_timeout }; - /* Set O_NONBLOCK so we can timeout */ - if (io_timeout) - fcntl(sock_fd, F_SETFL, O_NONBLOCK); - ret = connect(sock_fd, gai_result->ai_addr, - gai_result->ai_addrlen); - /* Wait for the connection */ - if (ret == -1 && errno == EINPROGRESS) { - fd_set fdset; - FD_ZERO(&fdset); - FD_SET(sock_fd, &fdset); - ret = select(sock_fd + 1, - NULL, &fdset, NULL, - &tout); - } - if (ret == -1) { - close(sock_fd); - sock_fd = -1; - gai_result = gai_result->ai_next; - } else { - fcntl(sock_fd, F_SETFL, 0); - } - } + if (TCP_FASTOPEN_CONNECT) { + tcp_fastopen = setsockopt(sock_fd, IPPROTO_TCP, + TCP_FASTOPEN_CONNECT, + NULL, 0); + } else if (io_timeout) { + /* Set O_NONBLOCK so we can timeout */ + fcntl(sock_fd, F_SETFL, O_NONBLOCK); } - } + ret = connect(sock_fd, gai_result->ai_addr, + gai_result->ai_addrlen); + + /* Already connected maybe? */ + if (ret != -1) + break; + + if (errno != EINPROGRESS) + continue; + + /* With TFO we must assume success */ + if (tcp_fastopen != -1) + break; + + /* Wait for the connection */ + fd_set fdset; + FD_ZERO(&fdset); + FD_SET(sock_fd, &fdset); + struct timeval tout = { .tv_sec = io_timeout }; + ret = select(sock_fd + 1, NULL, &fdset, NULL, &tout); + /* Success? */ + if (ret != -1) + break; + } while ((gai_result = gai_result->ai_next)); freeaddrinfo(gai_results); if (sock_fd == -1) { - tcp_error(message, hostname, port, strerror(errno)); + tcp_error(hostname, port, strerror(errno)); return -1; } + + fcntl(sock_fd, F_SETFL, 0); + #ifdef HAVE_SSL if (secure) { - tcp->ssl = ssl_connect(sock_fd, hostname, message); + tcp->ssl = ssl_connect(sock_fd, hostname); if (tcp->ssl == NULL) { close(sock_fd); return -1; @@ -174,7 +191,7 @@ return 1; } -int +ssize_t tcp_read(tcp_t *tcp, void *buffer, int size) { #ifdef HAVE_SSL @@ -185,7 +202,7 @@ return read(tcp->fd, buffer, size); } -int +ssize_t tcp_write(tcp_t *tcp, void *buffer, int size) { #ifdef HAVE_SSL @@ -212,7 +229,7 @@ } int -get_if_ip(char *iface, char *ip) +get_if_ip(char *dst, size_t len, const char *iface) { struct ifreq ifr; int ret, fd = socket(PF_INET, SOCK_DGRAM, IPPROTO_IP); @@ -222,14 +239,13 @@ memset(&ifr, 0, sizeof(struct ifreq)); - strncpy(ifr.ifr_name, iface, sizeof(ifr.ifr_name) - 1); - ifr.ifr_name[sizeof(ifr.ifr_name) - 1] = '\0'; + strlcpy(ifr.ifr_name, iface, sizeof(ifr.ifr_name)); ifr.ifr_addr.sa_family = AF_INET; ret = !ioctl(fd, SIOCGIFADDR, &ifr); if (ret) { struct sockaddr_in *x = (struct sockaddr_in *)&ifr.ifr_addr; - strcpy(ip, inet_ntoa(x->sin_addr)); + strlcpy(dst, inet_ntoa(x->sin_addr), len); } close(fd); diff -Nru axel-2.17.3/src/tcp.h axel-2.17.5/src/tcp.h --- axel-2.17.3/src/tcp.h 2019-05-20 16:59:00.000000000 +0000 +++ axel-2.17.5/src/tcp.h 2019-07-23 17:53:03.000000000 +0000 @@ -54,12 +54,12 @@ int is_ipv6_addr(const char *hostname); int tcp_connect(tcp_t *tcp, char *hostname, int port, int secure, - char *local_if, char *message, unsigned io_timeout); + char *local_if, unsigned io_timeout); void tcp_close(tcp_t *tcp); -int tcp_read(tcp_t *tcp, void *buffer, int size); -int tcp_write(tcp_t *tcp, void *buffer, int size); +ssize_t tcp_read(tcp_t *tcp, void *buffer, int size); +ssize_t tcp_write(tcp_t *tcp, void *buffer, int size); -int get_if_ip(char *iface, char *ip); +int get_if_ip(char *dst, size_t len, const char *iface); #endif /* AXEL_TCP_H */ diff -Nru axel-2.17.3/src/text.c axel-2.17.5/src/text.c --- axel-2.17.3/src/text.c 2019-05-20 16:59:00.000000000 +0000 +++ axel-2.17.5/src/text.c 2019-07-23 17:53:03.000000000 +0000 @@ -45,7 +45,6 @@ #include "axel.h" #include -#include static void stop(int signal); @@ -53,9 +52,10 @@ static char *time_human(char *dst, size_t len, unsigned int value); static void print_commas(long long int bytes_done); static void print_alternate_output(axel_t *axel); -static void print_help(); -static void print_version(); -static int get_term_width(); +static void print_progress(size_t cur, size_t prev, size_t total, double kbps); +static void print_help(void); +static void print_version(void); +static int get_term_width(void); int run = 1; @@ -91,14 +91,16 @@ int main(int argc, char *argv[]) { - char fn[MAX_STRING] = ""; + char fn[MAX_STRING]; int do_search = 0; search_t *search; conf_t conf[1]; axel_t *axel; - int i, j, cur_head = 0, ret = 1; + int j, cur_head = 0, ret = 1; char *s; + fn[0] = 0; + /* Set up internationalization (i18n) */ #ifdef ENABLE_NLS setlocale(LC_ALL, ""); @@ -114,11 +116,9 @@ j = -1; while (1) { - int option; - - option = - getopt_long(argc, argv, "s:n:o:S::46NqvhVakcH:U:T:", - axel_options, NULL); + int option = getopt_long(argc, argv, + "s:n:o:S::46NqvhVakcH:U:T:", + axel_options, NULL); if (option == -1) break; @@ -128,8 +128,8 @@ "User-Agent", optarg); break; case 'H': - strncpy(conf->add_header[cur_head++], optarg, - sizeof(conf->add_header[0]) - 1); + strlcpy(conf->add_header[cur_head++], optarg, + sizeof(conf->add_header[0])); break; case 's': if (!sscanf(optarg, "%i", &conf->max_speed)) { @@ -150,8 +150,7 @@ } break; case 'o': - strncpy(fn, optarg, sizeof(fn) - 1); - fn[sizeof(fn) - 1] = '\0'; + strlcpy(fn, optarg, sizeof(fn)); break; case 'S': do_search = 1; @@ -250,7 +249,7 @@ s = argv[optind]; if (strlen(s) > MAX_STRING) { fprintf(stderr, - _("Can't handle URLs of length over %d\n"), + _("Can't handle URLs of length over %zu\n"), MAX_STRING); goto free_conf; } @@ -265,7 +264,7 @@ search[0].conf = conf; if (conf->verbose) printf(_("Doing search...\n")); - i = search_makelist(search, s); + int i = search_makelist(search, s); if (i < 0) { fprintf(stderr, _("File not found\n")); goto free_conf; @@ -306,9 +305,9 @@ if (!search) goto free_conf; - for (i = 0; i < (argc - optind); i++) - strncpy(search[i].url, argv[optind + i], - sizeof(search[i].url) - 1); + for (int i = 0; i < argc - optind; i++) + strlcpy(search[i].url, argv[optind + i], + sizeof(search[i].url)); axel = axel_new(conf, argc - optind, search); free(search); if (!axel || axel->ready == -1) { @@ -321,6 +320,7 @@ free(s); } + /* Check if a file name has been specified */ if (*fn) { struct stat buf; @@ -330,8 +330,7 @@ size_t axelfnlen = strlen(axel->filename); if (fnlen + 1 + axelfnlen + 1 > MAX_STRING) { - fprintf(stderr, - _("Filename too long!\n")); + fprintf(stderr, _("Filename too long!\n")); goto close_axel; } @@ -341,8 +340,8 @@ fn[fnlen + 1 + axelfnlen] = '\0'; } } - char statefn[MAX_STRING]; - snprintf(statefn, MAX_STRING - 1, "%s.st", fn); + char statefn[MAX_STRING + 3]; + snprintf(statefn, sizeof(statefn), "%s.st", fn); if (access(fn, F_OK) == 0 && access(statefn, F_OK) != 0) { fprintf(stderr, _("No state file, cannot resume!\n")); goto close_axel; @@ -351,26 +350,24 @@ printf(_("State file found, but no downloaded data. Starting from scratch.\n")); unlink(statefn); } - strcpy(axel->filename, fn); + strlcpy(axel->filename, fn, sizeof(axel->filename)); } else { /* Local file existence check */ - i = 0; s = axel->filename + strlen(axel->filename); - while (1) { - char statefn[MAX_STRING]; + for (int i = 0; 1; i++) { + char statefn[MAX_STRING + 3]; snprintf(statefn, sizeof(statefn), "%s.st", axel->filename); - if (access(axel->filename, F_OK) == 0) { - if (axel->conn[0].supported) { - if (access(statefn, F_OK) == 0) + + int f_exists = !access(axel->filename, F_OK); + int st_exists = !access(statefn, F_OK); + if (f_exists) { + if (axel->conn[0].supported && st_exists) break; - } - } else { - if (access(statefn, F_OK)) - break; - } - sprintf(s, ".%i", i); - i++; + } else if (!st_exists) + break; + snprintf(s, axel->filename + sizeof(axel->filename) - s, + ".%i", i); } } @@ -388,6 +385,7 @@ if (axel->bytes_done > 0) { /* Print first dots if resuming */ putchar('\n'); print_commas(axel->bytes_done); + fflush(stdout); } } axel->start_byte = axel->bytes_done; @@ -397,7 +395,7 @@ signal(SIGTERM, stop); while (!axel->ready && run) { - long long int prev; + size_t prev; prev = axel->bytes_done; axel_do(axel); @@ -405,46 +403,16 @@ if (conf->alternate_output) { if (!axel->message && prev != axel->bytes_done) print_alternate_output(axel); - } else { - /* The infamous wget-like 'interface'.. ;) */ - long long int done = - (axel->bytes_done / 1024) - (prev / 1024); - if (done && conf->verbose > -1) { - for (i = 0; i < done; i++) { - i += (prev / 1024); - if ((i % 50) == 0) { - if (prev >= 1024) - printf(" [%6.1fKB/s]", - (double)axel->bytes_per_second / - 1024); - if (axel->size == LLONG_MAX) - printf("\n[ N/A] "); - else if (axel->size < 10240000) - printf("\n[%3lld%%] ", - min(100, - 102400 * i / - axel->size)); - else - printf("\n[%3lld%%] ", - min(100, - i / - (axel->size / - 102400))); - } else if ((i % 10) == 0) { - putchar(' '); - } - putchar('.'); - i -= (prev / 1024); - } - fflush(stdout); - } + } else if (conf->verbose > -1) { + print_progress(axel->bytes_done, prev, axel->size, + (double)axel->bytes_per_second / 1024); } if (axel->message) { if (conf->alternate_output == 1) { /* clreol-simulation */ putchar('\r'); - for (i = get_term_width(); i > 0; i--) + for (int i = get_term_width(); i > 0; i--) putchar(' '); putchar('\r'); } else { @@ -460,6 +428,7 @@ } else if (axel->ready) { putchar('\n'); } + fflush(stdout); } char hsize[MAX_STRING / 2], htime[MAX_STRING / 2]; @@ -487,18 +456,28 @@ run = 0; } +/** + * Integer base-2 logarithm. + */ +static inline +unsigned +log2i(unsigned long long x) +{ + return x ? sizeof(x) * 8 - 1 - __builtin_clzll(x) : 0; +} + /* Convert a number of bytes to a human-readable form */ char * size_human(char *dst, size_t len, size_t value) { - float fval = (float)value; + double fval = (double)value; const char * const oname[] = { "", _("Kilo"), _("Mega"), _("Giga"), _("Tera"), }; const unsigned int order = min(sizeof(oname) / sizeof(oname[0]) - 1, - (unsigned)log2f(fval) / 10); + log2i(fval) / 10); - fval /= (float)(1 << order * 10); + fval /= (double)(1 << order * 10); int ret = snprintf(dst, len, _("%g %sbyte(s)"), fval, oname[order]); return ret < 0 ? NULL : dst; } @@ -540,9 +519,38 @@ putchar(' '); putchar(','); } - fflush(stdout); } + +/** + * The infamous wget-like 'interface'.. ;) + */ +static +void +print_progress(size_t cur, size_t prev, size_t total, double kbps) +{ + prev /= 1024; + cur /= 1024; + + bool print_speed = prev > 0; + for (size_t i = prev; i < cur; i++) { + if (i % 50 == 0) { + if (print_speed) + printf(" [%6.1fKB/s]", kbps); + + if (total == LLONG_MAX) + printf("\n[ N/A] "); + else + printf("\n[%3zu%%] ", + min(100U, 102400 * i / total)); + } else if (i % 10 == 0) { + putchar(' '); + } + putchar('.'); + } +} + + static void print_alternate_output_progress(axel_t *axel, char *progress, int width, long long int done, long long int total, @@ -629,13 +637,11 @@ printf(" [%02d:%02d]", minutes, seconds); } - fflush(stdout); - free(progress); } static int -get_term_width() +get_term_width(void) { struct winsize w; @@ -644,7 +650,7 @@ } void -print_help() +print_help(void) { #ifdef NOGETOPTLONG printf(_("Usage: axel [options] url1 [url2] [url...]\n" @@ -695,7 +701,7 @@ } void -print_version() +print_version(void) { printf(_("Axel version %s (%s)\n"), VERSION, ARCH); printf("\nCopyright 2001-2007 Wilmer van der Gaast,\n" diff -Nru axel-2.17.3/.travis.yml axel-2.17.5/.travis.yml --- axel-2.17.3/.travis.yml 2019-05-20 16:59:00.000000000 +0000 +++ axel-2.17.5/.travis.yml 2019-07-23 17:53:03.000000000 +0000 @@ -1,4 +1,4 @@ -dist: trusty +dist: xenial language: c @@ -18,7 +18,7 @@ - linux-libc-dev - txt2man homebrew: - update: false + update: true packages: - autoconf-archive - gettext @@ -27,7 +27,7 @@ env: global: - - G_CFLAGS="-O3 -fPIC -Werror" + - G_CFLAGS="-O3 -fPIC" - MAKEFLAGS="-j4" - target=distcheck matrix: @@ -57,6 +57,6 @@ PKG_CONFIG_PATH="$OPENSSL/lib/pkgconfig" PATH="$GETTEXT/bin:$PATH"; fi - - autoreconf -i && + - autoreconf -fiv && ./configure $CONF_FLAGS CFLAGS="$G_CFLAGS" && make DIST_TARGETS=dist-gzip GZIP_ENV=--fast $target diff -Nru axel-2.17.3/VERSION axel-2.17.5/VERSION --- axel-2.17.3/VERSION 2019-05-20 16:59:00.000000000 +0000 +++ axel-2.17.5/VERSION 2019-07-23 17:53:03.000000000 +0000 @@ -1 +1 @@ -2.17.3 2019-05-20T16:49:04Z +2.17.5 2019-07-23T17:50:06Z