summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorTatsuhiro Tsujikawa <tatsuhiro.t@gmail.com>2008-05-19 10:25:38 +0000
committerTatsuhiro Tsujikawa <tatsuhiro.t@gmail.com>2008-05-19 10:25:38 +0000
commit0189bbc6bc727d161b9adcd2fa82f6c573bbf0a7 (patch)
tree9ac9851562949b00e241fbed96358791338910c2 /src
parente59f4f2fe3280b86c76fe5424d171e3e33113beb (diff)
2008-05-19 Tatsuhiro Tsujikawa <tujikawa at rednoah dot com>
Defined option name and possible values as std::string to reduce temporary string object creation in runtime. * src/HelpItemFactory.cc * src/LogFactory.cc * src/Option.cc * src/OptionHandlerFactory.cc * src/option_processing.cc * src/prefs.cc * src/prefs.h
Diffstat (limited to 'src')
-rw-r--r--src/HelpItemFactory.cc4
-rw-r--r--src/LogFactory.cc10
-rw-r--r--src/Makefile.am2
-rw-r--r--src/Makefile.in14
-rw-r--r--src/Option.cc7
-rw-r--r--src/OptionHandlerFactory.cc6
-rw-r--r--src/option_processing.cc156
-rw-r--r--src/prefs.cc276
-rw-r--r--src/prefs.h250
9 files changed, 501 insertions, 224 deletions
diff --git a/src/HelpItemFactory.cc b/src/HelpItemFactory.cc
index 55c66cbc..8b4a1df1 100644
--- a/src/HelpItemFactory.cc
+++ b/src/HelpItemFactory.cc
@@ -483,7 +483,9 @@ TagContainerHandle HelpItemFactory::createHelpItems(const Option* op)
op->get(PREF_LOG_LEVEL)));
item->addTag(TAG_ADVANCED);
item->setAvailableValues
- (StringFormat("%s,%s,%s,%s,%s", V_DEBUG, V_INFO, V_NOTICE, V_WARN, V_ERROR).str());
+ (StringFormat("%s,%s,%s,%s,%s",
+ V_DEBUG.c_str(), V_INFO.c_str(), V_NOTICE.c_str(),
+ V_WARN.c_str(), V_ERROR.c_str()).str());
tc->addItem(item);
}
{
diff --git a/src/LogFactory.cc b/src/LogFactory.cc
index e67487eb..baaf42dd 100644
--- a/src/LogFactory.cc
+++ b/src/LogFactory.cc
@@ -67,15 +67,15 @@ void LogFactory::setLogLevel(Logger::LEVEL level)
void LogFactory::setLogLevel(const std::string& level)
{
- if(strcmp(level.c_str(), V_DEBUG) == 0) {
+ if(level == V_DEBUG) {
_logLevel = Logger::DEBUG;
- } else if(strcmp(level.c_str(), V_INFO) == 0) {
+ } else if(level == V_INFO) {
_logLevel = Logger::INFO;
- } else if(strcmp(level.c_str(), V_NOTICE) == 0) {
+ } else if(level == V_NOTICE) {
_logLevel = Logger::NOTICE;
- } else if(strcmp(level.c_str(), V_WARN) == 0) {
+ } else if(level == V_WARN) {
_logLevel = Logger::WARN;
- } else if(strcmp(level.c_str(), V_ERROR) == 0) {
+ } else if(level == V_ERROR) {
_logLevel = Logger::ERROR;
}
}
diff --git a/src/Makefile.am b/src/Makefile.am
index 771d18bd..7f86296f 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -179,7 +179,7 @@ SRCS = Socket.h\
a2time.h\
array_fun.h\
help_tags.h\
- prefs.h\
+ prefs.cc prefs.h\
usage_text.h\
ProtocolDetector.cc ProtocolDetector.h\
NullStatCalc.h\
diff --git a/src/Makefile.in b/src/Makefile.in
index 8a67d4b1..3a4725af 100644
--- a/src/Makefile.in
+++ b/src/Makefile.in
@@ -403,8 +403,8 @@ am__libaria2c_a_SOURCES_DIST = Socket.h SocketCore.cc SocketCore.h \
DNSCache.h DownloadResult.h Sequence.h IntSequence.h \
PostDownloadHandler.h PreDownloadHandler.h SingletonHolder.h \
TrueRequestGroupCriteria.h a2algo.h a2functional.h a2io.h \
- a2netcompat.h a2time.h array_fun.h help_tags.h prefs.h \
- usage_text.h ProtocolDetector.cc ProtocolDetector.h \
+ a2netcompat.h a2time.h array_fun.h help_tags.h prefs.cc \
+ prefs.h usage_text.h ProtocolDetector.cc ProtocolDetector.h \
NullStatCalc.h StringFormat.cc StringFormat.h \
HttpSkipResponseCommand.cc HttpSkipResponseCommand.h \
InitiateConnectionCommand.cc InitiateConnectionCommand.h \
@@ -790,8 +790,9 @@ am__objects_15 = SocketCore.$(OBJEXT) Command.$(OBJEXT) \
ByteArrayDiskWriterFactory.$(OBJEXT) ServerHost.$(OBJEXT) \
HelpItem.$(OBJEXT) TaggedItem.$(OBJEXT) TagContainer.$(OBJEXT) \
HelpItemFactory.$(OBJEXT) SingleFileDownloadContext.$(OBJEXT) \
- TimedHaltCommand.$(OBJEXT) ProtocolDetector.$(OBJEXT) \
- StringFormat.$(OBJEXT) HttpSkipResponseCommand.$(OBJEXT) \
+ TimedHaltCommand.$(OBJEXT) prefs.$(OBJEXT) \
+ ProtocolDetector.$(OBJEXT) StringFormat.$(OBJEXT) \
+ HttpSkipResponseCommand.$(OBJEXT) \
InitiateConnectionCommand.$(OBJEXT) \
FtpFinishDownloadCommand.$(OBJEXT) A2STR.$(OBJEXT) \
RarestPieceSelector.$(OBJEXT) $(am__objects_1) \
@@ -1132,8 +1133,8 @@ SRCS = Socket.h SocketCore.cc SocketCore.h BinaryStream.h Command.cc \
DNSCache.h DownloadResult.h Sequence.h IntSequence.h \
PostDownloadHandler.h PreDownloadHandler.h SingletonHolder.h \
TrueRequestGroupCriteria.h a2algo.h a2functional.h a2io.h \
- a2netcompat.h a2time.h array_fun.h help_tags.h prefs.h \
- usage_text.h ProtocolDetector.cc ProtocolDetector.h \
+ a2netcompat.h a2time.h array_fun.h help_tags.h prefs.cc \
+ prefs.h usage_text.h ProtocolDetector.cc ProtocolDetector.h \
NullStatCalc.h StringFormat.cc StringFormat.h \
HttpSkipResponseCommand.cc HttpSkipResponseCommand.h \
InitiateConnectionCommand.cc InitiateConnectionCommand.h \
@@ -1512,6 +1513,7 @@ distclean-compile:
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/main.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/messageDigest.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/option_processing.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/prefs.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strptime.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/timegm.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/version_usage.Po@am__quote@
diff --git a/src/Option.cc b/src/Option.cc
index 3d135203..a2d34e6d 100644
--- a/src/Option.cc
+++ b/src/Option.cc
@@ -80,12 +80,7 @@ int64_t Option::getAsLLInt(const std::string& name) const {
}
bool Option::getAsBool(const std::string& name) const {
- const std::string& value = get(name);
- if(strcmp(value.c_str(), V_TRUE) == 0) {
- return true;
- } else {
- return false;
- }
+ return get(name) == V_TRUE;
}
double Option::getAsDouble(const std::string& name) const {
diff --git a/src/OptionHandlerFactory.cc b/src/OptionHandlerFactory.cc
index 9e9579cc..a68b4ed0 100644
--- a/src/OptionHandlerFactory.cc
+++ b/src/OptionHandlerFactory.cc
@@ -112,9 +112,9 @@ OptionHandlers OptionHandlerFactory::createOptionHandlers()
handlers.push_back(SH(new BooleanOptionHandler(PREF_ENABLE_DIRECT_IO)));
handlers.push_back(SH(new BooleanOptionHandler(PREF_ALLOW_PIECE_LENGTH_CHANGE)));
{
- const char* params[] = { V_HTTP, V_HTTPS, V_FTP, V_NONE };
+ const std::string params[] = { V_HTTP, V_HTTPS, V_FTP, V_NONE };
handlers.push_back(SH(new ParameterOptionHandler(PREF_METALINK_PREFERRED_PROTOCOL,
- std::deque<std::string>(&params[0], &params[arrayLength(params)]))));
+ std::deque<std::string>(&params[0], &params[arrayLength(params)]))));
}
handlers.push_back(SH(new BooleanOptionHandler(PREF_METALINK_ENABLE_UNIQUE_PROTOCOL)));
handlers.push_back(SH(new BooleanOptionHandler(PREF_ENABLE_PEER_EXCHANGE)));
@@ -134,7 +134,7 @@ OptionHandlers OptionHandlerFactory::createOptionHandlers()
handlers.push_back(SH(new BooleanOptionHandler(PREF_FTP_REUSE_CONNECTION)));
handlers.push_back(SH(new NumberOptionHandler(PREF_SUMMARY_INTERVAL, 0, INT32_MAX)));
{
- const char* params[] = { V_DEBUG, V_INFO, V_NOTICE, V_WARN, V_ERROR };
+ const std::string params[] = { V_DEBUG, V_INFO, V_NOTICE, V_WARN, V_ERROR };
handlers.push_back(SH(new ParameterOptionHandler
(PREF_LOG_LEVEL,
std::deque<std::string>(&params[0],
diff --git a/src/option_processing.cc b/src/option_processing.cc
index 2f4f483d..547bb7f7 100644
--- a/src/option_processing.cc
+++ b/src/option_processing.cc
@@ -172,97 +172,97 @@ Option* option_processing(int argc, char* const argv[])
int lopt;
static struct option longOpts[] = {
#ifdef HAVE_DAEMON
- { PREF_DAEMON, no_argument, NULL, 'D' },
+ { PREF_DAEMON.c_str(), no_argument, NULL, 'D' },
#endif // HAVE_DAEMON
- { PREF_DIR, required_argument, NULL, 'd' },
- { PREF_OUT, required_argument, NULL, 'o' },
- { PREF_LOG, required_argument, NULL, 'l' },
- { PREF_SPLIT, required_argument, NULL, 's' },
- { PREF_TIMEOUT, required_argument, NULL, 't' },
- { PREF_MAX_TRIES, required_argument, NULL, 'm' },
- { PREF_HTTP_PROXY, required_argument, &lopt, 1 },
- { PREF_HTTP_USER, required_argument, &lopt, 2 },
- { PREF_HTTP_PASSWD, required_argument, &lopt, 3 },
- { PREF_HTTP_PROXY_USER, required_argument, &lopt, 4 },
- { PREF_HTTP_PROXY_PASSWD, required_argument, &lopt, 5 },
- { PREF_HTTP_AUTH_SCHEME, required_argument, &lopt, 6 },
- { PREF_REFERER, required_argument, &lopt, 7 },
- { PREF_RETRY_WAIT, required_argument, &lopt, 8 },
- { PREF_FTP_USER, required_argument, &lopt, 9 },
- { PREF_FTP_PASSWD, required_argument, &lopt, 10 },
- { PREF_FTP_TYPE, required_argument, &lopt, 11 },
- { PREF_FTP_PASV, no_argument, NULL, 'p' },
- { PREF_FTP_VIA_HTTP_PROXY, required_argument, &lopt, 12 },
- //{ PREF_MIN_SEGMENT_SIZE, required_argument, &lopt, 13 },
- { PREF_HTTP_PROXY_METHOD, required_argument, &lopt, 14 },
- { PREF_LOWEST_SPEED_LIMIT, required_argument, &lopt, 200 },
- { PREF_MAX_DOWNLOAD_LIMIT, required_argument, &lopt, 201 },
- { PREF_FILE_ALLOCATION, required_argument, 0, 'a' },
- { PREF_ALLOW_OVERWRITE, required_argument, &lopt, 202 },
+ { PREF_DIR.c_str(), required_argument, NULL, 'd' },
+ { PREF_OUT.c_str(), required_argument, NULL, 'o' },
+ { PREF_LOG.c_str(), required_argument, NULL, 'l' },
+ { PREF_SPLIT.c_str(), required_argument, NULL, 's' },
+ { PREF_TIMEOUT.c_str(), required_argument, NULL, 't' },
+ { PREF_MAX_TRIES.c_str(), required_argument, NULL, 'm' },
+ { PREF_HTTP_PROXY.c_str(), required_argument, &lopt, 1 },
+ { PREF_HTTP_USER.c_str(), required_argument, &lopt, 2 },
+ { PREF_HTTP_PASSWD.c_str(), required_argument, &lopt, 3 },
+ { PREF_HTTP_PROXY_USER.c_str(), required_argument, &lopt, 4 },
+ { PREF_HTTP_PROXY_PASSWD.c_str(), required_argument, &lopt, 5 },
+ { PREF_HTTP_AUTH_SCHEME.c_str(), required_argument, &lopt, 6 },
+ { PREF_REFERER.c_str(), required_argument, &lopt, 7 },
+ { PREF_RETRY_WAIT.c_str(), required_argument, &lopt, 8 },
+ { PREF_FTP_USER.c_str(), required_argument, &lopt, 9 },
+ { PREF_FTP_PASSWD.c_str(), required_argument, &lopt, 10 },
+ { PREF_FTP_TYPE.c_str(), required_argument, &lopt, 11 },
+ { PREF_FTP_PASV.c_str(), no_argument, NULL, 'p' },
+ { PREF_FTP_VIA_HTTP_PROXY.c_str(), required_argument, &lopt, 12 },
+ //{ PREF_MIN_SEGMENT_SIZE.c_str(), required_argument, &lopt, 13 },
+ { PREF_HTTP_PROXY_METHOD.c_str(), required_argument, &lopt, 14 },
+ { PREF_LOWEST_SPEED_LIMIT.c_str(), required_argument, &lopt, 200 },
+ { PREF_MAX_DOWNLOAD_LIMIT.c_str(), required_argument, &lopt, 201 },
+ { PREF_FILE_ALLOCATION.c_str(), required_argument, 0, 'a' },
+ { PREF_ALLOW_OVERWRITE.c_str(), required_argument, &lopt, 202 },
#ifdef ENABLE_MESSAGE_DIGEST
- { PREF_CHECK_INTEGRITY, required_argument, &lopt, 203 },
- { PREF_REALTIME_CHUNK_CHECKSUM, required_argument, &lopt, 204 },
+ { PREF_CHECK_INTEGRITY.c_str(), required_argument, &lopt, 203 },
+ { PREF_REALTIME_CHUNK_CHECKSUM.c_str(), required_argument, &lopt, 204 },
#endif // ENABLE_MESSAGE_DIGEST
- { PREF_CONTINUE, no_argument, 0, 'c' },
- { PREF_USER_AGENT, required_argument, 0, 'U' },
- { PREF_NO_NETRC, no_argument, 0, 'n' },
- { PREF_INPUT_FILE, required_argument, 0, 'i' },
- { PREF_MAX_CONCURRENT_DOWNLOADS, required_argument, 0, 'j' },
- { PREF_LOAD_COOKIES, required_argument, &lopt, 205 },
- { PREF_FORCE_SEQUENTIAL, optional_argument, 0, 'Z' },
- { PREF_AUTO_FILE_RENAMING, optional_argument, &lopt, 206 },
- { PREF_PARAMETERIZED_URI, optional_argument, 0, 'P' },
- { PREF_ENABLE_HTTP_KEEP_ALIVE, optional_argument, &lopt, 207 },
- { PREF_ENABLE_HTTP_PIPELINING, optional_argument, &lopt, 208 },
- { PREF_NO_FILE_ALLOCATION_LIMIT, required_argument, &lopt, 209 },
+ { PREF_CONTINUE.c_str(), no_argument, 0, 'c' },
+ { PREF_USER_AGENT.c_str(), required_argument, 0, 'U' },
+ { PREF_NO_NETRC.c_str(), no_argument, 0, 'n' },
+ { PREF_INPUT_FILE.c_str(), required_argument, 0, 'i' },
+ { PREF_MAX_CONCURRENT_DOWNLOADS.c_str(), required_argument, 0, 'j' },
+ { PREF_LOAD_COOKIES.c_str(), required_argument, &lopt, 205 },
+ { PREF_FORCE_SEQUENTIAL.c_str(), optional_argument, 0, 'Z' },
+ { PREF_AUTO_FILE_RENAMING.c_str(), optional_argument, &lopt, 206 },
+ { PREF_PARAMETERIZED_URI.c_str(), optional_argument, 0, 'P' },
+ { PREF_ENABLE_HTTP_KEEP_ALIVE.c_str(), optional_argument, &lopt, 207 },
+ { PREF_ENABLE_HTTP_PIPELINING.c_str(), optional_argument, &lopt, 208 },
+ { PREF_NO_FILE_ALLOCATION_LIMIT.c_str(), required_argument, &lopt, 209 },
#ifdef ENABLE_DIRECT_IO
- { PREF_ENABLE_DIRECT_IO, optional_argument, &lopt, 210 },
+ { PREF_ENABLE_DIRECT_IO.c_str(), optional_argument, &lopt, 210 },
#endif // ENABLE_DIRECT_IO
- { PREF_ALLOW_PIECE_LENGTH_CHANGE, required_argument, &lopt, 211 },
- { PREF_NO_CONF, no_argument, &lopt, 212 },
- { PREF_CONF_PATH, required_argument, &lopt, 213 },
- { PREF_STOP, required_argument, &lopt, 214 },
- { PREF_HEADER, required_argument, &lopt, 215 },
- { PREF_QUIET, optional_argument, 0, 'q' },
+ { PREF_ALLOW_PIECE_LENGTH_CHANGE.c_str(), required_argument, &lopt, 211 },
+ { PREF_NO_CONF.c_str(), no_argument, &lopt, 212 },
+ { PREF_CONF_PATH.c_str(), required_argument, &lopt, 213 },
+ { PREF_STOP.c_str(), required_argument, &lopt, 214 },
+ { PREF_HEADER.c_str(), required_argument, &lopt, 215 },
+ { PREF_QUIET.c_str(), optional_argument, 0, 'q' },
#ifdef ENABLE_ASYNC_DNS
- { PREF_ASYNC_DNS, optional_argument, &lopt, 216 },
+ { PREF_ASYNC_DNS.c_str(), optional_argument, &lopt, 216 },
#endif // ENABLE_ASYNC_DNS
- { PREF_FTP_REUSE_CONNECTION, optional_argument, &lopt, 217 },
- { PREF_SUMMARY_INTERVAL, required_argument, &lopt, 218 },
- { PREF_LOG_LEVEL, required_argument, &lopt, 219 },
+ { PREF_FTP_REUSE_CONNECTION.c_str(), optional_argument, &lopt, 217 },
+ { PREF_SUMMARY_INTERVAL.c_str(), required_argument, &lopt, 218 },
+ { PREF_LOG_LEVEL.c_str(), required_argument, &lopt, 219 },
#if defined ENABLE_BITTORRENT || ENABLE_METALINK
- { PREF_SHOW_FILES, no_argument, NULL, 'S' },
- { PREF_SELECT_FILE, required_argument, &lopt, 21 },
+ { PREF_SHOW_FILES.c_str(), no_argument, NULL, 'S' },
+ { PREF_SELECT_FILE.c_str(), required_argument, &lopt, 21 },
#endif // ENABLE_BITTORRENT || ENABLE_METALINK
#ifdef ENABLE_BITTORRENT
- { PREF_TORRENT_FILE, required_argument, NULL, 'T' },
- { PREF_LISTEN_PORT, required_argument, &lopt, 15 },
- { PREF_FOLLOW_TORRENT, required_argument, &lopt, 16 },
- { PREF_NO_PREALLOCATION, no_argument, &lopt, 18 },
- { PREF_DIRECT_FILE_MAPPING, required_argument, &lopt, 19 },
+ { PREF_TORRENT_FILE.c_str(), required_argument, NULL, 'T' },
+ { PREF_LISTEN_PORT.c_str(), required_argument, &lopt, 15 },
+ { PREF_FOLLOW_TORRENT.c_str(), required_argument, &lopt, 16 },
+ { PREF_NO_PREALLOCATION.c_str(), no_argument, &lopt, 18 },
+ { PREF_DIRECT_FILE_MAPPING.c_str(), required_argument, &lopt, 19 },
// TODO remove upload-limit.
- //{ "upload-limit", required_argument, &lopt, 20 },
- { PREF_SEED_TIME, required_argument, &lopt, 22 },
- { PREF_SEED_RATIO, required_argument, &lopt, 23 },
- { PREF_MAX_UPLOAD_LIMIT, required_argument, &lopt, 24 },
- { PREF_PEER_ID_PREFIX, required_argument, &lopt, 25 },
- { PREF_ENABLE_PEER_EXCHANGE, optional_argument, &lopt, 26 },
- { PREF_ENABLE_DHT, optional_argument, &lopt, 27 },
- { PREF_DHT_LISTEN_PORT, required_argument, &lopt, 28 },
- { PREF_DHT_ENTRY_POINT, required_argument, &lopt, 29 },
- { PREF_BT_MIN_CRYPTO_LEVEL, required_argument, &lopt, 30 },
- { PREF_BT_REQUIRE_CRYPTO, required_argument, &lopt, 31 },
+ //{ "upload-limit".c_str(), required_argument, &lopt, 20 },
+ { PREF_SEED_TIME.c_str(), required_argument, &lopt, 22 },
+ { PREF_SEED_RATIO.c_str(), required_argument, &lopt, 23 },
+ { PREF_MAX_UPLOAD_LIMIT.c_str(), required_argument, &lopt, 24 },
+ { PREF_PEER_ID_PREFIX.c_str(), required_argument, &lopt, 25 },
+ { PREF_ENABLE_PEER_EXCHANGE.c_str(), optional_argument, &lopt, 26 },
+ { PREF_ENABLE_DHT.c_str(), optional_argument, &lopt, 27 },
+ { PREF_DHT_LISTEN_PORT.c_str(), required_argument, &lopt, 28 },
+ { PREF_DHT_ENTRY_POINT.c_str(), required_argument, &lopt, 29 },
+ { PREF_BT_MIN_CRYPTO_LEVEL.c_str(), required_argument, &lopt, 30 },
+ { PREF_BT_REQUIRE_CRYPTO.c_str(), required_argument, &lopt, 31 },
#endif // ENABLE_BITTORRENT
#ifdef ENABLE_METALINK
- { PREF_METALINK_FILE, required_argument, NULL, 'M' },
- { PREF_METALINK_SERVERS, required_argument, NULL, 'C' },
- { PREF_METALINK_VERSION, required_argument, &lopt, 100 },
- { PREF_METALINK_LANGUAGE, required_argument, &lopt, 101 },
- { PREF_METALINK_OS, required_argument, &lopt, 102 },
- { PREF_FOLLOW_METALINK, required_argument, &lopt, 103 },
- { PREF_METALINK_LOCATION, required_argument, &lopt, 104 },
- { PREF_METALINK_PREFERRED_PROTOCOL, required_argument, &lopt, 105 },
- { PREF_METALINK_ENABLE_UNIQUE_PROTOCOL, optional_argument, &lopt, 106 },
+ { PREF_METALINK_FILE.c_str(), required_argument, NULL, 'M' },
+ { PREF_METALINK_SERVERS.c_str(), required_argument, NULL, 'C' },
+ { PREF_METALINK_VERSION.c_str(), required_argument, &lopt, 100 },
+ { PREF_METALINK_LANGUAGE.c_str(), required_argument, &lopt, 101 },
+ { PREF_METALINK_OS.c_str(), required_argument, &lopt, 102 },
+ { PREF_FOLLOW_METALINK.c_str(), required_argument, &lopt, 103 },
+ { PREF_METALINK_LOCATION.c_str(), required_argument, &lopt, 104 },
+ { PREF_METALINK_PREFERRED_PROTOCOL.c_str(), required_argument, &lopt, 105 },
+ { PREF_METALINK_ENABLE_UNIQUE_PROTOCOL.c_str(), optional_argument, &lopt, 106 },
#endif // ENABLE_METALINK
{ "version", no_argument, NULL, 'v' },
{ "help", optional_argument, NULL, 'h' },
diff --git a/src/prefs.cc b/src/prefs.cc
new file mode 100644
index 00000000..03880234
--- /dev/null
+++ b/src/prefs.cc
@@ -0,0 +1,276 @@
+/* <!-- copyright */
+/*
+ * aria2 - The high speed download utility
+ *
+ * Copyright (C) 2006 Tatsuhiro Tsujikawa
+ *
+ * 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.
+ *
+ * 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
+ *
+ * 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.
+ */
+/* copyright --> */
+#include "prefs.h"
+
+namespace aria2 {
+
+/**
+ * Constants
+ */
+const std::string V_TRUE("true");
+const std::string V_FALSE("false");
+const std::string V_NONE("none");
+const std::string V_MEM("mem");
+const std::string V_ALL("all");
+/**
+ * General preferences
+ */
+// values: 1*digit
+const std::string PREF_RETRY_WAIT("retry-wait");
+// values: 1*digit
+const std::string PREF_TIMEOUT("timeout");
+// values: 1*digit
+const std::string PREF_DNS_TIMEOUT("dns-timeout");
+// values: 1*digit
+const std::string PREF_MAX_TRIES("max-tries");
+// values: 1*digit
+const std::string PREF_MIN_SEGMENT_SIZE("min-segment-size");
+// values: 1*digit
+const std::string PREF_AUTO_SAVE_INTERVAL("auto-save-interval");
+// values: true | false
+const std::string PREF_STDOUT_LOG("stdout-log");
+// values: a string that your file system recognizes as a file name.
+const std::string PREF_LOG("log");
+// values: a string that your file system recognizes as a directory.
+const std::string PREF_DIR("dir");
+// values: a string that your file system recognizes as a file name.
+const std::string PREF_OUT("out");
+// values: 1*digit
+const std::string PREF_SPLIT("split");
+// value: true | false
+const std::string PREF_DAEMON("daemon");
+// value: a string
+const std::string PREF_REFERER("referer");
+// value: 1*digit
+const std::string PREF_LOWEST_SPEED_LIMIT("lowest-speed-limit");
+// value: 1*digit
+const std::string PREF_SEGMENT_SIZE("segment-size");
+// value: 1*digit
+const std::string PREF_MAX_DOWNLOAD_LIMIT("max-download-limit");
+// value: 1*digit
+const std::string PREF_STARTUP_IDLE_TIME("startup-idle-time");
+// value: prealloc | none
+const std::string PREF_FILE_ALLOCATION("file-allocation");
+const std::string V_PREALLOC("prealloc");
+#// value: 1*digit
+const std::string PREF_NO_FILE_ALLOCATION_LIMIT("no-file-allocation-limit");
+// value: true | false
+const std::string PREF_ALLOW_OVERWRITE("allow-overwrite");
+// value: true | false
+const std::string PREF_REALTIME_CHUNK_CHECKSUM("realtime-chunk-checksum");
+// value: true | false
+const std::string PREF_CHECK_INTEGRITY("check-integrity");
+// value: string that your file system recognizes as a file name.
+const std::string PREF_NETRC_PATH("netrc-path");
+// value:
+const std::string PREF_CONTINUE("continue");
+// value:
+const std::string PREF_NO_NETRC("no-netrc");
+// value: 1*digit
+const std::string PREF_MAX_DOWNLOADS("max-downloads");
+// value: string that your file system recognizes as a file name.
+const std::string PREF_INPUT_FILE("input-file");
+// value: 1*digit
+const std::string PREF_MAX_CONCURRENT_DOWNLOADS("max-concurrent-downloads");
+// value: 1*digit
+const std::string PREF_DIRECT_DOWNLOAD_TIMEOUT("direct-download-timeout");
+// value: true | false
+const std::string PREF_FORCE_SEQUENTIAL("force-sequential");
+// value: true | false
+const std::string PREF_AUTO_FILE_RENAMING("auto-file-renaming");
+// value: true | false
+const std::string PREF_PARAMETERIZED_URI("parameterized-uri");
+// value: true | false
+const std::string PREF_ENABLE_DIRECT_IO("enable-direct-io");
+// value: true | false
+const std::string PREF_ALLOW_PIECE_LENGTH_CHANGE("allow-piece-length-change");
+// value: true | false
+const std::string PREF_NO_CONF("no-conf");
+// value: string
+const std::string PREF_CONF_PATH("conf-path");
+// value: 1*digit
+const std::string PREF_STOP("stop");
+// value: true | false
+const std::string PREF_QUIET("quiet");
+// value: true | false
+const std::string PREF_ASYNC_DNS("async-dns");
+// value: 1*digit
+const std::string PREF_SUMMARY_INTERVAL("summary-interval");
+// value: debug, info, notice, warn, error
+const std::string PREF_LOG_LEVEL("log-level");
+const std::string V_DEBUG("debug");
+const std::string V_INFO("info");
+const std::string V_NOTICE("notice");
+const std::string V_WARN("warn");
+const std::string V_ERROR("error");
+
+/**
+ * FTP related preferences
+ */
+const std::string PREF_FTP_USER("ftp-user");
+const std::string PREF_FTP_PASSWD("ftp-passwd");
+// values: binary | ascii
+const std::string PREF_FTP_TYPE("ftp-type");
+const std::string V_BINARY("binary");
+const std::string V_ASCII("ascii");
+// values: get | tunnel
+const std::string PREF_FTP_VIA_HTTP_PROXY("ftp-via-http-proxy");
+const std::string V_GET("get");
+const std::string V_TUNNEL("tunnel");
+// values: true | false
+const std::string PREF_FTP_PASV("ftp-pasv");
+// values: true | false
+const std::string PREF_FTP_REUSE_CONNECTION("ftp-reuse-connection");
+
+/**
+ * HTTP related preferences
+ */
+const std::string PREF_HTTP_USER("http-user");
+const std::string PREF_HTTP_PASSWD("http-passwd");
+// values: basic
+const std::string PREF_HTTP_AUTH_SCHEME("http-auth-scheme");
+const std::string V_BASIC("basic");
+// values: true | false
+const std::string PREF_HTTP_AUTH_ENABLED("http-auth-enabled");
+// values: string
+const std::string PREF_USER_AGENT("user-agent");
+// value: string that your file system recognizes as a file name.
+const std::string PREF_LOAD_COOKIES("load-cookies");
+// values: true | false
+const std::string PREF_ENABLE_HTTP_KEEP_ALIVE("enable-http-keep-alive");
+// values: true | false
+const std::string PREF_ENABLE_HTTP_PIPELINING("enable-http-pipelining");
+// value: 1*digit
+const std::string PREF_MAX_HTTP_PIPELINING("max-http-pipelining");
+// value: string
+const std::string PREF_HEADER("header");
+
+/**
+ * HTTP proxy related preferences
+ */
+const std::string PREF_HTTP_PROXY("http-proxy");
+const std::string PREF_HTTP_PROXY_USER("http-proxy-user");
+const std::string PREF_HTTP_PROXY_PASSWD("http-proxy-passwd");
+const std::string PREF_HTTP_PROXY_HOST("http-proxy-host");
+const std::string PREF_HTTP_PROXY_PORT("http-proxy-port");
+// values: get | tunnel
+const std::string PREF_HTTP_PROXY_METHOD("http-proxy-method");
+// values: true | false
+const std::string PREF_HTTP_PROXY_ENABLED("http-proxy-enabled");
+// values: true | false
+const std::string PREF_HTTP_PROXY_AUTH_ENABLED("http-proxy-auth-enabled");
+
+/**
+ * BitTorrent related preferences
+ */
+// values: 1*digit
+const std::string PREF_PEER_CONNECTION_TIMEOUT("peer-connection-timeout");
+// values: 1*digit
+const std::string PREF_BT_TIMEOUT("bt-timeout");
+// values: 1*digit
+const std::string PREF_BT_REQUEST_TIMEOUT("bt-request-timeout");
+// values: true | false
+const std::string PREF_SHOW_FILES("show-files");
+// values: true | false
+const std::string PREF_NO_PREALLOCATION("no-preallocation");
+// values: true | false
+const std::string PREF_DIRECT_FILE_MAPPING("direct-file-mapping");
+// values: 1*digit
+const std::string PREF_MAX_UPLOAD_LIMIT("max-upload-limit");
+// values: a string that your file system recognizes as a file name.
+const std::string PREF_TORRENT_FILE("torrent-file");
+// values: 1*digit
+const std::string PREF_LISTEN_PORT("listen-port");
+// values: true | false | mem
+const std::string PREF_FOLLOW_TORRENT("follow-torrent");
+// values: 1*digit *( (,|-) 1*digit);
+const std::string PREF_SELECT_FILE("select-file");
+// values: 1*digit
+const std::string PREF_SEED_TIME("seed-time");
+// values: 1*digit ['.' [ 1*digit ] ]
+const std::string PREF_SEED_RATIO("seed-ratio");
+// values: 1*digit
+const std::string PREF_TRACKER_MAX_TRIES("tracker-max-tries");
+// values: 1*digit
+const std::string PREF_BT_KEEP_ALIVE_INTERVAL("bt-keep-alive-interval");
+// values: a string, less than or equals to 20 bytes length
+const std::string PREF_PEER_ID_PREFIX("peer-id-prefix");
+// values: true | false
+const std::string PREF_ENABLE_PEER_EXCHANGE("enable-peer-exchange");
+// values: true | false
+const std::string PREF_ENABLE_DHT("enable-dht");
+// values: 1*digit
+const std::string PREF_DHT_LISTEN_PORT("dht-listen-port");
+// values: a string
+const std::string PREF_DHT_ENTRY_POINT_HOST("dht-entry-point-host");
+// values: 1*digit
+const std::string PREF_DHT_ENTRY_POINT_PORT("dht-entry-point-port");
+// values: a string (hostname:port);
+const std::string PREF_DHT_ENTRY_POINT("dht-entry-point");
+// values: a string
+const std::string PREF_DHT_FILE_PATH("dht-file-path");
+// values: plain | arc4
+const std::string PREF_BT_MIN_CRYPTO_LEVEL("bt-min-crypto-level");
+const std::string V_PLAIN("plain");
+const std::string V_ARC4("arc4");
+// values:: true | false
+const std::string PREF_BT_REQUIRE_CRYPTO("bt-require-crypto");
+
+/**
+ * Metalink related preferences
+ */
+// values: a string that your file system recognizes as a file name.
+const std::string PREF_METALINK_FILE("metalink-file");
+// values: a string
+const std::string PREF_METALINK_VERSION("metalink-version");
+// values: a string
+const std::string PREF_METALINK_LANGUAGE("metalink-language");
+// values: a string
+const std::string PREF_METALINK_OS("metalink-os");
+// values: a string
+const std::string PREF_METALINK_LOCATION("metalink-location");
+// values: 1*digit
+const std::string PREF_METALINK_SERVERS("metalink-servers");
+// values: true | false | mem
+const std::string PREF_FOLLOW_METALINK("follow-metalink");
+// values: http | https | ftp | none
+const std::string PREF_METALINK_PREFERRED_PROTOCOL("metalink-preferred-protocol");
+const std::string V_HTTP("http");
+const std::string V_HTTPS("https");
+const std::string V_FTP("ftp");
+// values: true | false
+const std::string PREF_METALINK_ENABLE_UNIQUE_PROTOCOL("metalink-enable-unique-protocol");
+
+} // namespace aria2
diff --git a/src/prefs.h b/src/prefs.h
index ccd6e367..9f8c9ac4 100644
--- a/src/prefs.h
+++ b/src/prefs.h
@@ -36,245 +36,247 @@
#define _D_PREFS_H_
#include "common.h"
+#include <string>
+
+namespace aria2 {
/**
* Constants
*/
-#undef V_TRUE
-#define V_TRUE "true"
-#undef V_FALSE
-#define V_FALSE "false"
-#undef V_NONE
-#define V_NONE "none"
-#define V_MEM "mem"
-#define V_ALL "all"
+extern const std::string V_TRUE;
+extern const std::string V_FALSE;
+extern const std::string V_NONE;
+extern const std::string V_MEM;
+extern const std::string V_ALL;
/**
* General preferences
*/
// values: 1*digit
-#define PREF_RETRY_WAIT "retry-wait"
+extern const std::string PREF_RETRY_WAIT;
// values: 1*digit
-#define PREF_TIMEOUT "timeout"
+extern const std::string PREF_TIMEOUT;
// values: 1*digit
-#define PREF_DNS_TIMEOUT "dns-timeout"
+extern const std::string PREF_DNS_TIMEOUT;
// values: 1*digit
-#define PREF_MAX_TRIES "max-tries"
+extern const std::string PREF_MAX_TRIES;
// values: 1*digit
-#define PREF_MIN_SEGMENT_SIZE "min-segment-size"
+extern const std::string PREF_MIN_SEGMENT_SIZE;
// values: 1*digit
-#define PREF_AUTO_SAVE_INTERVAL "auto-save-interval"
+extern const std::string PREF_AUTO_SAVE_INTERVAL;
// values: true | false
-#define PREF_STDOUT_LOG "stdout-log"
+extern const std::string PREF_STDOUT_LOG;
// values: a string that your file system recognizes as a file name.
-#define PREF_LOG "log"
+extern const std::string PREF_LOG;
// values: a string that your file system recognizes as a directory.
-#define PREF_DIR "dir"
+extern const std::string PREF_DIR;
// values: a string that your file system recognizes as a file name.
-#define PREF_OUT "out"
+extern const std::string PREF_OUT;
// values: 1*digit
-#define PREF_SPLIT "split"
+extern const std::string PREF_SPLIT;
// value: true | false
-#define PREF_DAEMON "daemon"
+extern const std::string PREF_DAEMON;
// value: a string
-#define PREF_REFERER "referer"
+extern const std::string PREF_REFERER;
// value: 1*digit
-#define PREF_LOWEST_SPEED_LIMIT "lowest-speed-limit"
+extern const std::string PREF_LOWEST_SPEED_LIMIT;
// value: 1*digit
-#define PREF_SEGMENT_SIZE "segment-size"
+extern const std::string PREF_SEGMENT_SIZE;
// value: 1*digit
-#define PREF_MAX_DOWNLOAD_LIMIT "max-download-limit"
+extern const std::string PREF_MAX_DOWNLOAD_LIMIT;
// value: 1*digit
-#define PREF_STARTUP_IDLE_TIME "startup-idle-time"
+extern const std::string PREF_STARTUP_IDLE_TIME;
// value: prealloc | none
-#define PREF_FILE_ALLOCATION "file-allocation"
-# define V_PREALLOC "prealloc"
+extern const std::string PREF_FILE_ALLOCATION;
+extern const std::string V_PREALLOC;
#// value: 1*digit
-#define PREF_NO_FILE_ALLOCATION_LIMIT "no-file-allocation-limit"
+extern const std::string PREF_NO_FILE_ALLOCATION_LIMIT;
// value: true | false
-#define PREF_ALLOW_OVERWRITE "allow-overwrite"
+extern const std::string PREF_ALLOW_OVERWRITE;
// value: true | false
-#define PREF_REALTIME_CHUNK_CHECKSUM "realtime-chunk-checksum"
+extern const std::string PREF_REALTIME_CHUNK_CHECKSUM;
// value: true | false
-#define PREF_CHECK_INTEGRITY "check-integrity"
+extern const std::string PREF_CHECK_INTEGRITY;
// value: string that your file system recognizes as a file name.
-#define PREF_NETRC_PATH "netrc-path"
+extern const std::string PREF_NETRC_PATH;
// value:
-#define PREF_CONTINUE "continue"
+extern const std::string PREF_CONTINUE;
// value:
-#define PREF_NO_NETRC "no-netrc"
+extern const std::string PREF_NO_NETRC;
// value: 1*digit
-#define PREF_MAX_DOWNLOADS "max-downloads"
+extern const std::string PREF_MAX_DOWNLOADS;
// value: string that your file system recognizes as a file name.
-#define PREF_INPUT_FILE "input-file"
+extern const std::string PREF_INPUT_FILE;
// value: 1*digit
-#define PREF_MAX_CONCURRENT_DOWNLOADS "max-concurrent-downloads"
+extern const std::string PREF_MAX_CONCURRENT_DOWNLOADS;
// value: 1*digit
-#define PREF_DIRECT_DOWNLOAD_TIMEOUT "direct-download-timeout"
+extern const std::string PREF_DIRECT_DOWNLOAD_TIMEOUT;
// value: true | false
-#define PREF_FORCE_SEQUENTIAL "force-sequential"
+extern const std::string PREF_FORCE_SEQUENTIAL;
// value: true | false
-#define PREF_AUTO_FILE_RENAMING "auto-file-renaming"
+extern const std::string PREF_AUTO_FILE_RENAMING;
// value: true | false
-#define PREF_PARAMETERIZED_URI "parameterized-uri"
+extern const std::string PREF_PARAMETERIZED_URI;
// value: true | false
-#define PREF_ENABLE_DIRECT_IO "enable-direct-io"
+extern const std::string PREF_ENABLE_DIRECT_IO;
// value: true | false
-#define PREF_ALLOW_PIECE_LENGTH_CHANGE "allow-piece-length-change"
+extern const std::string PREF_ALLOW_PIECE_LENGTH_CHANGE;
// value: true | false
-#define PREF_NO_CONF "no-conf"
+extern const std::string PREF_NO_CONF;
// value: string
-#define PREF_CONF_PATH "conf-path"
+extern const std::string PREF_CONF_PATH;
// value: 1*digit
-#define PREF_STOP "stop"
+extern const std::string PREF_STOP;
// value: true | false
-#define PREF_QUIET "quiet"
+extern const std::string PREF_QUIET;
// value: true | false
-#define PREF_ASYNC_DNS "async-dns"
+extern const std::string PREF_ASYNC_DNS;
// value: 1*digit
-#define PREF_SUMMARY_INTERVAL "summary-interval"
+extern const std::string PREF_SUMMARY_INTERVAL;
// value: debug, info, notice, warn, error
-#define PREF_LOG_LEVEL "log-level"
-# define V_DEBUG "debug"
-# define V_INFO "info"
-# define V_NOTICE "notice"
-# define V_WARN "warn"
-# define V_ERROR "error"
+extern const std::string PREF_LOG_LEVEL;
+extern const std::string V_DEBUG;
+extern const std::string V_INFO;
+extern const std::string V_NOTICE;
+extern const std::string V_WARN;
+extern const std::string V_ERROR;
/**
* FTP related preferences
*/
-#define PREF_FTP_USER "ftp-user"
-#define PREF_FTP_PASSWD "ftp-passwd"
+extern const std::string PREF_FTP_USER;
+extern const std::string PREF_FTP_PASSWD;
// values: binary | ascii
-#define PREF_FTP_TYPE "ftp-type"
-# define V_BINARY "binary"
-# define V_ASCII "ascii"
+extern const std::string PREF_FTP_TYPE;
+extern const std::string V_BINARY;
+extern const std::string V_ASCII;
// values: get | tunnel
-#define PREF_FTP_VIA_HTTP_PROXY "ftp-via-http-proxy"
-# define V_GET "get"
-# define V_TUNNEL "tunnel"
+extern const std::string PREF_FTP_VIA_HTTP_PROXY;
+extern const std::string V_GET;
+extern const std::string V_TUNNEL;
// values: true | false
-#define PREF_FTP_PASV "ftp-pasv"
+extern const std::string PREF_FTP_PASV;
// values: true | false
-#define PREF_FTP_REUSE_CONNECTION "ftp-reuse-connection"
+extern const std::string PREF_FTP_REUSE_CONNECTION;
/**
* HTTP related preferences
*/
-#define PREF_HTTP_USER "http-user"
-#define PREF_HTTP_PASSWD "http-passwd"
+extern const std::string PREF_HTTP_USER;
+extern const std::string PREF_HTTP_PASSWD;
// values: basic
-#define PREF_HTTP_AUTH_SCHEME "http-auth-scheme"
-# define V_BASIC "basic"
+extern const std::string PREF_HTTP_AUTH_SCHEME;
+extern const std::string V_BASIC;
// values: true | false
-#define PREF_HTTP_AUTH_ENABLED "http-auth-enabled"
+extern const std::string PREF_HTTP_AUTH_ENABLED;
// values: string
-#define PREF_USER_AGENT "user-agent"
+extern const std::string PREF_USER_AGENT;
// value: string that your file system recognizes as a file name.
-#define PREF_LOAD_COOKIES "load-cookies"
+extern const std::string PREF_LOAD_COOKIES;
// values: true | false
-#define PREF_ENABLE_HTTP_KEEP_ALIVE "enable-http-keep-alive"
+extern const std::string PREF_ENABLE_HTTP_KEEP_ALIVE;
// values: true | false
-#define PREF_ENABLE_HTTP_PIPELINING "enable-http-pipelining"
+extern const std::string PREF_ENABLE_HTTP_PIPELINING;
// value: 1*digit
-#define PREF_MAX_HTTP_PIPELINING "max-http-pipelining"
+extern const std::string PREF_MAX_HTTP_PIPELINING;
// value: string
-#define PREF_HEADER "header"
+extern const std::string PREF_HEADER;
-/**
+/**;
* HTTP proxy related preferences
*/
-#define PREF_HTTP_PROXY "http-proxy"
-#define PREF_HTTP_PROXY_USER "http-proxy-user"
-#define PREF_HTTP_PROXY_PASSWD "http-proxy-passwd"
-#define PREF_HTTP_PROXY_HOST "http-proxy-host"
-#define PREF_HTTP_PROXY_PORT "http-proxy-port"
+extern const std::string PREF_HTTP_PROXY;
+extern const std::string PREF_HTTP_PROXY_USER;
+extern const std::string PREF_HTTP_PROXY_PASSWD;
+extern const std::string PREF_HTTP_PROXY_HOST;
+extern const std::string PREF_HTTP_PROXY_PORT;
// values: get | tunnel
-#define PREF_HTTP_PROXY_METHOD "http-proxy-method"
+extern const std::string PREF_HTTP_PROXY_METHOD;
// values: true | false
-#define PREF_HTTP_PROXY_ENABLED "http-proxy-enabled"
+extern const std::string PREF_HTTP_PROXY_ENABLED;
// values: true | false
-#define PREF_HTTP_PROXY_AUTH_ENABLED "http-proxy-auth-enabled"
+extern const std::string PREF_HTTP_PROXY_AUTH_ENABLED;
/**
* BitTorrent related preferences
*/
// values: 1*digit
-#define PREF_PEER_CONNECTION_TIMEOUT "peer-connection-timeout"
+extern const std::string PREF_PEER_CONNECTION_TIMEOUT;
// values: 1*digit
-#define PREF_BT_TIMEOUT "bt-timeout"
+extern const std::string PREF_BT_TIMEOUT;
// values: 1*digit
-#define PREF_BT_REQUEST_TIMEOUT "bt-request-timeout"
+extern const std::string PREF_BT_REQUEST_TIMEOUT;
// values: true | false
-#define PREF_SHOW_FILES "show-files"
+extern const std::string PREF_SHOW_FILES;
// values: true | false
-#define PREF_NO_PREALLOCATION "no-preallocation"
+extern const std::string PREF_NO_PREALLOCATION;
// values: true | false
-#define PREF_DIRECT_FILE_MAPPING "direct-file-mapping"
+extern const std::string PREF_DIRECT_FILE_MAPPING;
// values: 1*digit
-#define PREF_MAX_UPLOAD_LIMIT "max-upload-limit"
+extern const std::string PREF_MAX_UPLOAD_LIMIT;
// values: a string that your file system recognizes as a file name.
-#define PREF_TORRENT_FILE "torrent-file"
+extern const std::string PREF_TORRENT_FILE;
// values: 1*digit
-#define PREF_LISTEN_PORT "listen-port"
+extern const std::string PREF_LISTEN_PORT;
// values: true | false | mem
-#define PREF_FOLLOW_TORRENT "follow-torrent"
+extern const std::string PREF_FOLLOW_TORRENT;
// values: 1*digit *( (,|-) 1*digit)
-#define PREF_SELECT_FILE "select-file"
+extern const std::string PREF_SELECT_FILE;
// values: 1*digit
-#define PREF_SEED_TIME "seed-time"
+extern const std::string PREF_SEED_TIME;
// values: 1*digit ['.' [ 1*digit ] ]
-#define PREF_SEED_RATIO "seed-ratio"
+extern const std::string PREF_SEED_RATIO;
// values: 1*digit
-#define PREF_TRACKER_MAX_TRIES "tracker-max-tries"
+extern const std::string PREF_TRACKER_MAX_TRIES;
// values: 1*digit
-#define PREF_BT_KEEP_ALIVE_INTERVAL "bt-keep-alive-interval"
+extern const std::string PREF_BT_KEEP_ALIVE_INTERVAL;
// values: a string, less than or equals to 20 bytes length
-#define PREF_PEER_ID_PREFIX "peer-id-prefix"
+extern const std::string PREF_PEER_ID_PREFIX;
// values: true | false
-#define PREF_ENABLE_PEER_EXCHANGE "enable-peer-exchange"
+extern const std::string PREF_ENABLE_PEER_EXCHANGE;
// values: true | false
-#define PREF_ENABLE_DHT "enable-dht"
+extern const std::string PREF_ENABLE_DHT;
// values: 1*digit
-#define PREF_DHT_LISTEN_PORT "dht-listen-port"
+extern const std::string PREF_DHT_LISTEN_PORT;
// values: a string
-#define PREF_DHT_ENTRY_POINT_HOST "dht-entry-point-host"
+extern const std::string PREF_DHT_ENTRY_POINT_HOST;
// values: 1*digit
-#define PREF_DHT_ENTRY_POINT_PORT "dht-entry-point-port"
+extern const std::string PREF_DHT_ENTRY_POINT_PORT;
// values: a string (hostname:port)
-#define PREF_DHT_ENTRY_POINT "dht-entry-point"
+extern const std::string PREF_DHT_ENTRY_POINT;
// values: a string
-#define PREF_DHT_FILE_PATH "dht-file-path"
+extern const std::string PREF_DHT_FILE_PATH;
// values: plain | arc4
-#define PREF_BT_MIN_CRYPTO_LEVEL "bt-min-crypto-level"
-# define V_PLAIN "plain"
-# define V_ARC4 "arc4"
+extern const std::string PREF_BT_MIN_CRYPTO_LEVEL;
+extern const std::string V_PLAIN;
+extern const std::string V_ARC4;
// values:: true | false
-#define PREF_BT_REQUIRE_CRYPTO "bt-require-crypto"
+extern const std::string PREF_BT_REQUIRE_CRYPTO;
/**
* Metalink related preferences
*/
// values: a string that your file system recognizes as a file name.
-#define PREF_METALINK_FILE "metalink-file"
+extern const std::string PREF_METALINK_FILE;
// values: a string
-#define PREF_METALINK_VERSION "metalink-version"
+extern const std::string PREF_METALINK_VERSION;
// values: a string
-#define PREF_METALINK_LANGUAGE "metalink-language"
+extern const std::string PREF_METALINK_LANGUAGE;
// values: a string
-#define PREF_METALINK_OS "metalink-os"
+extern const std::string PREF_METALINK_OS;
// values: a string
-#define PREF_METALINK_LOCATION "metalink-location"
+extern const std::string PREF_METALINK_LOCATION;
// values: 1*digit
-#define PREF_METALINK_SERVERS "metalink-servers"
+extern const std::string PREF_METALINK_SERVERS;
// values: true | false | mem
-#define PREF_FOLLOW_METALINK "follow-metalink"
+extern const std::string PREF_FOLLOW_METALINK;
// values: http | https | ftp | none
-#define PREF_METALINK_PREFERRED_PROTOCOL "metalink-preferred-protocol"
-# define V_HTTP "http"
-# define V_HTTPS "https"
-# define V_FTP "ftp"
+extern const std::string PREF_METALINK_PREFERRED_PROTOCOL;
+extern const std::string V_HTTP;
+extern const std::string V_HTTPS;
+extern const std::string V_FTP;
// values: true | false
-#define PREF_METALINK_ENABLE_UNIQUE_PROTOCOL "metalink-enable-unique-protocol"
+extern const std::string PREF_METALINK_ENABLE_UNIQUE_PROTOCOL;
+
+} // namespace aria2
#endif // _D_PREFS_H_