Commit ce96cadd authored by twanvl's avatar twanvl

trim filenames, apparently writing a file "some card " is not possible on...

trim filenames, apparently writing a file "some card " is not possible on windows, it drops the trailing space.
parent 3b79f027
...@@ -208,7 +208,9 @@ void Set::reflect_cards<Writer> (Writer& tag) { ...@@ -208,7 +208,9 @@ void Set::reflect_cards<Writer> (Writer& tag) {
} else { } else {
set<String> used; set<String> used;
FOR_EACH(card, cards) { FOR_EACH(card, cards) {
String filename = normalize_internal_filename(clean_filename(card->identification())); // pick a unique filename for this card
// can't use Package::newFileName, because then we get conflicts with the previous save of the same card
String filename = _("card ") + normalize_internal_filename(clean_filename(card->identification()));
String full_name = filename; String full_name = filename;
int i = 0; int i = 0;
......
...@@ -42,11 +42,18 @@ bool is_filename_char(Char c) { ...@@ -42,11 +42,18 @@ bool is_filename_char(Char c) {
String clean_filename(const String& name) { String clean_filename(const String& name) {
String clean; String clean;
// allow only valid characters, and remove leading whitespace
bool start = true;
FOR_EACH_CONST(c, name) { FOR_EACH_CONST(c, name) {
if (is_filename_char(c)) { if (is_filename_char(c) && !(start && c == _(' '))) {
start = false;
clean += c; clean += c;
} }
} }
// remove trailing whitespace
while (!clean.empty() && clean[clean.size()-1] == _(' ')) {
clean.resize(clean.size()-1);
}
if (clean.empty() || starts_with(clean, _("."))) { if (clean.empty() || starts_with(clean, _("."))) {
clean = _("no-name") + clean; clean = _("no-name") + clean;
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment