diff --git a/examples/libaria2ex.cc b/examples/libaria2ex.cc index 7a55657c..9f0fe83d 100644 --- a/examples/libaria2ex.cc +++ b/examples/libaria2ex.cc @@ -54,8 +54,7 @@ int main() // Download files are stored in the current directory aria2::KeyVals options = { std::make_pair("dir", ".") }; // Add URI - aria2::A2Gid gid; - aria2::addUri(session, gid, uris, options); + aria2::addUri(session, 0, uris, options); auto start = std::chrono::steady_clock::now(); for(;;) { int rv = aria2::run(session, aria2::RUN_ONCE); diff --git a/examples/libaria2wx.cc b/examples/libaria2wx.cc index 9e905a9c..f40f1a4d 100644 --- a/examples/libaria2wx.cc +++ b/examples/libaria2wx.cc @@ -113,9 +113,8 @@ struct AddUriJob : public Job { {} virtual void execute(aria2::Session* session) { - aria2::A2Gid gid; // TODO check return value - aria2::addUri(session, gid, uris, options); + aria2::addUri(session, 0, uris, options); } std::vector uris; aria2::KeyVals options; diff --git a/src/aria2api.cc b/src/aria2api.cc index 7c61d3be..a23e0fea 100644 --- a/src/aria2api.cc +++ b/src/aria2api.cc @@ -226,7 +226,7 @@ void addRequestGroup(const SharedHandle& group, } // namespace int addUri(Session* session, - A2Gid& gid, + A2Gid* gid, const std::vector& uris, const KeyVals& options, int position) @@ -246,14 +246,16 @@ int addUri(Session* session, /* ignoreForceSeq = */ true, /* ignoreLocalPath = */ true); if(!result.empty()) { - gid = result.front()->getGID(); addRequestGroup(result.front(), e, position); + if(gid) { + *gid = result.front()->getGID(); + } } return 0; } int addMetalink(Session* session, - std::vector& gids, + std::vector* gids, const std::string& metalinkFile, const KeyVals& options, int position) @@ -278,9 +280,11 @@ int addMetalink(Session* session, } else { e->getRequestGroupMan()->addReservedGroup(result); } - for(std::vector >::const_iterator i = - result.begin(), eoi = result.end(); i != eoi; ++i) { - gids.push_back((*i)->getGID()); + if(gids) { + for(std::vector >::const_iterator i = + result.begin(), eoi = result.end(); i != eoi; ++i) { + (*gids).push_back((*i)->getGID()); + } } } return 0; diff --git a/src/includes/aria2/aria2.h b/src/includes/aria2/aria2.h index 9e025866..2aef3d83 100644 --- a/src/includes/aria2/aria2.h +++ b/src/includes/aria2/aria2.h @@ -138,33 +138,33 @@ A2Gid hexToGid(const std::string& hex); bool isNull(const A2Gid& gid); // Adds new HTTP(S)/FTP/BitTorrent Magnet URI. On successful return, -// the |gid| includes the GID of newly added download. The |uris| -// includes URI to be downloaded. For BitTorrent Magnet URI, the -// |uris| must have only one element and it should be BitTorrent -// Magnet URI. URIs in uris must point to the same file. If you mix -// other URIs which point to another file, aria2 does not complain but -// download may fail. The |options| is a pair of option name and -// value. If the |position| is not negative integer, the new download -// is inserted at position in the waiting queue. If the |position| is -// negative or the |position| is larger than the size of the queue, it -// is appended at the end of the queue. This function returns 0 if it -// succeeds, or -1. +// if the |gid| is not NULL, the GID of added download will be +// assigned to the |*gid|. The |uris| includes URI to be downloaded. +// For BitTorrent Magnet URI, the |uris| must have only one element +// and it should be BitTorrent Magnet URI. URIs in uris must point to +// the same file. If you mix other URIs which point to another file, +// aria2 does not complain but download may fail. The |options| is a +// pair of option name and value. If the |position| is not negative +// integer, the new download is inserted at position in the waiting +// queue. If the |position| is negative or the |position| is larger +// than the size of the queue, it is appended at the end of the queue. +// This function returns 0 if it succeeds, or -1. int addUri(Session* session, - A2Gid& gid, + A2Gid* gid, const std::vector& uris, const KeyVals& options, int position = -1); // Adds Metalink download. The path to Metalink file is specified by -// the |metalinkFile|. On successful return, the GID of added -// download is appended to the |gids|. The |options| is a pair of -// option name and value. If the |position| is not negative integer, -// the new download is inserted at position in the waiting queue. If -// the |position| is negative or the |position| is larger than the -// size of the queue, it is appended at the end of the queue. This -// function returns 0 if it succeeds, or -1. +// the |metalinkFile|. On successful return, if the |gids| is not +// NULL, the GIDs of added downloads are appended to the |*gids|. The +// |options| is a pair of option name and value. If the |position| is +// not negative integer, the new download is inserted at position in +// the waiting queue. If the |position| is negative or the |position| +// is larger than the size of the queue, it is appended at the end of +// the queue. This function returns 0 if it succeeds, or -1. int addMetalink(Session* session, - std::vector& gids, + std::vector* gids, const std::string& metalinkFile, const KeyVals& options, int position = -1);