From: <sag...@us...> - 2011-07-02 13:10:35
|
Revision: 914 http://modplug.svn.sourceforge.net/modplug/?rev=914&view=rev Author: saga-games Date: 2011-07-02 13:10:28 +0000 (Sat, 02 Jul 2011) Log Message: ----------- [Fix] Tagging: Added text ending character to text strings in ID3v2 tags. [Mod] Mod Loading: When loading a file made with a newer version of OpenMPT that only differs in the build number (last number in the version), no warning is shown anymore. For all other cases, the warning is now also shown for MPTM files. Modified Paths: -------------- trunk/OpenMPT/mptrack/Moddoc.cpp trunk/OpenMPT/mptrack/tagging.cpp trunk/OpenMPT/mptrack/test/test.cpp trunk/OpenMPT/mptrack/version.h Modified: trunk/OpenMPT/mptrack/Moddoc.cpp =================================================================== --- trunk/OpenMPT/mptrack/Moddoc.cpp 2011-07-02 12:28:51 UTC (rev 913) +++ trunk/OpenMPT/mptrack/Moddoc.cpp 2011-07-02 13:10:28 UTC (rev 914) @@ -397,9 +397,8 @@ ReinitRecordState(); // -! NEW_FEATURE#0015 - // Show warning if file was made with more recent version of OpenMPT except for MPTM-files, - // which uses CModDocs log-mechanism to show messages. - if (m_SndFile.m_dwLastSavedWithVersion > MptVersion::num && m_SndFile.GetType() != MOD_TYPE_MPT) + // Show warning if file was made with more recent version of OpenMPT except + if(MptVersion::RemoveBuildNumber(m_SndFile.m_dwLastSavedWithVersion) > MptVersion::num) { char s[256]; wsprintf(s, "Warning: this song was last saved with a more recent version of OpenMPT.\r\nSong saved with: v%s. Current version: v%s.\r\n", Modified: trunk/OpenMPT/mptrack/tagging.cpp =================================================================== --- trunk/OpenMPT/mptrack/tagging.cpp 2011-07-02 12:28:51 UTC (rev 913) +++ trunk/OpenMPT/mptrack/tagging.cpp 2011-07-02 13:10:28 UTC (rev 914) @@ -62,12 +62,12 @@ WriteID3v2Frame("TCOM", artist, f); WriteID3v2Frame("TALB", album, f); WriteID3v2Frame("TCON", genre, f); - WriteID3v2Frame("TYER", year, f); + //WriteID3v2Frame("TYER", year, f); // Deprecated WriteID3v2Frame("TDRC", year, f); + WriteID3v2Frame("TBPM", bpm, f); WriteID3v2Frame("WXXX", url, f); WriteID3v2Frame("TENC", encoder, f); WriteID3v2Frame("COMM", comments, f); - WriteID3v2Frame("TBPM", bpm, f); // Write Padding for(size_t i = 0; i < ID3v2_PADDING; i++) @@ -102,6 +102,7 @@ sFramecontent = ID3v2_TEXTENDING + sFramecontent; } sFramecontent = ID3v2_CHARSET + sFramecontent; + sFramecontent += ID3v2_TEXTENDING; TAGID3v2FRAME tFrame; Modified: trunk/OpenMPT/mptrack/test/test.cpp =================================================================== --- trunk/OpenMPT/mptrack/test/test.cpp 2011-07-02 12:28:51 UTC (rev 913) +++ trunk/OpenMPT/mptrack/test/test.cpp 2011-07-02 13:10:28 UTC (rev 914) @@ -98,6 +98,11 @@ VERIFY_EQUAL( MptVersion::ToNum("1.17.02.28"), 18285096 ); VERIFY_EQUAL( MptVersion::ToNum(MptVersion::str), MptVersion::num ); VERIFY_EQUAL( MptVersion::ToStr(MptVersion::num), MptVersion::str ); + VERIFY_EQUAL( MptVersion::RemoveBuildNumber(MAKE_VERSION_NUMERIC(1,19,02,00)), MAKE_VERSION_NUMERIC(1,19,02,00)); + VERIFY_EQUAL( MptVersion::RemoveBuildNumber(MAKE_VERSION_NUMERIC(1,18,03,20)), MAKE_VERSION_NUMERIC(1,18,03,00)); + VERIFY_EQUAL( MptVersion::IsTestBuild(MAKE_VERSION_NUMERIC(1,18,01,13)), true); + VERIFY_EQUAL( MptVersion::IsTestBuild(MAKE_VERSION_NUMERIC(1,19,01,00)), false); + VERIFY_EQUAL( MptVersion::IsTestBuild(MAKE_VERSION_NUMERIC(1,17,02,54)), false); STATIC_ASSERT( MAKE_VERSION_NUMERIC(1,17,2,28) == 18285096 ); STATIC_ASSERT( MAKE_VERSION_NUMERIC(1,17,02,48) == 18285128 ); STATIC_ASSERT( MAKE_VERSION_NUMERIC(01,17,02,52) == 18285138 ); Modified: trunk/OpenMPT/mptrack/version.h =================================================================== --- trunk/OpenMPT/mptrack/version.h 2011-07-02 12:28:51 UTC (rev 913) +++ trunk/OpenMPT/mptrack/version.h 2011-07-02 13:10:28 UTC (rev 914) @@ -34,15 +34,16 @@ const VersionNum num = MPT_VERSION_NUMERIC; const char* const str = MPT_VERSION_STR; - //Returns numerical version value from given version string. - inline VersionNum ToNum(const char* const s) + // Returns numerical version value from given version string. + static VersionNum ToNum(const char* const s) { int v1, v2, v3, v4; sscanf(s, "%x.%x.%x.%x", &v1, &v2, &v3, &v4); return ((v1 << 24) + (v2 << 16) + (v3 << 8) + v4); - } - //Returns version string from given numerical version value. - inline CString ToStr(const VersionNum v) + }; + + // Returns version string from given numerical version value. + static CString ToStr(const VersionNum v) { CString strVersion; if(v == 0) @@ -50,6 +51,20 @@ else strVersion.Format("%X.%02X.%02X.%02X", (v>>24)&0xFF, (v>>16)&0xFF, (v>>8)&0xFF, (v)&0xFF); return strVersion; + }; + + // Return a version without build number (the last number in the version). + // The current versioning scheme uses this number only for test builds, and it should be 00 for official builds, + // So sometimes it might be wanted to do comparisons without the build number. + static VersionNum RemoveBuildNumber(const VersionNum num) + { + return (num & 0xFFFFFF00); + }; + + // Returns true if a given version number is from a test build, false if it's a release build. + static bool IsTestBuild(const VersionNum num) + { + return ((num > MAKE_VERSION_NUMERIC(1,17,02,54) && num < MAKE_VERSION_NUMERIC(1,18,02,00)) || (num > MAKE_VERSION_NUMERIC(1,18,02,00) && RemoveBuildNumber(num) != num)); } }; //namespace MptVersion This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |