diff options
Diffstat (limited to 'src/file/source/file.rs')
-rw-r--r-- | src/file/source/file.rs | 20 |
1 files changed, 19 insertions, 1 deletions
diff --git a/src/file/source/file.rs b/src/file/source/file.rs index 403f3f2..8ee5d31 100644 --- a/src/file/source/file.rs +++ b/src/file/source/file.rs @@ -27,7 +27,7 @@ impl FileSourceFile { where F: FileStoredFormat + Format + 'static, { - let mut filename = if self.name.is_absolute() { + let filename = if self.name.is_absolute() { self.name.clone() } else { env::current_dir()?.as_path().join(&self.name) @@ -59,6 +59,9 @@ impl FileSourceFile { ))) }; } + // Adding a dummy extension will make sure we will not override secondary extensions, i.e. "file.local" + // This will make the following set_extension function calls to append the extension. + let mut filename = add_dummy_extension(filename); match format_hint { Some(format) => { @@ -121,3 +124,18 @@ where }) } } + +fn add_dummy_extension(mut filename: PathBuf) -> PathBuf { + match filename.extension() { + Some(extension) => { + let mut ext = extension.to_os_string(); + ext.push("."); + ext.push("dummy"); + filename.set_extension(ext); + } + None => { + filename.set_extension("dummy"); + } + } + filename +} |