/* */ #include "common.h" #include #include #include #include "SharedHandle.h" #include "a2io.h" #include "FeatureConfig.h" #ifdef ENABLE_MESSAGE_DIGEST # include "messageDigest.h" #endif // ENABLE_MESSAGE_DIGEST #include "help_tags.h" #include "prefs.h" #include "StringFormat.h" #include "OptionParser.h" #include "OptionHandler.h" #include "util.h" namespace aria2 { void showVersion() { std::cout << PACKAGE << _(" version ") << PACKAGE_VERSION << "\n" << "Copyright (C) 2006, 2009 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: " << FeatureConfig::getInstance()->featureSummary() << "\n" #ifdef ENABLE_MESSAGE_DIGEST << "Hash Algorithms: " << MessageDigestContext::getSupportedAlgoString() << "\n" #endif // ENABLE_MESSAGE_DIGEST << "\n" << StringFormat(_("Report bugs to %s"), PACKAGE_BUGREPORT) << "\n" << "Visit " << PACKAGE_URL << std::endl; } void showUsage(const std::string& keyword, const OptionParser& oparser) { std::cout << _("Usage: aria2c [OPTIONS] [URI | MAGNET | TORRENT_FILE |" " METALINK_FILE]...") << "\n" << "\n"; if(util::startsWith(keyword, "#")) { std::vector > handlers = keyword == TAG_ALL ? oparser.findAll():oparser.findByTag(keyword); if(keyword == TAG_ALL) { std::cout << _("Printing all options."); } else { std::cout << StringFormat(_("Printing options tagged with '%s'."), keyword.c_str()); std::cout << "\n"; SharedHandle help = oparser.findByName("help"); std::cout << StringFormat(_("See -h option to know other command-line" " options(%s)."), help->createPossibleValuesString().c_str()); } std::cout << "\n" << _("Options:") << "\n"; std::copy(handlers.begin(), handlers.end(), std::ostream_iterator > (std::cout, "\n\n")); } else { std::vector > handlers = oparser.findByNameSubstring(keyword); if(!handlers.empty()) { std::cout << StringFormat(_("Printing options whose name includes" " '%s'."), keyword.c_str()) << "\n" << _("Options:") << "\n"; std::copy(handlers.begin(), handlers.end(), std::ostream_iterator > (std::cout, "\n\n")); } else { std::cout << StringFormat(_("No option matching with '%s'."), keyword.c_str()) << "\n" << oparser.findByName("help") << "\n"; } } if(keyword == TAG_BASIC) { std::cout << "URI, MAGNET, TORRENT_FILE, METALINK_FILE:" << "\n" << _(" 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.") << "\n" << _(" 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.") << "\n" << "\n" << _(" 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.") << "\n" << "\n" << _(" Make sure that URI is quoted with single(\') or double(\") quotation if it\n" " contains \"&\" or any characters that have special meaning in shell.") << "\n" << "\n"; } std::cout << _("Refer to man page for more information.") << std::endl; } } // namespace aria2