SOURCES: qbittorrent-libtorrent14.patch (NEW) - use libtorrent-rasterbar-0....

sls sls at pld-linux.org
Tue Nov 11 01:25:32 CET 2008


Author: sls                          Date: Tue Nov 11 00:25:32 2008 GMT
Module: SOURCES                       Tag: HEAD
---- Log message:
- use libtorrent-rasterbar-0.14 (changset 2070, exprimental)

---- Files affected:
SOURCES:
   qbittorrent-libtorrent14.patch (NONE -> 1.1)  (NEW)

---- Diffs:

================================================================
Index: SOURCES/qbittorrent-libtorrent14.patch
diff -u /dev/null SOURCES/qbittorrent-libtorrent14.patch:1.1
--- /dev/null	Tue Nov 11 01:25:33 2008
+++ SOURCES/qbittorrent-libtorrent14.patch	Tue Nov 11 01:25:27 2008
@@ -0,0 +1,1274 @@
+Index: src/qtorrenthandle.h
+===================================================================
+--- src/qtorrenthandle.h	(revision 2069)
++++ src/qtorrenthandle.h	(revision 2070)
+@@ -54,7 +54,7 @@
+     QString hash() const;
+     QString name() const;
+     float progress() const;
+-    const std::vector<bool>* pieces() const;
++    bitfield pieces() const;
+     void get_download_queue(std::vector<partial_piece_info>& queue) const;
+     QString current_tracker() const;
+     bool is_valid() const;
+@@ -76,7 +76,7 @@
+     int upload_limit() const;
+     int num_files() const;
+     bool has_metadata() const;
+-    entry write_resume_data() const;
++    void save_resume_data() const;
+     QString file_at(unsigned int index) const;
+     size_type filesize_at(unsigned int index) const;
+     std::vector<announce_entry> const& trackers() const;
+@@ -84,7 +84,7 @@
+     QString creator() const;
+     QString comment() const;
+     size_type total_failed_bytes() const;
+-    void file_progress(std::vector<float>& fp);
++    void file_progress(std::vector<size_type>& fp);
+     size_type total_payload_download();
+     size_type total_payload_upload();
+     QStringList files_path() const;
+@@ -107,7 +107,7 @@
+     void set_ratio(float ratio) const;
+     void replace_trackers(std::vector<announce_entry> const&) const;
+     void force_reannounce();
+-    void set_sequenced_download_threshold(int val);
++    void set_sequential_download(bool);
+     void set_tracker_login(QString username, QString password);
+ 
+     //
+Index: src/arborescence.h
+===================================================================
+--- src/arborescence.h	(revision 2069)
++++ src/arborescence.h	(revision 2070)
+@@ -172,27 +172,27 @@
+     torrent_file *root;
+ 
+   public:
+-    arborescence(torrent_info t) {
+-      torrent_info::file_iterator fi = t.begin_files();
+-      if(t.num_files() > 1) {
+-        root = new torrent_file(0, misc::toQString(t.name()), true);
++    arborescence(boost::intrusive_ptr<torrent_info> t) {
++      torrent_info::file_iterator fi = t->begin_files();
++      if(t->num_files() > 1) {
++        root = new torrent_file(0, misc::toQString(t->name()), true);
+       } else {
+         // XXX: Will crash if there is no file in torrent
+-        root = new torrent_file(0, misc::toQString(t.name()), false, fi->size, 0);
++        root = new torrent_file(0, misc::toQString(t->name()), false, fi->size, 0);
+         return;
+       }
+       int i = 0;
+-      while(fi != t.end_files()) {
++      while(fi != t->end_files()) {
+         QString path = QDir::cleanPath(misc::toQString(fi->path.string()));
+         addFile(path, fi->size, i);
+         fi++;
+         ++i;
+       }
+-      qDebug("real size: %ld, tree size: %ld", (long)t.total_size(), (long)root->getSize());
+-      Q_ASSERT(root->getSize() == t.total_size());
++      qDebug("real size: %ld, tree size: %ld", (long)t->total_size(), (long)root->getSize());
++      Q_ASSERT(root->getSize() == t->total_size());
+     }
+ 
+-    arborescence(torrent_info t, std::vector<float> fp, int *prioritiesTab) {
++    arborescence(torrent_info const& t, std::vector<size_type> fp, int *prioritiesTab) {
+       torrent_info::file_iterator fi = t.begin_files();
+       if(t.num_files() > 1) {
+         qDebug("More than one file in the torrent, setting a folder as root");
+@@ -200,13 +200,13 @@
+       } else {
+         // XXX: Will crash if there is no file in torrent
+         qDebug("one file in the torrent, setting it as root with index 0");
+-        root = new torrent_file(0, misc::toQString(t.name()), false, fi->size, 0, fp[0], prioritiesTab[0]);
++        root = new torrent_file(0, misc::toQString(t.name()), false, fi->size, 0, fp[0]/t.file_at(0).size, prioritiesTab[0]);
+         return;
+       }
+       int i = 0;
+       while(fi != t.end_files()) {
+         QString path = QDir::cleanPath(misc::toQString(fi->path.string()));
+-        addFile(path, fi->size, i, fp[i], prioritiesTab[i]);
++        addFile(path, fi->size, i, fp[i]/t.file_at(i).size, prioritiesTab[i]);
+         fi++;
+         ++i;
+       }
+Index: src/properties_imp.cpp
+===================================================================
+--- src/properties_imp.cpp	(revision 2069)
++++ src/properties_imp.cpp	(revision 2070)
+@@ -102,7 +102,7 @@
+     }
+   }
+   shareRatio->setText(QString(QByteArray::number(ratio, 'f', 1)));
+-  std::vector<float> fp;
++  std::vector<size_type> fp;
+   h.file_progress(fp);
+   int *prioritiesTab = loadPiecesPriorities();
+   // List files in torrent
+@@ -669,11 +669,11 @@
+       QFile incremental_file(misc::qBittorrentPath()+QString::fromUtf8("BT_backup")+QDir::separator()+hash+QString::fromUtf8(".incremental"));
+       incremental_file.open(QIODevice::WriteOnly | QIODevice::Text);
+       incremental_file.close();
+-      h.set_sequenced_download_threshold(1);
++      h.set_sequential_download(true);
+     }
+   }else{
+     QFile::remove(misc::qBittorrentPath()+"BT_backup"+QDir::separator()+hash+".incremental");
+-    h.set_sequenced_download_threshold(100); // Disabled
++    h.set_sequential_download(false);
+   }
+ }
+ 
+Index: src/eventmanager.cpp
+===================================================================
+--- src/eventmanager.cpp	(revision 2069)
++++ src/eventmanager.cpp	(revision 2070)
+@@ -66,12 +66,6 @@
+ 			case torrent_status::queued_for_checking:
+ 				event["state"] = QVariant("checking");
+ 				break;
+-			case torrent_status::connecting_to_tracker:
+-				if(h.download_payload_rate() > 0)
+-					event["state"] = QVariant("downloading");
+-				else
+-					event["state"] = QVariant("connecting");
+-				break;
+ 			case torrent_status::downloading:
+ 			case torrent_status::downloading_metadata:
+ 				if(h.download_payload_rate() > 0)
+@@ -113,12 +107,6 @@
+ 			case torrent_status::queued_for_checking:
+ 				event["state"] = QVariant("checking");
+ 				break;
+-			case torrent_status::connecting_to_tracker:
+-				if(h.download_payload_rate() > 0)
+-					event["state"] = QVariant("downloading");
+-				else
+-					event["state"] = QVariant("connecting");
+-				break;
+ 			case torrent_status::downloading:
+ 			case torrent_status::downloading_metadata:
+ 				if(h.download_payload_rate() > 0)
+Index: src/previewSelect.h
+===================================================================
+--- src/previewSelect.h	(revision 2069)
++++ src/previewSelect.h	(revision 2070)
+@@ -90,7 +90,7 @@
+       previewList->setItemDelegate(listDelegate);
+       previewList->header()->resizeSection(0, 200);
+       // Fill list in
+-      std::vector<float> fp;
++      std::vector<size_type> fp;
+       h.file_progress(fp);
+       unsigned int nbFiles = h.num_files();
+       for(unsigned int i=0; i<nbFiles; ++i){
+@@ -101,7 +101,7 @@
+           previewListModel->insertRow(row);
+           previewListModel->setData(previewListModel->index(row, NAME), QVariant(fileName));
+           previewListModel->setData(previewListModel->index(row, SIZE), QVariant((qlonglong)h.filesize_at(i)));
+-          previewListModel->setData(previewListModel->index(row, PROGRESS), QVariant((double)fp[i]));
++          previewListModel->setData(previewListModel->index(row, PROGRESS), QVariant((double)fp[i]/h.filesize_at(i)));
+           indexes << i;
+         }
+       }
+Index: src/Icons/skin/connecting.png
+===================================================================
+Cannot display: file marked as a binary type.
+svn:mime-type = application/octet-stream
+Index: src/webui/scripts/client.js
+===================================================================
+--- src/webui/scripts/client.js	(revision 2069)
++++ src/webui/scripts/client.js	(revision 2070)
+@@ -44,8 +44,6 @@
+           return '<img src="images/time.png"/>';
+       case 'downloading':
+           return '<img src="images/skin/downloading.png"/>';
+-      case 'connecting':
+-          return '<img src="images/skin/connecting.png"/>';
+       case 'stalled':
+           return '<img src="images/skin/stalled.png"/>';
+       case 'queued':
+Index: src/bittorrent.cpp
+===================================================================
+--- src/bittorrent.cpp	(revision 2069)
++++ src/bittorrent.cpp	(revision 2070)
+@@ -28,7 +28,6 @@
+ #include "bittorrent.h"
+ #include "misc.h"
+ #include "downloadThread.h"
+-#include "deleteThread.h"
+ #include "filterParserThread.h"
+ 
+ #include <libtorrent/extensions/metadata_transfer.hpp>
+@@ -55,7 +54,7 @@
+     s = new session(fingerprint("qB", VERSION_MAJOR, VERSION_MINOR, VERSION_BUGFIX, 0));
+   }
+   // Set severity level of libtorrent session
+-  s->set_severity_level(alert::info);
++  s->set_alert_mask(alert::error_notification|alert::peer_notification|alert::port_mapping_notification|alert::storage_notification|alert::tracker_notification|alert::status_notification|alert::ip_block_notification);
+   // Enabling metadata plugin
+   s->add_extension(&create_metadata_plugin);
+   timerAlerts = new QTimer();
+@@ -68,8 +67,6 @@
+   downloader = new downloadThread(this);
+   connect(downloader, SIGNAL(downloadFinished(QString, QString)), this, SLOT(processDownloadedFile(QString, QString)));
+   connect(downloader, SIGNAL(downloadFailure(QString, QString)), this, SLOT(handleDownloadFailure(QString, QString)));
+-  // File deleter (thread)
+-  deleter = new deleteThread(this);
+   BigRatioTimer = 0;
+   filterParser = 0;
+   downloadQueue = 0;
+@@ -94,7 +91,6 @@
+   // Disable directory scanning
+   disableDirectoryScanning();
+   // Delete our objects
+-  delete deleter;
+   delete fastResumeSaver;
+   delete timerAlerts;
+   if(BigRatioTimer)
+@@ -123,16 +119,6 @@
+   if(change) {
+     qDebug("PreAllocateAll changed, reloading all torrents!");
+     preAllocateAll = b;
+-    // Reload All unfinished torrents
+-    QString hash;
+-    foreach(hash, unfinishedTorrents) {
+-      QTorrentHandle h = getTorrentHandle(hash);
+-      if(!h.is_valid()) {
+-        qDebug("/!\\ Error: Invalid handle");
+-        continue;
+-      }
+-      reloadTorrent(h, b);
+-    }
+   }
+ }
+ 
+@@ -543,8 +529,7 @@
+   QTorrentHandle h = getTorrentHandle(hash);
+   if(!h.is_valid()) return -1;
+   switch(h.state()) {
+-    case torrent_status::downloading:
+-    case torrent_status::connecting_to_tracker: {
++    case torrent_status::downloading: {
+       if(!TorrentsStartTime.contains(hash)) return -1;
+       int timeElapsed = TorrentsStartTime.value(hash).secsTo(QDateTime::currentDateTime());
+       double avg_speed;
+@@ -614,12 +599,11 @@
+   }
+   QString savePath = h.save_path();
+   QString fileName = h.name();
+-  arborescence *files_arb = 0;
+-  if(permanent){
+-    files_arb = new arborescence(h.get_torrent_info());
+-  }
+   // Remove it from session
+-  s->remove_torrent(h.get_torrent_handle());
++  if(permanent)
++      s->remove_torrent(h.get_torrent_handle(), session::delete_files);
++  else
++    s->remove_torrent(h.get_torrent_handle());
+   // Remove it from torrent backup directory
+   QDir torrentBackup(misc::qBittorrentPath() + "BT_backup");
+   QStringList filters;
+@@ -666,12 +650,6 @@
+     QFile::remove(misc::qBittorrentPath()+"BT_backup"+QDir::separator()+hash+".prio");
+   if(QFile::exists(misc::qBittorrentPath()+"BT_backup"+QDir::separator()+hash+".queued"))
+     QFile::remove(misc::qBittorrentPath()+"BT_backup"+QDir::separator()+hash+".queued");
+-  if(permanent && files_arb != 0) {
+-    // Remove from Hard drive
+-    qDebug("Removing this on hard drive: %s", qPrintable(savePath+QDir::separator()+fileName));
+-    // Deleting in a thread to avoid GUI freeze
+-    deleter->deleteTorrent(savePath, files_arb);
+-  }
+   if(permanent)
+     addConsoleMessage(tr("'%1' was removed permanently.", "'xxx.avi' was removed permanently.").arg(fileName));
+   else
+@@ -894,7 +872,6 @@
+ // Add a torrent to the bittorrent session
+ void bittorrent::addTorrent(QString path, bool fromScanDir, QString from_url, bool resumed) {
+   QTorrentHandle h;
+-  entry resume_data;
+   bool fastResume=false;
+   QDir torrentBackup(misc::qBittorrentPath() + "BT_backup");
+   QString file, dest_file, scan_dir;
+@@ -914,203 +891,164 @@
+   }
+   Q_ASSERT(!file.startsWith("http://", Qt::CaseInsensitive) && !file.startsWith("https://", Qt::CaseInsensitive) && !file.startsWith("ftp://", Qt::CaseInsensitive));
+   qDebug("Adding %s to download list", file.toUtf8().data());
+-  std::ifstream in(file.toUtf8().data(), std::ios_base::binary);
+-  in.unsetf(std::ios_base::skipws);
+-  try{
+-    // Decode torrent file
+-    entry e = bdecode(std::istream_iterator<char>(in), std::istream_iterator<char>());
+-    // Getting torrent file informations
+-    boost::intrusive_ptr<torrent_info> t(new torrent_info(e));
+-    qDebug(" -> Hash: %s", misc::toString(t->info_hash()).c_str());
+-    qDebug(" -> Name: %s", t->name().c_str());
+-    QString hash = misc::toQString(t->info_hash());
+-    if(file.startsWith(torrentBackup.path())) {
++  boost::intrusive_ptr<torrent_info> t;
++  try {
++      // Getting torrent file informations
++      t = new torrent_info(file.toUtf8().data());
++  } catch(std::exception&) {
++      if(!from_url.isNull()) {
++          addConsoleMessage(tr("Unable to decode torrent file: '%1'", "e.g: Unable to decode torrent file: '/home/y/xxx.torrent'").arg(from_url), QString::fromUtf8("red"));
++          //emit invalidTorrent(from_url);
++          QFile::remove(file);
++      }else{
++          addConsoleMessage(tr("Unable to decode torrent file: '%1'", "e.g: Unable to decode torrent file: '/home/y/xxx.torrent'").arg(file), QString::fromUtf8("red"));
++          //emit invalidTorrent(file);
++      }
++      addConsoleMessage(tr("This file is either corrupted or this isn't a torrent."),QString::fromUtf8("red"));
++      if(fromScanDir) {
++          // Remove .corrupt file in case it already exists
++          QFile::remove(file+".corrupt");
++          //Rename file extension so that it won't display error message more than once
++          QFile::rename(file,file+".corrupt");
++      }
++  }
++  qDebug(" -> Hash: %s", misc::toString(t->info_hash()).c_str());
++  qDebug(" -> Name: %s", t->name().c_str());
++  QString hash = misc::toQString(t->info_hash());
++  if(file.startsWith(torrentBackup.path())) {
+       QFileInfo fi(file);
+       QString old_hash = fi.baseName();
+       if(old_hash != hash){
+-        qDebug("* ERROR: Strange, hash changed from %s to %s", old_hash.toUtf8().data(), hash.toUtf8().data());
++          qDebug("* ERROR: Strange, hash changed from %s to %s", old_hash.toUtf8().data(), hash.toUtf8().data());
+       }
+-    }
+-    if(s->find_torrent(t->info_hash()).is_valid()) {
++  }
++  // Check if torrent is already in download list
++  if(s->find_torrent(t->info_hash()).is_valid()) {
+       qDebug("/!\\ Torrent is already in download list");
+       // Update info Bar
+       if(!fromScanDir) {
+-        if(!from_url.isNull()) {
+-          // If download from url, remove temp file
+-          QFile::remove(file);
+-           addConsoleMessage(tr("'%1' is already in download list.", "e.g: 'xxx.avi' is already in download list.").arg(from_url));
+-          //emit duplicateTorrent(from_url);
+-        }else{
+-          addConsoleMessage(tr("'%1' is already in download list.", "e.g: 'xxx.avi' is already in download list.").arg(file));
+-          //emit duplicateTorrent(file);
+-        }
++          if(!from_url.isNull()) {
++              // If download from url, remove temp file
++              QFile::remove(file);
++              addConsoleMessage(tr("'%1' is already in download list.", "e.g: 'xxx.avi' is already in download list.").arg(from_url));
++              //emit duplicateTorrent(from_url);
++          }else{
++              addConsoleMessage(tr("'%1' is already in download list.", "e.g: 'xxx.avi' is already in download list.").arg(file));
++              //emit duplicateTorrent(file);
++          }
+       }else{
+-        // Delete torrent from scan dir
+-        QFile::remove(file);
++          // Delete torrent from scan dir
++          QFile::remove(file);
+       }
+       return;
+-    }
+-    //Getting fast resume data if existing
+-    if(torrentBackup.exists(hash+".fastresume")) {
+-      try{
+-        std::stringstream strStream;
+-        strStream << hash.toStdString() << ".fastresume";
+-        boost::filesystem::ifstream resume_file(fs::path(torrentBackup.path().toUtf8().data()) / strStream.str(), std::ios_base::binary);
+-        resume_file.unsetf(std::ios_base::skipws);
+-        resume_data = bdecode(std::istream_iterator<char>(resume_file), std::istream_iterator<char>());
+-        fastResume=true;
+-      }catch (invalid_encoding&) {}
+-      catch (fs::filesystem_error&) {}
+-    }
+-    QString savePath = getSavePath(hash);
+-    // Save save_path to hard drive
+-    QFile savepath_file(misc::qBittorrentPath()+QString::fromUtf8("BT_backup")+QDir::separator()+hash+QString::fromUtf8(".savepath"));
+-    if(!savepath_file.exists()) {
++  }
++  add_torrent_params p;
++  //Getting fast resume data if existing
++  std::vector<char> buf;
++  if (load_file((torrentBackup.path()+hash+QString(".fastresume")).toUtf8().data(), buf) == 0) {
++      fastResume = true;
++      p.resume_data = &buf;
++  }
++  QString savePath = getSavePath(hash);
++  // Save save_path to hard drive
++  QFile savepath_file(misc::qBittorrentPath()+QString::fromUtf8("BT_backup")+QDir::separator()+hash+QString::fromUtf8(".savepath"));
++  if(!savepath_file.exists()) {
+       savepath_file.open(QIODevice::WriteOnly | QIODevice::Text);
+       savepath_file.write(savePath.toUtf8());
+       savepath_file.close();
+-    }
+-    // Adding files to bittorrent session
+-    if(preAllocateAll) {
+-      h = s->add_torrent(t, fs::path(savePath.toUtf8().data()), resume_data, storage_mode_allocate, true);
+-      qDebug(" -> Full allocation mode");
+-    }else{
+-      h = s->add_torrent(t, fs::path(savePath.toUtf8().data()), resume_data, storage_mode_sparse, true);
+-      qDebug(" -> Sparse allocation mode");
+-    }
+-    if(!h.is_valid()) {
++  }
++  p.save_path = savePath.toUtf8().data();
++  p.ti = t;
++  // Preallocate all?
++  if(preAllocateAll)
++    p.storage_mode = storage_mode_allocate;
++  else
++    p.storage_mode = storage_mode_sparse;
++  // Start in pause
++  p.paused = true;
++  p.duplicate_is_error = false; // Already checked
++  p.auto_managed = true;
++  // Adding torrent to bittorrent session
++  h =  s->add_torrent(p);
++  // Check if it worked
++  if(!h.is_valid()) {
+       // No need to keep on, it failed.
+       qDebug("/!\\ Error: Invalid handle");
+       // If download from url, remove temp file
+       if(!from_url.isNull()) QFile::remove(file);
+       return;
+-    }
+-    // Connections limit per torrent
+-    h.set_max_connections(maxConnecsPerTorrent);
+-    // Uploads limit per torrent
+-    h.set_max_uploads(maxUploadsPerTorrent);
+-    // Load filtered files
+-    loadFilesPriorities(h);
+-    // Load custom url seeds
+-    loadWebSeeds(hash);
+-    // Load speed limit from hard drive
+-    loadTorrentSpeedLimits(hash);
+-    // Load ratio data
+-    loadDownloadUploadForTorrent(hash);
+-    // Load trackers
+-    bool loaded_trackers = loadTrackerFile(hash);
+-    // Doing this to order trackers well
+-    if(!loaded_trackers) {
++  }
++  // Connections limit per torrent
++  h.set_max_connections(maxConnecsPerTorrent);
++  // Uploads limit per torrent
++  h.set_max_uploads(maxUploadsPerTorrent);
++  // Load filtered files
++  loadFilesPriorities(h);
++  // Load custom url seeds
++  loadWebSeeds(hash);
++  // Load speed limit from hard drive
++  loadTorrentSpeedLimits(hash);
++  // Load ratio data
++  loadDownloadUploadForTorrent(hash);
++  // Load trackers
++  bool loaded_trackers = loadTrackerFile(hash);
++  // Doing this to order trackers well
++  if(!loaded_trackers) {
+       saveTrackerFile(hash);
+       loadTrackerFile(hash);
+-    }
+-    QString newFile = torrentBackup.path() + QDir::separator() + hash + ".torrent";
+-    if(file != newFile) {
++  }
++  QString newFile = torrentBackup.path() + QDir::separator() + hash + ".torrent";
++  if(file != newFile) {
+       // Delete file from torrentBackup directory in case it exists because
+       // QFile::copy() do not overwrite
+       QFile::remove(newFile);
+       // Copy it to torrentBackup directory
+       QFile::copy(file, newFile);
+-    }
+-    // Incremental download
+-    if(QFile::exists(misc::qBittorrentPath()+"BT_backup"+QDir::separator()+hash+".incremental")) {
++  }
++  // Incremental download
++  if(QFile::exists(misc::qBittorrentPath()+"BT_backup"+QDir::separator()+hash+".incremental")) {
+       qDebug("Incremental download enabled for %s", t->name().c_str());
+-      h.set_sequenced_download_threshold(1);
+-    }
+-    if((resumed || !addInPause) && !QFile::exists(misc::qBittorrentPath()+"BT_backup"+QDir::separator()+hash+".paused")) {
++      h.set_sequential_download(true);
++  }
++  if((resumed || !addInPause) && !QFile::exists(misc::qBittorrentPath()+"BT_backup"+QDir::separator()+hash+".paused")) {
+       // Start torrent because it was added in paused state
+       h.resume();
+-    }
+-    if(QFile::exists(misc::qBittorrentPath()+"BT_backup"+QDir::separator()+hash+".finished")) {
++  }
++  if(QFile::exists(misc::qBittorrentPath()+"BT_backup"+QDir::separator()+hash+".finished")) {
+       finishedTorrents << hash;
+       if(!resumed && queueingEnabled) {
+-        uploadQueue->append(hash);
+-        saveTorrentPriority(hash, uploadQueue->size()-1);
+-        updateUploadQueue();
++          uploadQueue->append(hash);
++          saveTorrentPriority(hash, uploadQueue->size()-1);
++          updateUploadQueue();
+       }
+-    }else{
++  }else{
+       unfinishedTorrents << hash;
+       if(!resumed && queueingEnabled) {
+-        downloadQueue->append(hash);
+-        saveTorrentPriority(hash, downloadQueue->size()-1);
+-        updateDownloadQueue();
++          downloadQueue->append(hash);
++          saveTorrentPriority(hash, downloadQueue->size()-1);
++          updateDownloadQueue();
+       }
+-    }
+-    // If download from url, remove temp file
+-    if(!from_url.isNull()) QFile::remove(file);
+-    // Delete from scan dir to avoid trying to download it again
+-    if(fromScanDir) {
++  }
++  // If download from url, remove temp file
++  if(!from_url.isNull()) QFile::remove(file);
++  // Delete from scan dir to avoid trying to download it again
++  if(fromScanDir) {
+       QFile::remove(file);
+-    }
+-    // Send torrent addition signal
+-    if(!from_url.isNull()) {
++  }
++  // Send torrent addition signal
++  if(!from_url.isNull()) {
+       emit addedTorrent(h);
+       if(fastResume)
+-        addConsoleMessage(tr("'%1' resumed. (fast resume)", "'/home/y/xxx.torrent' was resumed. (fast resume)").arg(from_url));
++          addConsoleMessage(tr("'%1' resumed. (fast resume)", "'/home/y/xxx.torrent' was resumed. (fast resume)").arg(from_url));
+       else
+-        addConsoleMessage(tr("'%1' added to download list.", "'/home/y/xxx.torrent' was added to download list.").arg(from_url));
+-    }else{
++          addConsoleMessage(tr("'%1' added to download list.", "'/home/y/xxx.torrent' was added to download list.").arg(from_url));
++  }else{
+       emit addedTorrent(h);
+       if(fastResume)
+-        addConsoleMessage(tr("'%1' resumed. (fast resume)", "'/home/y/xxx.torrent' was resumed. (fast resume)").arg(file));
++          addConsoleMessage(tr("'%1' resumed. (fast resume)", "'/home/y/xxx.torrent' was resumed. (fast resume)").arg(file));
+       else
+-        addConsoleMessage(tr("'%1' added to download list.", "'/home/y/xxx.torrent' was added to download list.").arg(file));
+-    }
+-  }catch (invalid_encoding& e) { // Raised by bdecode()
+-    std::cerr << "Could not decode file, reason: " << e.what() << '\n';
+-    // Display warning to tell user we can't decode the torrent file
+-    if(!from_url.isNull()) {
+-      addConsoleMessage(tr("Unable to decode torrent file: '%1'", "e.g: Unable to decode torrent file: '/home/y/xxx.torrent'").arg(from_url), QString::fromUtf8("red"));
+-      //emit invalidTorrent(from_url);
+-      QFile::remove(file);
+-    }else{
+-      addConsoleMessage(tr("Unable to decode torrent file: '%1'", "e.g: Unable to decode torrent file: '/home/y/xxx.torrent'").arg(file), QString::fromUtf8("red"));
+-      //emit invalidTorrent(file);
+-    }
+-    addConsoleMessage(tr("This file is either corrupted or this isn't a torrent."),QString::fromUtf8("red"));
+-    if(fromScanDir) {
+-      // Remove .corrupt file in case it already exists
+-      QFile::remove(file+".corrupt");
+-      //Rename file extension so that it won't display error message more than once
+-      QFile::rename(file,file+".corrupt");
+-    }
++          addConsoleMessage(tr("'%1' added to download list.", "'/home/y/xxx.torrent' was added to download list.").arg(file));
+   }
+-  catch (invalid_torrent_file&) { // Raised by torrent_info constructor
+-    // Display warning to tell user we can't decode the torrent file
+-    if(!from_url.isNull()) {
+-      addConsoleMessage(tr("Unable to decode torrent file: '%1'", "e.g: Unable to decode torrent file: '/home/y/xxx.torrent'").arg(from_url), QString::fromUtf8("red"));
+-      //emit invalidTorrent(from_url);
+-      qDebug("File path is: %s", file.toUtf8().data());
+-      QFile::remove(file);
+-    }else{
+-      addConsoleMessage(tr("Unable to decode torrent file: '%1'", "e.g: Unable to decode torrent file: '/home/y/xxx.torrent'").arg(file), QString::fromUtf8("red"));
+-      //emit invalidTorrent(file);
+-    }
+-    if(fromScanDir) {
+-      // Remove .corrupt file in case it already exists
+-      QFile::remove(file+".corrupt");
<<Diff was trimmed, longer than 597 lines>>


More information about the pld-cvs-commit mailing list