diff --git a/ShareX.HelpersLib/Helpers/Helpers.cs b/ShareX.HelpersLib/Helpers/Helpers.cs index c0af6e2f5..b5e5b2baf 100644 --- a/ShareX.HelpersLib/Helpers/Helpers.cs +++ b/ShareX.HelpersLib/Helpers/Helpers.cs @@ -92,20 +92,44 @@ public static Cursor[] CursorList } } - /// Get file name extension without dot. - public static string GetFilenameExtension(string filePath) + public static string GetFilenameExtension(string filePath, bool includeDot = false, bool checkSecondExtension = true) { + string extension = ""; + if (!string.IsNullOrEmpty(filePath)) { int pos = filePath.LastIndexOf('.'); if (pos >= 0) { - return filePath.Substring(pos + 1); + extension = filePath.Substring(pos + 1); + + if (checkSecondExtension) + { + filePath = filePath.Remove(pos); + string extension2 = GetFilenameExtension(filePath, false, false); + + if (!string.IsNullOrEmpty(extension2)) + { + foreach (string knownExtension in new string[] { "tar" }) + { + if (extension2.Equals(knownExtension, StringComparison.OrdinalIgnoreCase)) + { + extension = extension2 + "." + extension; + break; + } + } + } + } + + if (includeDot) + { + extension = "." + extension; + } } } - return null; + return extension; } public static string GetFilenameSafe(string filePath) diff --git a/ShareX/WorkerTask.cs b/ShareX/WorkerTask.cs index 7e25c93df..9d6beab25 100644 --- a/ShareX/WorkerTask.cs +++ b/ShareX/WorkerTask.cs @@ -102,7 +102,7 @@ public static WorkerTask CreateFileUploaderTask(string filePath, TaskSettings ta if (task.Info.TaskSettings.UploadSettings.FileUploadUseNamePattern) { - string ext = Path.GetExtension(task.Info.FilePath); + string ext = Helpers.GetFilenameExtension(task.Info.FilePath); task.Info.FileName = TaskHelpers.GetFilename(task.Info.TaskSettings, ext); } @@ -181,12 +181,12 @@ public static WorkerTask CreateFileJobTask(string filePath, TaskSettings taskSet if (!string.IsNullOrEmpty(customFileName)) { - string ext = Path.GetExtension(task.Info.FilePath); + string ext = Helpers.GetFilenameExtension(task.Info.FilePath); task.Info.FileName = Helpers.AppendExtension(customFileName, ext); } else if (task.Info.TaskSettings.UploadSettings.FileUploadUseNamePattern) { - string ext = Path.GetExtension(task.Info.FilePath); + string ext = Helpers.GetFilenameExtension(task.Info.FilePath); task.Info.FileName = TaskHelpers.GetFilename(task.Info.TaskSettings, ext); } @@ -211,7 +211,7 @@ public static WorkerTask CreateDownloadTask(string url, bool upload, TaskSetting if (task.Info.TaskSettings.UploadSettings.FileUploadUseNamePattern) { - string ext = Path.GetExtension(filename); + string ext = Helpers.GetFilenameExtension(filename); filename = TaskHelpers.GetFilename(task.Info.TaskSettings, ext); }