This commit is contained in:
Twan van Laarhoven
2020-05-16 20:35:57 +02:00
parent 6b6306fc86
commit cba96d6f23
+9 -6
View File
@@ -47,22 +47,25 @@ String add_extension(const String& filename, String const& extension) {
bool is_filename_char(Char c) { bool is_filename_char(Char c) {
return isAlnum(c) || c == _(' ') || c == _('_') || c == _('-') || c == _('.'); return isAlnum(c) || c == _(' ') || c == _('_') || c == _('-') || c == _('.');
} }
bool is_filename_char_trim(Char c) {
return c == _(' ') || 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 // allow only valid characters, and remove leading whitespace
bool start = true; bool start = true;
FOR_EACH_CONST(c, name) { FOR_EACH_CONST(c, name) {
if (is_filename_char(c) && !(start && c == _(' '))) { if (is_filename_char(c) && !(start && is_filename_char_trim(c))) {
start = false; start = false;
clean += c; clean += c;
} }
} }
// remove trailing whitespace // remove trailing whitespace and dots
while (!clean.empty() && clean[clean.size()-1] == _(' ')) { while (!clean.empty() && is_filename_char_trim(clean[clean.size()-1])) {
clean.resize(clean.size()-1); clean.resize(clean.size()-1);
} }
if (clean.empty() || starts_with(clean, _("."))) { if (clean.empty()) {
clean = _("no-name") + clean; clean = _("no-name") + clean;
} }
return clean; return clean;
@@ -114,10 +117,10 @@ time_t file_modified_time(const String& path) {
// ----------------------------------------------------------------------------- : Directories // ----------------------------------------------------------------------------- : Directories
bool create_directory(const String& path) { bool create_directory(const String& path) {
#if defined(__WX_MSW__) #if defined(__WXMSW__)
return _wmkdir(path.fn_str()) == 0; return _wmkdir(path.fn_str()) == 0;
#else #else
return mkdir(path.fn_str()) == 0; return mkdir(path.fn_str(), 0777) == 0;
#endif #endif
} }