From: <sv...@op...> - 2024-11-19 19:41:51
|
Author: sagamusix Date: Tue Nov 19 20:41:40 2024 New Revision: 22249 URL: https://source.openmpt.org/browse/openmpt/?op=revision&rev=22249 Log: [Mod] Autosave: Don't use relative paths for external samples when autosaving to a user-specified folder. Prerequisite for https://bugs.openmpt.org/view.php?id=1837 Modified: trunk/OpenMPT/common/mptPathString.cpp trunk/OpenMPT/mptrack/AutoSaver.cpp trunk/OpenMPT/test/test.cpp Modified: trunk/OpenMPT/common/mptPathString.cpp ============================================================================== --- trunk/OpenMPT/common/mptPathString.cpp Tue Nov 19 20:24:00 2024 (r22248) +++ trunk/OpenMPT/common/mptPathString.cpp Tue Nov 19 20:41:40 2024 (r22249) @@ -55,7 +55,7 @@ using namespace path_literals; using char_type = RawPathString::value_type; mpt::PathString result = path; - if(path.empty()) + if(path.empty() || relativeTo.empty()) { return result; } @@ -79,7 +79,7 @@ using namespace path_literals; using char_type = RawPathString::value_type; mpt::PathString result = path; - if(path.empty()) + if(path.empty() || relativeTo.empty()) { return result; } Modified: trunk/OpenMPT/mptrack/AutoSaver.cpp ============================================================================== --- trunk/OpenMPT/mptrack/AutoSaver.cpp Tue Nov 19 20:24:00 2024 (r22248) +++ trunk/OpenMPT/mptrack/AutoSaver.cpp Tue Nov 19 20:41:40 2024 (r22249) @@ -141,7 +141,7 @@ { mpt::PathString name = GetBasePath(modDoc, true) + GetBaseName(modDoc); const CString timeStamp = CTime::GetCurrentTime().Format(_T(".AutoSave.%Y%m%d.%H%M%S.")); - name += mpt::PathString::FromCString(timeStamp); //append backtup tag + timestamp + name += mpt::PathString::FromCString(timeStamp); // Append backtup tag + timestamp name += mpt::PathString::FromUnicode(modDoc.GetSoundFile().GetModSpecifications().GetFileExtension()); return name; } @@ -167,8 +167,8 @@ case MOD_TYPE_MOD: success = sndFile.SaveMod(f); break; case MOD_TYPE_S3M: success = sndFile.SaveS3M(f); break; case MOD_TYPE_XM: success = sndFile.SaveXM(f); break; - case MOD_TYPE_IT: success = sndFile.SaveIT(f, fileName); break; - case MOD_TYPE_MPT: success = sndFile.SaveIT(f, fileName); break; + case MOD_TYPE_IT: success = sndFile.SaveIT(f, GetUseOriginalPath() ? fileName : mpt::PathString{}); break; + case MOD_TYPE_MPT: success = sndFile.SaveIT(f, GetUseOriginalPath() ? fileName : mpt::PathString{}); break; default: // nothing break; Modified: trunk/OpenMPT/test/test.cpp ============================================================================== --- trunk/OpenMPT/test/test.cpp Tue Nov 19 20:24:00 2024 (r22248) +++ trunk/OpenMPT/test/test.cpp Tue Nov 19 20:41:40 2024 (r22249) @@ -2406,6 +2406,8 @@ VERIFY_EQUAL(mpt::RelativePathToAbsolute(P_("\\foo"), exePath), P_("C:\\foo")); VERIFY_EQUAL(mpt::AbsolutePathToRelative(P_("\\\\server\\path\\file"), exePath), P_("\\\\server\\path\\file")); VERIFY_EQUAL(mpt::RelativePathToAbsolute(P_("\\\\server\\path\\file"), exePath), P_("\\\\server\\path\\file")); + VERIFY_EQUAL(mpt::AbsolutePathToRelative(P_("C:\\OpenMPT"), mpt::PathString{}), P_("C:\\OpenMPT")); + VERIFY_EQUAL(mpt::RelativePathToAbsolute(P_("C:\\OpenMPT"), mpt::PathString{}), P_("C:\\OpenMPT")); #endif #ifdef MODPLUG_TRACKER |