mirror of https://github.com/aria2/aria2
2008-02-11 Tatsuhiro Tsujikawa <tujikawa at rednoah dot com>
Added the ability to stop aria2 itself when given time has passed from start. Use --stop option to specify time in minutes. When 0 is given, this feature is disabled. * src/OptionHandlerFactory.cc * src/TimeBasedCommand.h: Make _interval protected scope. * src/HelpItemFactory.cc * src/option_processing.cc * src/prefs.h * src/FillRequestGroupCommand.cc: Evaluate _e->isHaltRequested() before calling RequestGroupMan::fillRequestGroupFromReserver(). Without this modification, the result list shows "ERR" when aria2 is stopped by --stop option. It should be "INPR". * src/DownloadEngine.{h, cc} * src/DownloadEngineFactory.cc * src/usage_text.h * src/TimedHaltCommand.{h, cc}: New class.pull/1/head
parent
5d6f1c046a
commit
9c277148b9
19
ChangeLog
19
ChangeLog
|
@ -1,3 +1,22 @@
|
||||||
|
2008-02-11 Tatsuhiro Tsujikawa <tujikawa at rednoah dot com>
|
||||||
|
|
||||||
|
Added the ability to stop aria2 itself when given time has passed
|
||||||
|
from start. Use --stop option to specify time in minutes.
|
||||||
|
When 0 is given, this feature is disabled.
|
||||||
|
* src/OptionHandlerFactory.cc
|
||||||
|
* src/TimeBasedCommand.h: Make _interval protected scope.
|
||||||
|
* src/HelpItemFactory.cc
|
||||||
|
* src/option_processing.cc
|
||||||
|
* src/prefs.h
|
||||||
|
* src/FillRequestGroupCommand.cc: Evaluate _e->isHaltRequested()
|
||||||
|
before calling RequestGroupMan::fillRequestGroupFromReserver().
|
||||||
|
Without this modification, the result list shows "ERR" when aria2 is
|
||||||
|
stopped by --stop option. It should be "INPR".
|
||||||
|
* src/DownloadEngine.{h, cc}
|
||||||
|
* src/DownloadEngineFactory.cc
|
||||||
|
* src/usage_text.h
|
||||||
|
* src/TimedHaltCommand.{h, cc}: New class.
|
||||||
|
|
||||||
2008-02-11 Tatsuhiro Tsujikawa <tujikawa at rednoah dot com>
|
2008-02-11 Tatsuhiro Tsujikawa <tujikawa at rednoah dot com>
|
||||||
|
|
||||||
Bootstrap through node added by port message.
|
Bootstrap through node added by port message.
|
||||||
|
|
|
@ -293,8 +293,7 @@ void DownloadEngine::afterEachIteration()
|
||||||
{
|
{
|
||||||
if(globalHaltRequested == 1) {
|
if(globalHaltRequested == 1) {
|
||||||
logger->notice(_("Shutdown sequence commencing... Press Ctrl-C again for emergency shutdown."));
|
logger->notice(_("Shutdown sequence commencing... Press Ctrl-C again for emergency shutdown."));
|
||||||
_haltRequested = true;
|
requestHalt();
|
||||||
_requestGroupMan->halt();
|
|
||||||
globalHaltRequested = 2;
|
globalHaltRequested = 2;
|
||||||
} else if(globalHaltRequested == 3) {
|
} else if(globalHaltRequested == 3) {
|
||||||
logger->notice(_("Emergency shutdown sequence commencing..."));
|
logger->notice(_("Emergency shutdown sequence commencing..."));
|
||||||
|
@ -303,6 +302,12 @@ void DownloadEngine::afterEachIteration()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void DownloadEngine::requestHalt()
|
||||||
|
{
|
||||||
|
_haltRequested = true;
|
||||||
|
_requestGroupMan->halt();
|
||||||
|
}
|
||||||
|
|
||||||
void DownloadEngine::fillCommand()
|
void DownloadEngine::fillCommand()
|
||||||
{
|
{
|
||||||
addCommand(_requestGroupMan->getInitialCommands(this));
|
addCommand(_requestGroupMan->getInitialCommands(this));
|
||||||
|
|
|
@ -161,6 +161,8 @@ public:
|
||||||
{
|
{
|
||||||
return _haltRequested;
|
return _haltRequested;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void requestHalt();
|
||||||
};
|
};
|
||||||
|
|
||||||
typedef SharedHandle<DownloadEngine> DownloadEngineHandle;
|
typedef SharedHandle<DownloadEngine> DownloadEngineHandle;
|
||||||
|
|
|
@ -49,6 +49,7 @@
|
||||||
#include "FileAllocationDispatcherCommand.h"
|
#include "FileAllocationDispatcherCommand.h"
|
||||||
#include "AutoSaveCommand.h"
|
#include "AutoSaveCommand.h"
|
||||||
#include "HaveEraseCommand.h"
|
#include "HaveEraseCommand.h"
|
||||||
|
#include "TimedHaltCommand.h"
|
||||||
#include "DownloadResult.h"
|
#include "DownloadResult.h"
|
||||||
#include <algorithm>
|
#include <algorithm>
|
||||||
|
|
||||||
|
@ -86,7 +87,12 @@ DownloadEngineFactory::newDownloadEngine(Option* op,
|
||||||
e->commands.push_back(new FileAllocationDispatcherCommand(CUIDCounterSingletonHolder::instance()->newID(), e.get()));
|
e->commands.push_back(new FileAllocationDispatcherCommand(CUIDCounterSingletonHolder::instance()->newID(), e.get()));
|
||||||
e->commands.push_back(new AutoSaveCommand(CUIDCounterSingletonHolder::instance()->newID(), e.get(), op->getAsInt(PREF_AUTO_SAVE_INTERVAL)));
|
e->commands.push_back(new AutoSaveCommand(CUIDCounterSingletonHolder::instance()->newID(), e.get(), op->getAsInt(PREF_AUTO_SAVE_INTERVAL)));
|
||||||
e->commands.push_back(new HaveEraseCommand(CUIDCounterSingletonHolder::instance()->newID(), e.get(), 10));
|
e->commands.push_back(new HaveEraseCommand(CUIDCounterSingletonHolder::instance()->newID(), e.get(), 10));
|
||||||
|
{
|
||||||
|
int32_t stopMin = op->getAsInt(PREF_STOP);
|
||||||
|
if(stopMin > 0) {
|
||||||
|
e->commands.push_back(new TimedHaltCommand(CUIDCounterSingletonHolder::instance()->newID(), e.get(), stopMin*60));
|
||||||
|
}
|
||||||
|
}
|
||||||
return e;
|
return e;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -56,13 +56,16 @@ FillRequestGroupCommand::~FillRequestGroupCommand() {}
|
||||||
|
|
||||||
bool FillRequestGroupCommand::execute()
|
bool FillRequestGroupCommand::execute()
|
||||||
{
|
{
|
||||||
|
if(_e->isHaltRequested()) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
try {
|
try {
|
||||||
_e->_requestGroupMan->fillRequestGroupFromReserver(_e);
|
_e->_requestGroupMan->fillRequestGroupFromReserver(_e);
|
||||||
} catch(RecoverableException* ex) {
|
} catch(RecoverableException* ex) {
|
||||||
logger->error(EX_EXCEPTION_CAUGHT, ex);
|
logger->error(EX_EXCEPTION_CAUGHT, ex);
|
||||||
delete ex;
|
delete ex;
|
||||||
}
|
}
|
||||||
if(_e->_requestGroupMan->downloadFinished() || _e->isHaltRequested()) {
|
if(_e->_requestGroupMan->downloadFinished()) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
_e->commands.push_back(this);
|
_e->commands.push_back(this);
|
||||||
|
|
|
@ -415,6 +415,11 @@ TagContainerHandle HelpItemFactory::createHelpItems()
|
||||||
item->addTag(TAG_ADVANCED);
|
item->addTag(TAG_ADVANCED);
|
||||||
tc->addItem(item);
|
tc->addItem(item);
|
||||||
}
|
}
|
||||||
|
{
|
||||||
|
HelpItemHandle item = new HelpItem(PREF_STOP, TEXT_STOP, "0");
|
||||||
|
item->addTag(TAG_ADVANCED);
|
||||||
|
tc->addItem(item);
|
||||||
|
}
|
||||||
{
|
{
|
||||||
HelpItemHandle item = new HelpItem("help", TEXT_HELP, TAG_BASIC);
|
HelpItemHandle item = new HelpItem("help", TEXT_HELP, TAG_BASIC);
|
||||||
char buf[64];
|
char buf[64];
|
||||||
|
|
|
@ -155,7 +155,8 @@ SRCS = Socket.h\
|
||||||
TaggedItem.cc\
|
TaggedItem.cc\
|
||||||
TagContainer.cc\
|
TagContainer.cc\
|
||||||
HelpItemFactory.cc\
|
HelpItemFactory.cc\
|
||||||
SingleFileDownloadContext.cc
|
SingleFileDownloadContext.cc\
|
||||||
|
TimedHaltCommand.cc
|
||||||
# debug_new.cpp
|
# debug_new.cpp
|
||||||
|
|
||||||
if ENABLE_MESSAGE_DIGEST
|
if ENABLE_MESSAGE_DIGEST
|
||||||
|
|
|
@ -356,7 +356,7 @@ am__libaria2c_a_SOURCES_DIST = Socket.h SocketCore.cc SocketCore.h \
|
||||||
ByteArrayDiskWriter.h ByteArrayDiskWriterFactory.cc \
|
ByteArrayDiskWriter.h ByteArrayDiskWriterFactory.cc \
|
||||||
ServerHost.cc HelpItem.cc TaggedItem.cc TagContainer.cc \
|
ServerHost.cc HelpItem.cc TaggedItem.cc TagContainer.cc \
|
||||||
HelpItemFactory.cc SingleFileDownloadContext.cc \
|
HelpItemFactory.cc SingleFileDownloadContext.cc \
|
||||||
IteratableChunkChecksumValidator.cc \
|
TimedHaltCommand.cc IteratableChunkChecksumValidator.cc \
|
||||||
IteratableChunkChecksumValidator.h \
|
IteratableChunkChecksumValidator.h \
|
||||||
IteratableChecksumValidator.cc IteratableChecksumValidator.h \
|
IteratableChecksumValidator.cc IteratableChecksumValidator.h \
|
||||||
CheckIntegrityCommand.cc CheckIntegrityCommand.h \
|
CheckIntegrityCommand.cc CheckIntegrityCommand.h \
|
||||||
|
@ -676,11 +676,11 @@ am__objects_14 = SocketCore.$(OBJEXT) Command.$(OBJEXT) \
|
||||||
ByteArrayDiskWriterFactory.$(OBJEXT) ServerHost.$(OBJEXT) \
|
ByteArrayDiskWriterFactory.$(OBJEXT) ServerHost.$(OBJEXT) \
|
||||||
HelpItem.$(OBJEXT) TaggedItem.$(OBJEXT) TagContainer.$(OBJEXT) \
|
HelpItem.$(OBJEXT) TaggedItem.$(OBJEXT) TagContainer.$(OBJEXT) \
|
||||||
HelpItemFactory.$(OBJEXT) SingleFileDownloadContext.$(OBJEXT) \
|
HelpItemFactory.$(OBJEXT) SingleFileDownloadContext.$(OBJEXT) \
|
||||||
$(am__objects_1) $(am__objects_2) $(am__objects_3) \
|
TimedHaltCommand.$(OBJEXT) $(am__objects_1) $(am__objects_2) \
|
||||||
$(am__objects_4) $(am__objects_5) $(am__objects_6) \
|
$(am__objects_3) $(am__objects_4) $(am__objects_5) \
|
||||||
$(am__objects_7) $(am__objects_8) $(am__objects_9) \
|
$(am__objects_6) $(am__objects_7) $(am__objects_8) \
|
||||||
$(am__objects_10) $(am__objects_11) $(am__objects_12) \
|
$(am__objects_9) $(am__objects_10) $(am__objects_11) \
|
||||||
$(am__objects_13)
|
$(am__objects_12) $(am__objects_13)
|
||||||
am_libaria2c_a_OBJECTS = $(am__objects_14)
|
am_libaria2c_a_OBJECTS = $(am__objects_14)
|
||||||
libaria2c_a_OBJECTS = $(am_libaria2c_a_OBJECTS)
|
libaria2c_a_OBJECTS = $(am_libaria2c_a_OBJECTS)
|
||||||
am__installdirs = "$(DESTDIR)$(bindir)"
|
am__installdirs = "$(DESTDIR)$(bindir)"
|
||||||
|
@ -1003,11 +1003,11 @@ SRCS = Socket.h SocketCore.cc SocketCore.h Command.cc Command.h \
|
||||||
ByteArrayDiskWriter.h ByteArrayDiskWriterFactory.cc \
|
ByteArrayDiskWriter.h ByteArrayDiskWriterFactory.cc \
|
||||||
ServerHost.cc HelpItem.cc TaggedItem.cc TagContainer.cc \
|
ServerHost.cc HelpItem.cc TaggedItem.cc TagContainer.cc \
|
||||||
HelpItemFactory.cc SingleFileDownloadContext.cc \
|
HelpItemFactory.cc SingleFileDownloadContext.cc \
|
||||||
$(am__append_1) $(am__append_2) $(am__append_3) \
|
TimedHaltCommand.cc $(am__append_1) $(am__append_2) \
|
||||||
$(am__append_4) $(am__append_5) $(am__append_6) \
|
$(am__append_3) $(am__append_4) $(am__append_5) \
|
||||||
$(am__append_7) $(am__append_8) $(am__append_9) \
|
$(am__append_6) $(am__append_7) $(am__append_8) \
|
||||||
$(am__append_10) $(am__append_11) $(am__append_12) \
|
$(am__append_9) $(am__append_10) $(am__append_11) \
|
||||||
$(am__append_13)
|
$(am__append_12) $(am__append_13)
|
||||||
noinst_LIBRARIES = libaria2c.a
|
noinst_LIBRARIES = libaria2c.a
|
||||||
libaria2c_a_SOURCES = $(SRCS)
|
libaria2c_a_SOURCES = $(SRCS)
|
||||||
aria2c_LDADD = libaria2c.a @LIBINTL@ @ALLOCA@ @LIBGNUTLS_LIBS@\
|
aria2c_LDADD = libaria2c.a @LIBINTL@ @ALLOCA@ @LIBGNUTLS_LIBS@\
|
||||||
|
@ -1341,6 +1341,7 @@ distclean-compile:
|
||||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/TaggedItem.Po@am__quote@
|
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/TaggedItem.Po@am__quote@
|
||||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/TimeA2.Po@am__quote@
|
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/TimeA2.Po@am__quote@
|
||||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/TimeBasedCommand.Po@am__quote@
|
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/TimeBasedCommand.Po@am__quote@
|
||||||
|
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/TimedHaltCommand.Po@am__quote@
|
||||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/TrackerWatcherCommand.Po@am__quote@
|
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/TrackerWatcherCommand.Po@am__quote@
|
||||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/TransferStat.Po@am__quote@
|
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/TransferStat.Po@am__quote@
|
||||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/URLMetalinkParserState.Po@am__quote@
|
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/URLMetalinkParserState.Po@am__quote@
|
||||||
|
|
|
@ -118,6 +118,7 @@ OptionHandlers OptionHandlerFactory::createOptionHandlers()
|
||||||
handlers.push_back(new HostPortOptionHandler(PREF_DHT_ENTRY_POINT,
|
handlers.push_back(new HostPortOptionHandler(PREF_DHT_ENTRY_POINT,
|
||||||
PREF_DHT_ENTRY_POINT_HOST,
|
PREF_DHT_ENTRY_POINT_HOST,
|
||||||
PREF_DHT_ENTRY_POINT_PORT));
|
PREF_DHT_ENTRY_POINT_PORT));
|
||||||
|
handlers.push_back(new NumberOptionHandler(PREF_STOP, 0, 35000000));
|
||||||
|
|
||||||
return handlers;
|
return handlers;
|
||||||
}
|
}
|
||||||
|
|
|
@ -55,8 +55,9 @@ protected:
|
||||||
* true.
|
* true.
|
||||||
*/
|
*/
|
||||||
bool _exit;
|
bool _exit;
|
||||||
private:
|
|
||||||
int32_t _interval; // unit: sec
|
int32_t _interval; // unit: sec
|
||||||
|
private:
|
||||||
Time _checkPoint;
|
Time _checkPoint;
|
||||||
public:
|
public:
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -0,0 +1,63 @@
|
||||||
|
/* <!-- 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 "TimedHaltCommand.h"
|
||||||
|
#include "DownloadEngine.h"
|
||||||
|
#include "RequestGroupMan.h"
|
||||||
|
#include "Logger.h"
|
||||||
|
|
||||||
|
namespace aria2 {
|
||||||
|
|
||||||
|
TimedHaltCommand::TimedHaltCommand(int32_t cuid, DownloadEngine* e,
|
||||||
|
int32_t secondsToHalt):
|
||||||
|
TimeBasedCommand(cuid, e, secondsToHalt) {}
|
||||||
|
|
||||||
|
TimedHaltCommand::~TimedHaltCommand() {}
|
||||||
|
|
||||||
|
void TimedHaltCommand::preProcess()
|
||||||
|
{
|
||||||
|
if(_e->_requestGroupMan->downloadFinished() || _e->isHaltRequested()) {
|
||||||
|
_exit = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void TimedHaltCommand::process()
|
||||||
|
{
|
||||||
|
if(!_e->isHaltRequested()) {
|
||||||
|
logger->notice("%d minutes passed. Stopping application.", _interval/60);
|
||||||
|
_e->requestHalt();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
} // namespace aria2
|
|
@ -0,0 +1,55 @@
|
||||||
|
/* <!-- 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 --> */
|
||||||
|
#ifndef _D_TIMED_HALT_COMMAND_H_
|
||||||
|
#define _D_TIMED_HALT_COMMAND_H_
|
||||||
|
|
||||||
|
#include "TimeBasedCommand.h"
|
||||||
|
|
||||||
|
namespace aria2 {
|
||||||
|
|
||||||
|
class TimedHaltCommand:public TimeBasedCommand {
|
||||||
|
public:
|
||||||
|
TimedHaltCommand(int32_t cuid, DownloadEngine* e, int32_t secondsToHalt);
|
||||||
|
|
||||||
|
virtual ~TimedHaltCommand();
|
||||||
|
|
||||||
|
virtual void preProcess();
|
||||||
|
|
||||||
|
virtual void process();
|
||||||
|
};
|
||||||
|
|
||||||
|
} // namespace aria2
|
||||||
|
|
||||||
|
#endif // _D_TIMED_HALT_COMMAND_H_
|
|
@ -200,6 +200,7 @@ Option* option_processing(int argc, char* const argv[])
|
||||||
{ PREF_ALLOW_PIECE_LENGTH_CHANGE, required_argument, &lopt, 211 },
|
{ PREF_ALLOW_PIECE_LENGTH_CHANGE, required_argument, &lopt, 211 },
|
||||||
{ PREF_NO_CONF, no_argument, &lopt, 212 },
|
{ PREF_NO_CONF, no_argument, &lopt, 212 },
|
||||||
{ PREF_CONF_PATH, required_argument, &lopt, 213 },
|
{ PREF_CONF_PATH, required_argument, &lopt, 213 },
|
||||||
|
{ PREF_STOP, required_argument, &lopt, 214 },
|
||||||
#if defined ENABLE_BITTORRENT || ENABLE_METALINK
|
#if defined ENABLE_BITTORRENT || ENABLE_METALINK
|
||||||
{ "show-files", no_argument, NULL, 'S' },
|
{ "show-files", no_argument, NULL, 'S' },
|
||||||
{ "select-file", required_argument, &lopt, 21 },
|
{ "select-file", required_argument, &lopt, 21 },
|
||||||
|
@ -387,6 +388,9 @@ Option* option_processing(int argc, char* const argv[])
|
||||||
case 213:
|
case 213:
|
||||||
ucfname = optarg;
|
ucfname = optarg;
|
||||||
break;
|
break;
|
||||||
|
case 214:
|
||||||
|
cmdstream << PREF_STOP << "=" << optarg << "\n";
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
|
@ -124,6 +124,8 @@
|
||||||
#define PREF_NO_CONF "no-conf"
|
#define PREF_NO_CONF "no-conf"
|
||||||
// value: string
|
// value: string
|
||||||
#define PREF_CONF_PATH "conf-path"
|
#define PREF_CONF_PATH "conf-path"
|
||||||
|
// value: 1*digit
|
||||||
|
#define PREF_STOP "stop"
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* FTP related preferences
|
* FTP related preferences
|
||||||
|
|
|
@ -317,3 +317,6 @@ _(" -h, --help[=CATEGORY] Print usage and exit.\n"\
|
||||||
_(" --no-conf Disable loading aria2.conf file.")
|
_(" --no-conf Disable loading aria2.conf file.")
|
||||||
#define TEXT_CONF_PATH \
|
#define TEXT_CONF_PATH \
|
||||||
_(" --conf-path=PATH Change the configuration file path to PATH.")
|
_(" --conf-path=PATH Change the configuration file path to PATH.")
|
||||||
|
#define TEXT_STOP \
|
||||||
|
_(" --stop=MINUTES Stop application after MINUTES minutes has passed.\n" \
|
||||||
|
" If 0 is given, this feature is disabled.")
|
||||||
|
|
Loading…
Reference in New Issue