From: <man...@us...> - 2014-10-29 12:50:54
|
Revision: 4517 http://sourceforge.net/p/modplug/code/4517 Author: manxorist Date: 2014-10-29 12:50:29 +0000 (Wed, 29 Oct 2014) Log Message: ----------- [Imp] libopenmpt: Log when a module uses external samples and libopenmpt is compiled without external samples support (currently always). [Imp] MT2 Loader: Log load failure of external samples. [Imp] openmpt123: Better handling of log messages during module loading. Modified Paths: -------------- trunk/OpenMPT/openmpt123/openmpt123.cpp trunk/OpenMPT/soundlib/Load_it.cpp trunk/OpenMPT/soundlib/Load_mt2.cpp Modified: trunk/OpenMPT/openmpt123/openmpt123.cpp =================================================================== --- trunk/OpenMPT/openmpt123/openmpt123.cpp 2014-10-29 11:59:43 UTC (rev 4516) +++ trunk/OpenMPT/openmpt123/openmpt123.cpp 2014-10-29 12:50:29 UTC (rev 4517) @@ -1257,6 +1257,7 @@ if ( flags.show_details ) { set_field( fields, "Filename" ).ostream() << get_filename( filename ); set_field( fields, "Size" ).ostream() << bytes_to_string( filesize ); + set_field( fields, "Warnings" ).ostream() << mod.get_metadata( "warnings" ); if ( !mod.get_metadata( "container" ).empty() ) { set_field( fields, "Container" ).ostream() << mod.get_metadata( "container" ) << " (" << mod.get_metadata( "container_long" ) << ")"; } @@ -1326,6 +1327,8 @@ log.writeout(); + std::ostringstream silentlog; + try { #if defined(WIN32) && defined(UNICODE) && !defined(_MSC_VER) @@ -1379,7 +1382,8 @@ } { - openmpt::module mod( data_stream ); + openmpt::module mod( data_stream, silentlog ); + silentlog.str( std::string() ); // clear, loader messages get stored to get_metadata( "warnings" ) by libopenmpt internally render_mod_file( flags, filename, filesize, mod, log, audio_stream ); } @@ -1390,8 +1394,18 @@ } catch ( silent_exit_exception & ) { throw; } catch ( std::exception & e ) { + if ( !silentlog.str().empty() ) { + log << "errors loading '" << filename << "': " << silentlog.str() << std::endl; + } else { + log << "errors loading '" << filename << "'" << std::endl; + } log << "error playing '" << filename << "': " << e.what() << std::endl; } catch ( ... ) { + if ( !silentlog.str().empty() ) { + log << "errors loading '" << filename << "': " << silentlog.str() << std::endl; + } else { + log << "errors loading '" << filename << "'" << std::endl; + } log << "unknown error playing '" << filename << "'" << std::endl; } Modified: trunk/OpenMPT/soundlib/Load_it.cpp =================================================================== --- trunk/OpenMPT/soundlib/Load_it.cpp 2014-10-29 11:59:43 UTC (rev 4516) +++ trunk/OpenMPT/soundlib/Load_it.cpp 2014-10-29 12:50:29 UTC (rev 4517) @@ -653,9 +653,9 @@ // External sample in MPTM file size_t strLen; file.ReadVarInt(strLen); -#ifdef MPT_EXTERNAL_SAMPLES std::string filenameU8; file.ReadString<mpt::String::maybeNullTerminated>(filenameU8, strLen); +#ifdef MPT_EXTERNAL_SAMPLES mpt::PathString filename = mpt::PathString::FromUTF8(filenameU8); if(!filename.empty()) @@ -669,14 +669,14 @@ } if(!LoadExternalSample(i + 1, filename)) { - AddToLog("Unable to load sample: " + filename.ToLocale()); + AddToLog(LogError, mpt::String::Print(MPT_USTRING("Unable to load sample %1: %2"), i, filename.ToUnicode())); } } else { sample.uFlags.reset(SMP_KEEPONDISK); } #else - file.Skip(strLen); + AddToLog(LogWarning, mpt::String::Print(MPT_USTRING("Loading external sample %1 ('%2') failed: External samples are not supported."), i, mpt::ToUnicode(mpt::CharsetUTF8, filenameU8))); #endif // MPT_EXTERNAL_SAMPLES } lastSampleOffset = std::max(lastSampleOffset, file.GetPosition()); Modified: trunk/OpenMPT/soundlib/Load_mt2.cpp =================================================================== --- trunk/OpenMPT/soundlib/Load_mt2.cpp 2014-10-29 11:59:43 UTC (rev 4516) +++ trunk/OpenMPT/soundlib/Load_mt2.cpp 2014-10-29 12:50:29 UTC (rev 4517) @@ -1080,7 +1080,16 @@ } path = path.RelativePathToAbsolute(mt2FileName.GetPath()); } - LoadExternalSample(i + 1, path); + if(!LoadExternalSample(i + 1, path)) + { + AddToLog(LogError, mpt::String::Print(MPT_USTRING("Unable to load sample %1: %2"), i, path.ToUnicode())); + } +#else + #if defined(MPT_WITH_CHARSET_LOCALE) + AddToLog(LogWarning, mpt::String::Print(MPT_USTRING("Loading external sample %1 ('%2') failed: External samples are not supported."), i, mpt::ToUnicode(mpt::CharsetLocale, filename))); + #else + AddToLog(LogWarning, mpt::String::Print(MPT_USTRING("Loading external sample %1 ('%2') failed: External samples are not supported."), i, mpt::ToUnicode(mpt::CharsetWindows1252, filename))); + #endif #endif // MPT_EXTERNAL_SAMPLES } mptSmp.nC5Speed = freq; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |