mirror of
https://github.com/qbittorrent/qBittorrent.git
synced 2025-01-07 07:37:24 +03:00
Don't follow symlink when creating torrents on Windows
Now on Windows, it won't follow/include .lnk files when creating torrents. Note that libtorrent will throw errors if we force adding .lnk files. Non-Windows OS will still follow symlinks. Closes #13286. PR #21944.
This commit is contained in:
parent
200f7fc628
commit
6f31a13f22
1 changed files with 15 additions and 2 deletions
|
@ -36,6 +36,7 @@
|
||||||
#include <libtorrent/file_storage.hpp>
|
#include <libtorrent/file_storage.hpp>
|
||||||
#include <libtorrent/torrent_info.hpp>
|
#include <libtorrent/torrent_info.hpp>
|
||||||
|
|
||||||
|
#include <QtSystemDetection>
|
||||||
#include <QDirIterator>
|
#include <QDirIterator>
|
||||||
#include <QFileInfo>
|
#include <QFileInfo>
|
||||||
#include <QHash>
|
#include <QHash>
|
||||||
|
@ -123,7 +124,14 @@ void TorrentCreator::run()
|
||||||
// need to sort the file names by natural sort order
|
// need to sort the file names by natural sort order
|
||||||
QStringList dirs = {m_params.sourcePath.data()};
|
QStringList dirs = {m_params.sourcePath.data()};
|
||||||
|
|
||||||
QDirIterator dirIter {m_params.sourcePath.data(), (QDir::AllDirs | QDir::NoDotAndDotDot), QDirIterator::Subdirectories};
|
#ifdef Q_OS_WIN
|
||||||
|
// libtorrent couldn't handle .lnk files on Windows
|
||||||
|
// Also, Windows users do not expect torrent creator to traverse into .lnk files so skip over them
|
||||||
|
const QDir::Filters dirFilters {QDir::AllDirs | QDir::NoDotAndDotDot | QDir::NoSymLinks};
|
||||||
|
#else
|
||||||
|
const QDir::Filters dirFilters {QDir::AllDirs | QDir::NoDotAndDotDot};
|
||||||
|
#endif
|
||||||
|
QDirIterator dirIter {m_params.sourcePath.data(), dirFilters, QDirIterator::Subdirectories};
|
||||||
while (dirIter.hasNext())
|
while (dirIter.hasNext())
|
||||||
{
|
{
|
||||||
const QString filePath = dirIter.next();
|
const QString filePath = dirIter.next();
|
||||||
|
@ -138,7 +146,12 @@ void TorrentCreator::run()
|
||||||
{
|
{
|
||||||
QStringList tmpNames; // natural sort files within each dir
|
QStringList tmpNames; // natural sort files within each dir
|
||||||
|
|
||||||
QDirIterator fileIter {dir, QDir::Files};
|
#ifdef Q_OS_WIN
|
||||||
|
const QDir::Filters fileFilters {QDir::Files | QDir::NoSymLinks};
|
||||||
|
#else
|
||||||
|
const QDir::Filters fileFilters {QDir::Files};
|
||||||
|
#endif
|
||||||
|
QDirIterator fileIter {dir, fileFilters};
|
||||||
while (fileIter.hasNext())
|
while (fileIter.hasNext())
|
||||||
{
|
{
|
||||||
const QFileInfo fileInfo = fileIter.nextFileInfo();
|
const QFileInfo fileInfo = fileIter.nextFileInfo();
|
||||||
|
|
Loading…
Reference in a new issue