mirror of
https://github.com/clementine-player/Clementine
synced 2024-12-24 08:42:51 +01:00
Remove . from the beginning of filenames when organising files. Fixes #4338
This commit is contained in:
parent
cf6cdc6936
commit
41425b3c5c
@ -47,9 +47,13 @@ const QStringList OrganiseFormat::kKnownTags = QStringList() << "title"
|
||||
<< "grouping";
|
||||
|
||||
// From http://en.wikipedia.org/wiki/8.3_filename#Directory_table
|
||||
const char* OrganiseFormat::kInvalidFatCharacters = "\"*/\\:<>?|";
|
||||
const char OrganiseFormat::kInvalidFatCharacters[] = "\"*/\\:<>?|";
|
||||
const int OrganiseFormat::kInvalidFatCharactersCount =
|
||||
strlen(OrganiseFormat::kInvalidFatCharacters);
|
||||
sizeof(OrganiseFormat::kInvalidFatCharacters) - 1;
|
||||
|
||||
const char OrganiseFormat::kInvalidPrefixCharacters[] = ".";
|
||||
const int OrganiseFormat::kInvalidPrefixCharactersCount =
|
||||
sizeof(OrganiseFormat::kInvalidPrefixCharacters) - 1;
|
||||
|
||||
const QRgb OrganiseFormat::SyntaxHighlighter::kValidTagColorLight =
|
||||
qRgb(64, 64, 255);
|
||||
@ -116,7 +120,19 @@ QString OrganiseFormat::GetFilenameForSong(const Song& song) const {
|
||||
filename = stripped;
|
||||
}
|
||||
|
||||
return filename;
|
||||
// Fix any parts of the path that start with dots.
|
||||
QStringList parts = filename.split("/");
|
||||
for (int i = 0; i < parts.count(); ++i) {
|
||||
QString* part = &parts[i];
|
||||
for (int j = 0; j < kInvalidPrefixCharactersCount; ++j) {
|
||||
if (part->startsWith(kInvalidPrefixCharacters[j])) {
|
||||
part->replace(0, 1, '_');
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return parts.join("/");
|
||||
}
|
||||
|
||||
QString OrganiseFormat::ParseBlock(QString block, const Song& song,
|
||||
|
@ -30,8 +30,10 @@ class OrganiseFormat {
|
||||
static const char* kTagPattern;
|
||||
static const char* kBlockPattern;
|
||||
static const QStringList kKnownTags;
|
||||
static const char* kInvalidFatCharacters;
|
||||
static const char kInvalidFatCharacters[];
|
||||
static const int kInvalidFatCharactersCount;
|
||||
static const char kInvalidPrefixCharacters[];
|
||||
static const int kInvalidPrefixCharactersCount;
|
||||
|
||||
QString format() const { return format_; }
|
||||
bool replace_non_ascii() const { return replace_non_ascii_; }
|
||||
|
Loading…
Reference in New Issue
Block a user