Browse Source

Merge pull request #11194 from Chocobo1/filename

Fix filename validation on non-Windows OS
adaptive-webui-19844
Mike Tzou 5 years ago committed by GitHub
parent
commit
ee0f38a696
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 14
      src/base/utils/fs.cpp
  2. 4
      src/gui/torrentcontenttreeview.cpp

14
src/base/utils/fs.cpp

@ -230,7 +230,19 @@ bool Utils::Fs::isValidFileSystemName(const QString &name, const bool allowSepar
{ {
if (name.isEmpty()) return false; if (name.isEmpty()) return false;
const QRegularExpression regex(allowSeparators ? "[:?\"*<>|]" : "[\\\\/:?\"*<>|]"); #if defined(Q_OS_WIN)
const QRegularExpression regex {allowSeparators
? QLatin1String("[:?\"*<>|]")
: QLatin1String("[\\\\/:?\"*<>|]")};
#elif defined(Q_OS_MACOS)
const QRegularExpression regex {allowSeparators
? QLatin1String("[\\0:]")
: QLatin1String("[\\0/:]")};
#else
const QRegularExpression regex {allowSeparators
? QLatin1String("[\\0]")
: QLatin1String("[\\0/]")};
#endif
return !name.contains(regex); return !name.contains(regex);
} }

4
src/gui/torrentcontenttreeview.cpp

@ -108,7 +108,7 @@ void TorrentContentTreeView::renameSelectedFile(BitTorrent::TorrentHandle *torre
, modelIndex.data().toString(), &ok, isFile).trimmed(); , modelIndex.data().toString(), &ok, isFile).trimmed();
if (!ok) return; if (!ok) return;
if (newName.isEmpty() || !Utils::Fs::isValidFileSystemName(newName)) { if (!Utils::Fs::isValidFileSystemName(newName)) {
RaisedMessageBox::warning(this, tr("Rename error"), RaisedMessageBox::warning(this, tr("Rename error"),
tr("The name is empty or contains forbidden characters, please choose a different one."), tr("The name is empty or contains forbidden characters, please choose a different one."),
QMessageBox::Ok); QMessageBox::Ok);
@ -227,7 +227,7 @@ void TorrentContentTreeView::renameSelectedFile(BitTorrent::TorrentInfo &torrent
, modelIndex.data().toString(), &ok, isFile).trimmed(); , modelIndex.data().toString(), &ok, isFile).trimmed();
if (!ok) return; if (!ok) return;
if (newName.isEmpty() || !Utils::Fs::isValidFileSystemName(newName)) { if (!Utils::Fs::isValidFileSystemName(newName)) {
RaisedMessageBox::warning(this, tr("Rename error"), RaisedMessageBox::warning(this, tr("Rename error"),
tr("The name is empty or contains forbidden characters, please choose a different one."), tr("The name is empty or contains forbidden characters, please choose a different one."),
QMessageBox::Ok); QMessageBox::Ok);

Loading…
Cancel
Save