/* */ #include "common.h" #include #include #include #include "a2io.h" #include "FeatureConfig.h" #include "MessageDigest.h" #include "help_tags.h" #include "prefs.h" #include "fmt.h" #include "OptionParser.h" #include "OptionHandler.h" #include "util.h" namespace aria2 { void showVersion() { std::cout << PACKAGE << _(" version ") << PACKAGE_VERSION << "\n" << "Copyright (C) 2006, 2015 Tatsuhiro Tsujikawa" << "\n" << "\n" << _("This program is free software; you can redistribute it and/or " "modify\n" "it under the terms of the GNU General Public License as published " "by\n" "the Free Software Foundation; either version 2 of the License, or\n" "(at your option) any later version.\n" "\n" "This program is distributed in the hope that it will be useful,\n" "but WITHOUT ANY WARRANTY; without even the implied warranty of\n" "MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n" "GNU General Public License for more details.\n") << "\n" << _("** Configuration **") << "\n" << _("Enabled Features") << ": " << featureSummary() << "\n" << _("Hash Algorithms") << ": " << MessageDigest::getSupportedHashTypeString() << "\n" << _("Libraries") << ": " << usedLibs() << "\n" << _("Compiler") << ": " << usedCompilerAndPlatform() << "\n" << _("System") << ": " << getOperatingSystemInfo() << "\n" << "\n" << fmt(_("Report bugs to %s"), PACKAGE_BUGREPORT) << "\n" << _("Visit") << " " << PACKAGE_URL << std::endl; } void showUsage(const std::string& keyword, const std::shared_ptr& oparser, const Console& out) { out->printf(_("Usage: aria2c [OPTIONS] [URI | MAGNET | TORRENT_FILE |" " METALINK_FILE]...")); out->printf("\n"); if (keyword.empty()) { // Very short version of usage. out->printf(_("See 'aria2c -h'.")); out->printf("\n"); return; } else if (keyword[0] == '#') { std::vector handlers = keyword == STR_TAG_ALL ? oparser->findAll() : oparser->findByTag(idHelpTag(keyword.c_str())); if (keyword == STR_TAG_ALL) { out->printf(_("Printing all options.")); } else { out->printf(_("Printing options tagged with '%s'."), keyword.c_str()); out->printf("\n"); out->printf(_("See 'aria2c -h#help' to know all available tags.")); } out->printf("\n"); out->printf(_("Options:")); out->printf("\n"); for (std::vector::const_iterator i = handlers.begin(), eoi = handlers.end(); i != eoi; ++i) { write(out, *(*i)); out->printf("\n"); } } else { std::vector handlers = oparser->findByNameSubstring(keyword); if (!handlers.empty()) { out->printf(_("Printing options whose name includes '%s'."), keyword.c_str()); out->printf("\n"); out->printf(_("Options:")); out->printf("\n"); for (std::vector::const_iterator i = handlers.begin(), eoi = handlers.end(); i != eoi; ++i) { write(out, *(*i)); out->printf("\n"); } } else { out->printf(_("No option matching with '%s'."), keyword.c_str()); out->printf("\n"); write(out, *oparser->find(PREF_HELP)); } } if (keyword == strHelpTag(TAG_BASIC)) { out->printf("URI, MAGNET, TORRENT_FILE, METALINK_FILE:\n"); out->printf( _(" You can specify multiple HTTP(S)/FTP URIs. Unless you specify -Z " "option, all\n" " URIs must point to the same file or downloading will fail.")); out->printf("\n"); out->printf(_(" You can also specify arbitrary number of BitTorrent Magnet " "URIs, torrent/\n" " metalink files stored in a local drive. Please note that " "they are always\n" " treated as a separate download.")); out->printf("\n\n"); out->printf(_(" You can specify both torrent file with -T option and URIs. " "By doing this,\n" " download a file from both torrent swarm and HTTP/FTP " "server at the same time,\n" " while the data from HTTP/FTP are uploaded to the torrent " "swarm. For single file\n" " torrents, URI can be a complete URI pointing to the " "resource or if URI ends\n" " with '/', 'name' in torrent file is added. For multi-file " "torrents, 'name' and\n" " 'path' in torrent are added to form a URI for each file.")); out->printf("\n\n"); out->printf(_(" Make sure that URI is quoted with single(\') or double(\") " "quotation if it\n" " contains \"&\" or any characters that have special meaning " "in shell.")); out->printf("\n\n"); out->printf( _("About the number of connections\n" " Since 1.10.0 release, aria2 uses 1 connection per host by default " "and has 20MiB\n" " segment size restriction. So whatever value you specify using -s " "option, it\n" " uses 1 connection per host. To make it behave like 1.9.x, use\n" " --max-connection-per-server=4 --min-split-size=1M.\n" "\n")); } out->printf(_("Refer to man page for more information.")); out->printf("\n"); } } // namespace aria2