diff --git a/Changelog b/Changelog index 7b6dbf3a..9abe0179 100644 --- a/Changelog +++ b/Changelog @@ -1,3 +1,34 @@ +Version 3.0.0 +============= +First major release. We skip version series 1.x.y and 2.x.y to avoid reusing version numbers from the original DOS version. + +* Update external libraries for mingw build to latest versions. +* Add more magic numbers for up and comming version of ancient (decompression library for solid files). +* SetMode() did not have paremeters defined in the prototype, not all users had parameters defined. Caused crashes one some combination of mode changes. +* Update to latest version of libsidplayfp +* Update to latest version of adplug +* Add modland.com support directly from the file browser using a local copy of the file-list provided by modland.com. +* Speed up filebrowser if an earlier scanned .tar.gz now has unscanned modules. The archive is not persistent open due to caching. +* XM files would smash the stack on big-endian due to to loops had counter-limits in reverse order in endian-reversal code. +* MacOS/CoreAudio: Add missing mutex locking in two API functions. +* SDL/SDL2 audio: Add missing mutex locking in two API functions. +* SDL2 audio: Use SDL_LockAudioDevice, SDL_UnlockAudioDevice and SDL_CloseAudioDevice SDL 2.x functions instead of legacy 1.x functions. +* Do not attempt to divide by zero, if a song is reported as zero long. +* Logic for buffersize in playtimidity (MIDI files) was not working as expected, especially on Windows. +* If a file was unable to be accessed, pressing ENTER on it would cause a NULL-pointer dereference (Problem introduced in v0.2.102, adding support for ancient) +* Attempting to load a defective S3M file could trigger two different issues. Do not cal mcpSet(), since we have not initialized the mcp device yet, and the que variable was no reset on to NULL after free causing a double free in this special use case. +* When adding a directory-tree to the playlist, group the files by their owning directory, and sort each group of files alphabetically (strcasecmp). +* Detect Sidplayer files as playable. +* modland.com stores "Atari Digi-Mix" as *.mix instead of *.ym, so add that file-extension. +* Add FEST as a valid 4-channel signature +* Add "Atari STe/Falcon, Octalyser" CD61 and CD81 signatures +* Add "M&K!" as a valid MOD signature. These files are likely "His Master's Noise" +* Add support for Atari Falcon, Digital Tracker (MOD) files. +* Avoid double free(), could occure if trying to load an invalid MOD file +* Adjust MIME database, multiple of the magic searches were too aggressive. +* detecting .BAM files with .[0-9][0-9][0-9] filenames +* Remove adplugdb->wipe() call, it is not for freeing memory + Version 0.2.109 =============== This is a bugfix release diff --git a/configure b/configure index 9fa1f572..538fc786 100755 --- a/configure +++ b/configure @@ -1,6 +1,6 @@ #! /bin/sh # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.71 for ocp 0.2.109. +# Generated by GNU Autoconf 2.71 for ocp 3.0.0. # # Report bugs to . # @@ -611,8 +611,8 @@ MAKEFLAGS= # Identity of this package. PACKAGE_NAME='ocp' PACKAGE_TARNAME='ocp' -PACKAGE_VERSION='0.2.109' -PACKAGE_STRING='ocp 0.2.109' +PACKAGE_VERSION='3.0.0' +PACKAGE_STRING='ocp 3.0.0' PACKAGE_BUGREPORT='stian.skjelstad@gmail.com' PACKAGE_URL='' @@ -1496,7 +1496,7 @@ if test "$ac_init_help" = "long"; then # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF -\`configure' configures ocp 0.2.109 to adapt to many kinds of systems. +\`configure' configures ocp 3.0.0 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1562,7 +1562,7 @@ fi if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of ocp 0.2.109:";; + short | recursive ) echo "Configuration of ocp 3.0.0:";; esac cat <<\_ACEOF @@ -1797,7 +1797,7 @@ fi test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -ocp configure 0.2.109 +ocp configure 3.0.0 generated by GNU Autoconf 2.71 Copyright (C) 2021 Free Software Foundation, Inc. @@ -2683,7 +2683,7 @@ cat >config.log <<_ACEOF This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. -It was created by ocp $as_me 0.2.109, which was +It was created by ocp $as_me 3.0.0, which was generated by GNU Autoconf 2.71. Invocation command line was $ $0$ac_configure_args_raw @@ -3656,20 +3656,20 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu cat >>confdefs.h <<_ACEOF -#define DLLVERSION `printf 0x%04x%02x%02x 0 2 109` +#define DLLVERSION `printf 0x%04x%02x%02x 3 0 0` _ACEOF -MAJOR_VERSION=0 +MAJOR_VERSION=3 -MINOR_VERSION=2 +MINOR_VERSION=0 -PATCH_VERSION=109 +PATCH_VERSION=0 -printf "%s\n" "#define OCP_MAJOR_VERSION 0" >>confdefs.h +printf "%s\n" "#define OCP_MAJOR_VERSION 3" >>confdefs.h -printf "%s\n" "#define OCP_MINOR_VERSION 2" >>confdefs.h +printf "%s\n" "#define OCP_MINOR_VERSION 0" >>confdefs.h -printf "%s\n" "#define OCP_PATCH_VERSION 109" >>confdefs.h +printf "%s\n" "#define OCP_PATCH_VERSION 0" >>confdefs.h @@ -5683,6 +5683,27 @@ ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $ ac_compiler_gnu=$ac_cv_c_compiler_gnu +ac_cv_host_exeext=$ac_cv_exeext +if test ${ac_cv_build_exeext+y} +then : + ac_cv_exeext=$ac_cv_build_exeext +else $as_nop + { ac_cv_exeext=; unset ac_cv_exeext;} +fi +ac_cv_host_objext=$ac_cv_objext +if test ${ac_cv_build_objext+y} +then : + ac_cv_objext=$ac_cv_build_objext +else $as_nop + { ac_cv_objext=; unset ac_cv_objext;} +fi +ac_cv_host_c_compiler_gnu=$ac_cv_c_compiler_gnu +if test ${ac_cv_build_c_compiler_gnu+y} +then : + ac_cv_c_compiler_gnu=$ac_cv_build_c_compiler_gnu +else $as_nop + { ac_cv_c_compiler_gnu=; unset ac_cv_c_compiler_gnu;} +fi cross_compiling_build=no @@ -5699,21 +5720,13 @@ ac_ext=c ac_cpp='$CPP_FOR_BUILD $CPPFLAGS_FOR_BUILD' ac_compile='$CC_FOR_BUILD -c $CFLAGS_FOR_BUILD $CPPFLAGS_FOR_BUILD conftest.$ac_ext >&5' ac_link='$CC_FOR_BUILD -o conftest$ac_build_exeext $CFLAGS_FOR_BUILD $CPPFLAGS_FOR_BUILD $LDFLAGS_FOR_BUILD conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_build_c_compiler_gnu - - -was_set_c_compiler_gnu=${ac_cv_c_compiler_gnu+y} -if test ${was_set_c_compiler_gnu} -then : - saved_c_compiler_gnu=$ac_cv_c_compiler_gnu - { ac_cv_c_compiler_gnu=; unset ac_cv_c_compiler_gnu;} -fi +ac_compiler_gnu=$ac_cv_c_compiler_gnu ac_ext=c ac_cpp='$CPP_FOR_BUILD $CPPFLAGS_FOR_BUILD' ac_compile='$CC_FOR_BUILD -c $CFLAGS_FOR_BUILD $CPPFLAGS_FOR_BUILD conftest.$ac_ext >&5' ac_link='$CC_FOR_BUILD -o conftest$ac_build_exeext $CFLAGS_FOR_BUILD $CPPFLAGS_FOR_BUILD $LDFLAGS_FOR_BUILD conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_build_c_compiler_gnu +ac_compiler_gnu=$ac_cv_c_compiler_gnu if test -n "$ac_build_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. set dummy ${ac_build_tool_prefix}gcc; ac_word=$2 @@ -6294,8 +6307,8 @@ else CFLAGS_FOR_BUILD= fi fi -ac_prog_cc_stdc=no -if test x$ac_prog_cc_stdc = xno +ac_build_prog_cc_stdc=no +if test x$ac_build_prog_cc_stdc = xno then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CC_FOR_BUILD option to enable C11 features" >&5 printf %s "checking for $CC_FOR_BUILD option to enable C11 features... " >&6; } @@ -6337,11 +6350,11 @@ else $as_nop printf "%s\n" "$ac_cv_build_prog_cc_c11" >&6; } CC_FOR_BUILD="$CC_FOR_BUILD $ac_cv_build_prog_cc_c11" fi - ac_cv_prog_cc_stdc=$ac_cv_build_prog_cc_c11 - ac_prog_cc_stdc=c11 + ac_cv_build_prog_cc_stdc=$ac_cv_build_prog_cc_c11 + ac_build_prog_cc_stdc=c11 fi fi -if test x$ac_prog_cc_stdc = xno +if test x$ac_build_prog_cc_stdc = xno then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CC_FOR_BUILD option to enable C99 features" >&5 printf %s "checking for $CC_FOR_BUILD option to enable C99 features... " >&6; } @@ -6383,11 +6396,11 @@ else $as_nop printf "%s\n" "$ac_cv_build_prog_cc_c99" >&6; } CC_FOR_BUILD="$CC_FOR_BUILD $ac_cv_build_prog_cc_c99" fi - ac_cv_prog_cc_stdc=$ac_cv_build_prog_cc_c99 - ac_prog_cc_stdc=c99 + ac_cv_build_prog_cc_stdc=$ac_cv_build_prog_cc_c99 + ac_build_prog_cc_stdc=c99 fi fi -if test x$ac_prog_cc_stdc = xno +if test x$ac_build_prog_cc_stdc = xno then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CC_FOR_BUILD option to enable C89 features" >&5 printf %s "checking for $CC_FOR_BUILD option to enable C89 features... " >&6; } @@ -6429,8 +6442,8 @@ else $as_nop printf "%s\n" "$ac_cv_build_prog_cc_c89" >&6; } CC_FOR_BUILD="$CC_FOR_BUILD $ac_cv_build_prog_cc_c89" fi - ac_cv_prog_cc_stdc=$ac_cv_build_prog_cc_c89 - ac_prog_cc_stdc=c89 + ac_cv_build_prog_cc_stdc=$ac_cv_build_prog_cc_c89 + ac_build_prog_cc_stdc=c89 fi fi @@ -6438,13 +6451,7 @@ ac_ext=c ac_cpp='$CPP_FOR_BUILD $CPPFLAGS_FOR_BUILD' ac_compile='$CC_FOR_BUILD -c $CFLAGS_FOR_BUILD $CPPFLAGS_FOR_BUILD conftest.$ac_ext >&5' ac_link='$CC_FOR_BUILD -o conftest$ac_build_exeext $CFLAGS_FOR_BUILD $CPPFLAGS_FOR_BUILD $LDFLAGS_FOR_BUILD conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_build_c_compiler_gnu - - -if test ${was_set_c_compiler_gnu} -then : - ac_cv_c_compiler_gnu=$saved_c_compiler_gnu -fi +ac_compiler_gnu=$ac_cv_c_compiler_gnu cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @@ -6507,9 +6514,9 @@ do # certainly right. break;; *.* ) - if test ${ac_cv_build_exeext+y} && test "$ac_cv_build_exeext" != no; + if test ${ac_cv_exeext+y} && test "$ac_cv_exeext" != no; then :; else - ac_cv_build_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` + ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` fi # We set ac_cv_exeext here because the later test for it is not # safe: cross compilers may not add the suffix if given an `-o' @@ -6521,7 +6528,7 @@ do break;; esac done -test "$ac_cv_build_exeext" = no && ac_cv_build_exeext= +test "$ac_cv_exeext" = no && ac_cv_exeext= else $as_nop ac_file='' @@ -6545,9 +6552,9 @@ fi printf %s "checking for C compiler default output file name... " >&6; } { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5 printf "%s\n" "$ac_file" >&6; } -ac_build_exeext=$ac_cv_build_exeext +ac_build_exeext=$ac_cv_exeext -rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_build_exeext b.out +rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out ac_clean_files=$ac_clean_files_save { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5 printf %s "checking for suffix of executables... " >&6; } @@ -6571,7 +6578,7 @@ for ac_file in conftest.exe conftest conftest.*; do test -f "$ac_file" || continue case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; - *.* ) ac_cv_build_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` + *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` break;; * ) break;; esac @@ -6582,13 +6589,13 @@ printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "cannot compute suffix of executables: cannot compile and link See \`config.log' for more details" "$LINENO" 5; } fi -rm -f conftest conftest$ac_cv_build_exeext -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build_exeext" >&5 -printf "%s\n" "$ac_cv_build_exeext" >&6; } +rm -f conftest conftest$ac_cv_exeext +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5 +printf "%s\n" "$ac_cv_exeext" >&6; } rm -f conftest.$ac_ext -EXEEXT=$ac_cv_build_exeext -ac_build_exeext=$BUILD_EXEEXT +EXEEXT=$ac_cv_exeext +ac_build_exeext=$EXEEXT cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include @@ -6619,7 +6626,7 @@ printf "%s\n" "$ac_try_echo"; } >&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } - if { ac_try='./conftest$ac_cv_build_exeext' + if { ac_try='./conftest$ac_cv_exeext' { { case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; @@ -6646,12 +6653,12 @@ fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $cross_compiling_build" >&5 printf "%s\n" "$cross_compiling_build" >&6; } -rm -f conftest.$ac_ext conftest$ac_cv_build_exeext conftest.out +rm -f conftest.$ac_ext conftest$ac_cv_exeext conftest.out ac_clean_files=$ac_clean_files_save { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5 printf %s "checking for suffix of object files... " >&6; } -if test ${ac_cv_build_objext+y} +if test ${ac_cv_objext+y} then : printf %s "(cached) " >&6 else $as_nop @@ -6683,7 +6690,7 @@ then : test -f "$ac_file" || continue; case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM ) ;; - *) ac_cv_build_objext=`expr "$ac_file" : '.*\.\(.*\)'` + *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'` break;; esac done @@ -6696,18 +6703,18 @@ printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "cannot compute suffix of object files: cannot compile See \`config.log' for more details" "$LINENO" 5; } fi -rm -f conftest.$ac_cv_build_objext conftest.$ac_ext +rm -f conftest.$ac_cv_objext conftest.$ac_ext fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build_objext" >&5 -printf "%s\n" "$ac_cv_build_objext" >&6; } -OBJEXT=$ac_cv_build_objext -ac_build_objext=$BUILD_OBJEXT +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5 +printf "%s\n" "$ac_cv_objext" >&6; } +OBJEXT=$ac_cv_objext +ac_build_objext=$OBJEXT ac_ext=c ac_cpp='$CPP_FOR_BUILD $CPPFLAGS_FOR_BUILD' ac_compile='$CC_FOR_BUILD -c $CFLAGS_FOR_BUILD $CPPFLAGS_FOR_BUILD conftest.$ac_ext >&5' ac_link='$CC_FOR_BUILD -o conftest$ac_build_exeext $CFLAGS_FOR_BUILD $CPPFLAGS_FOR_BUILD $LDFLAGS_FOR_BUILD conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_build_c_compiler_gnu +ac_compiler_gnu=$ac_cv_c_compiler_gnu { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking how to run the C preprocessor" >&5 printf %s "checking how to run the C preprocessor... " >&6; } # On Suns, sometimes $CPP names a directory. @@ -6833,9 +6840,18 @@ ac_ext=c ac_cpp='$CPP_FOR_BUILD $CPPFLAGS_FOR_BUILD' ac_compile='$CC_FOR_BUILD -c $CFLAGS_FOR_BUILD $CPPFLAGS_FOR_BUILD conftest.$ac_ext >&5' ac_link='$CC_FOR_BUILD -o conftest$ac_build_exeext $CFLAGS_FOR_BUILD $CPPFLAGS_FOR_BUILD $LDFLAGS_FOR_BUILD conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_build_c_compiler_gnu +ac_compiler_gnu=$ac_cv_c_compiler_gnu + +BUILD_EXEEXT=$ac_cv_exeext +BUILD_OBJEXT=$ac_cv_objext +ac_cv_exeext=$ac_cv_host_exeext +EXEEXT=$ac_cv_host_exeext +ac_cv_objext=$ac_cv_host_objext +OBJEXT=$ac_cv_host_objext +ac_cv_c_compiler_gnu=$ac_cv_host_c_compiler_gnu +ac_compiler_gnu=$ac_cv_host_c_compiler_gnu ac_ext=c ac_cpp='$CPP $CPPFLAGS' @@ -13113,7 +13129,17 @@ else $as_nop // MSVC always sets __cplusplus to 199711L in older versions; newer versions // only set it correctly if /Zc:__cplusplus is specified as well as a // /std:c++NN switch: +// // https://devblogs.microsoft.com/cppblog/msvc-now-correctly-reports-__cplusplus/ +// +// The value __cplusplus ought to have is available in _MSVC_LANG since +// Visual Studio 2015 Update 3: +// +// https://learn.microsoft.com/en-us/cpp/preprocessor/predefined-macros +// +// This was also the first MSVC version to support C++14 so we can't use the +// value of either __cplusplus or _MSVC_LANG to quickly rule out MSVC having +// C++11 or C++14 support, but we can check _MSVC_LANG for C++17 and later. #elif __cplusplus < 201103L && !defined _MSC_VER #error "This is not a C++11 compiler" @@ -13608,7 +13634,17 @@ else $as_nop // MSVC always sets __cplusplus to 199711L in older versions; newer versions // only set it correctly if /Zc:__cplusplus is specified as well as a // /std:c++NN switch: +// // https://devblogs.microsoft.com/cppblog/msvc-now-correctly-reports-__cplusplus/ +// +// The value __cplusplus ought to have is available in _MSVC_LANG since +// Visual Studio 2015 Update 3: +// +// https://learn.microsoft.com/en-us/cpp/preprocessor/predefined-macros +// +// This was also the first MSVC version to support C++14 so we can't use the +// value of either __cplusplus or _MSVC_LANG to quickly rule out MSVC having +// C++11 or C++14 support, but we can check _MSVC_LANG for C++17 and later. #elif __cplusplus < 201103L && !defined _MSC_VER #error "This is not a C++11 compiler" @@ -14233,7 +14269,17 @@ else $as_nop // MSVC always sets __cplusplus to 199711L in older versions; newer versions // only set it correctly if /Zc:__cplusplus is specified as well as a // /std:c++NN switch: +// // https://devblogs.microsoft.com/cppblog/msvc-now-correctly-reports-__cplusplus/ +// +// The value __cplusplus ought to have is available in _MSVC_LANG since +// Visual Studio 2015 Update 3: +// +// https://learn.microsoft.com/en-us/cpp/preprocessor/predefined-macros +// +// This was also the first MSVC version to support C++14 so we can't use the +// value of either __cplusplus or _MSVC_LANG to quickly rule out MSVC having +// C++11 or C++14 support, but we can check _MSVC_LANG for C++17 and later. #elif __cplusplus < 201103L && !defined _MSC_VER #error "This is not a C++11 compiler" @@ -14641,7 +14687,7 @@ namespace cxx14 #error "This is not a C++ compiler" -#elif __cplusplus < 201703L && !defined _MSC_VER +#elif (defined _MSVC_LANG ? _MSVC_LANG : __cplusplus) < 201703L #error "This is not a C++17 compiler" @@ -15007,7 +15053,7 @@ namespace cxx17 } // namespace cxx17 -#endif // __cplusplus < 201703L && !defined _MSC_VER +#endif // (defined _MSVC_LANG ? _MSVC_LANG : __cplusplus) < 201703L @@ -15109,7 +15155,17 @@ else $as_nop // MSVC always sets __cplusplus to 199711L in older versions; newer versions // only set it correctly if /Zc:__cplusplus is specified as well as a // /std:c++NN switch: +// // https://devblogs.microsoft.com/cppblog/msvc-now-correctly-reports-__cplusplus/ +// +// The value __cplusplus ought to have is available in _MSVC_LANG since +// Visual Studio 2015 Update 3: +// +// https://learn.microsoft.com/en-us/cpp/preprocessor/predefined-macros +// +// This was also the first MSVC version to support C++14 so we can't use the +// value of either __cplusplus or _MSVC_LANG to quickly rule out MSVC having +// C++11 or C++14 support, but we can check _MSVC_LANG for C++17 and later. #elif __cplusplus < 201103L && !defined _MSC_VER #error "This is not a C++11 compiler" @@ -15607,7 +15663,17 @@ else $as_nop // MSVC always sets __cplusplus to 199711L in older versions; newer versions // only set it correctly if /Zc:__cplusplus is specified as well as a // /std:c++NN switch: +// // https://devblogs.microsoft.com/cppblog/msvc-now-correctly-reports-__cplusplus/ +// +// The value __cplusplus ought to have is available in _MSVC_LANG since +// Visual Studio 2015 Update 3: +// +// https://learn.microsoft.com/en-us/cpp/preprocessor/predefined-macros +// +// This was also the first MSVC version to support C++14 so we can't use the +// value of either __cplusplus or _MSVC_LANG to quickly rule out MSVC having +// C++11 or C++14 support, but we can check _MSVC_LANG for C++17 and later. #elif __cplusplus < 201103L && !defined _MSC_VER #error "This is not a C++11 compiler" @@ -16094,15 +16160,18 @@ if test -z "$PERL" then : as_fn_error $? "perl is needed for compiling libsidplayfp" "$LINENO" 5 fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether C++ compiler accepts -fvisibility=hidden -fvisibility-inlines-hidden" >&5 -printf %s "checking whether C++ compiler accepts -fvisibility=hidden -fvisibility-inlines-hidden... " >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the C++ compiler accepts -fvisibility=hidden -fvisibility-inlines-hidden" >&5 +printf %s "checking whether the C++ compiler accepts -fvisibility=hidden -fvisibility-inlines-hidden... " >&6; } if test ${ax_cv_check_cxxflags___fvisibility_hidden__fvisibility_inlines_hidden+y} then : printf %s "(cached) " >&6 else $as_nop ax_check_save_flags=$CXXFLAGS - CXXFLAGS="$CXXFLAGS -fvisibility=hidden -fvisibility-inlines-hidden" + if test x"$GXX" = xyes ; then + add_gnu_werror="-Werror" + fi + CXXFLAGS="$CXXFLAGS -fvisibility=hidden -fvisibility-inlines-hidden $add_gnu_werror" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @@ -16822,7 +16891,17 @@ else $as_nop // MSVC always sets __cplusplus to 199711L in older versions; newer versions // only set it correctly if /Zc:__cplusplus is specified as well as a // /std:c++NN switch: +// // https://devblogs.microsoft.com/cppblog/msvc-now-correctly-reports-__cplusplus/ +// +// The value __cplusplus ought to have is available in _MSVC_LANG since +// Visual Studio 2015 Update 3: +// +// https://learn.microsoft.com/en-us/cpp/preprocessor/predefined-macros +// +// This was also the first MSVC version to support C++14 so we can't use the +// value of either __cplusplus or _MSVC_LANG to quickly rule out MSVC having +// C++11 or C++14 support, but we can check _MSVC_LANG for C++17 and later. #elif __cplusplus < 201103L && !defined _MSC_VER #error "This is not a C++11 compiler" @@ -17230,7 +17309,7 @@ namespace cxx14 #error "This is not a C++ compiler" -#elif __cplusplus < 201703L && !defined _MSC_VER +#elif (defined _MSVC_LANG ? _MSVC_LANG : __cplusplus) < 201703L #error "This is not a C++17 compiler" @@ -17596,7 +17675,7 @@ namespace cxx17 } // namespace cxx17 -#endif // __cplusplus < 201703L && !defined _MSC_VER +#endif // (defined _MSVC_LANG ? _MSVC_LANG : __cplusplus) < 201703L @@ -19334,7 +19413,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" -This file was extended by ocp $as_me 0.2.109, which was +This file was extended by ocp $as_me 3.0.0, which was generated by GNU Autoconf 2.71. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -19398,7 +19477,7 @@ ac_cs_config_escaped=`printf "%s\n" "$ac_cs_config" | sed "s/^ //; s/'/'\\\\\\\\ cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config='$ac_cs_config_escaped' ac_cs_version="\\ -ocp config.status 0.2.109 +ocp config.status 3.0.0 configured by $0, generated by GNU Autoconf 2.71, with options \\"\$ac_cs_config\\" diff --git a/configure.ac b/configure.ac index 5c1d3479..3e0eeb3f 100644 --- a/configure.ac +++ b/configure.ac @@ -1,6 +1,6 @@ -m4_define([MAJOR_VERSION], [0]) -m4_define([MINOR_VERSION], [2]) -m4_define([PATCH_VERSION], [109]) +m4_define([MAJOR_VERSION], [3]) +m4_define([MINOR_VERSION], [0]) +m4_define([PATCH_VERSION], [0]) AC_INIT([ocp],[MAJOR_VERSION.MINOR_VERSION.PATCH_VERSION],[stian.skjelstad@gmail.com]) AC_DEFINE_UNQUOTED(DLLVERSION, `printf 0x%04x%02x%02x MAJOR_VERSION MINOR_VERSION PATCH_VERSION`) AC_SUBST([MAJOR_VERSION], [MAJOR_VERSION]) diff --git a/ocp.spec b/ocp.spec index 127582b4..4f3f699c 100644 --- a/ocp.spec +++ b/ocp.spec @@ -1,7 +1,7 @@ # rpm spec file for RedHat / Fedora linux %define name ocp -%define version 0.2.107 +%define version 3.0.0 Name: %{name} Version: %{version} @@ -33,30 +33,34 @@ frontend, with some few optional features in graphical. Plays modules, sids, wave and mp3 %changelog - Changes from version 0.2.106 to 0.2.107: + Changes from version 0.2.109 to 3.0.0: - * libsidplayfp: - * Make it possible to tune parameters in real-time. - * Update libsidplayfp to the latest master. - * Plugin had an extra dirdbUnref() that should not be there. - * adplug: - * Update adplug to latest master. - * Scrolling the channel viewer could crash the player due to read of out-of-bound memory. - * The wrapper OPL class OCP uses had some minor problems: - * In OPL3 mode, if a channel was in 4-OP mode, the second half would always muted. - * In OPL3 mode, if a channel was in 4-OP mode, you could mute the second half of the channel (in addition to the problem mentioned above). - * When a channel is going in/out of 4-OP mode, mute was not consistent. - * Refactor and use file-caching. - * Add compression hint to the fie API, solid files should be scanned directly. - * Differentiate unread (files not scanned) and files were the file content turned out to be unknown. Speeds up the file browser, especially if there are archives present. - * mingw: - * Latest version of packages OCP depends on. - * Enable optimization (needed for static inline functions to work as expected). - * Location of ocp.ini did not match the actual install. - * ISO/TOC - Audio CDs could be unable to play after being looked up in the online discid-database. - * Update libancient filter to match upto libancient master (needs matching support from host operating system for them to work). - * Add support for *.RPG archive file from "Official Hamster Republic Role Playing Game Construction Engine", and *.BAM that in game data files as stored as *.1 *.2 *.3 etc. - * Potential hang-bug in UDF (CDROM DVD image files) parser. + * Update external libraries for mingw build to latest versions. + * Add more magic numbers for up and comming version of ancient (decompression library for solid files). + * SetMode() did not have paremeters defined in the prototype, not all users had parameters defined. Caused crashes one some combination of mode changes. + * Update to latest version of libsidplayfp + * Update to latest version of adplug + * Add modland.com support directly from the file browser using a local copy of the file-list provided by modland.com. + * Speed up filebrowser if an earlier scanned .tar.gz now has unscanned modules. The archive is not persistent open due to caching. + * XM files would smash the stack on big-endian due to to loops had counter-limits in reverse order in endian-reversal code. + * MacOS/CoreAudio: Add missing mutex locking in two API functions. + * SDL/SDL2 audio: Add missing mutex locking in two API functions. + * SDL2 audio: Use SDL_LockAudioDevice, SDL_UnlockAudioDevice and SDL_CloseAudioDevice SDL 2.x functions instead of legacy 1.x functions. + * Do not attempt to divide by zero, if a song is reported as zero long. + * Logic for buffersize in playtimidity (MIDI files) was not working as expected, especially on Windows. + * If a file was unable to be accessed, pressing ENTER on it would cause a NULL-pointer dereference (Problem introduced in v0.2.102, adding support for ancient) + * Attempting to load a defective S3M file could trigger two different issues. Do not cal mcpSet(), since we have not initialized the mcp device yet, and the que variable was no reset on to NULL after free causing a double free in this special use case. + * When adding a directory-tree to the playlist, group the files by their owning directory, and sort each group of files alphabetically (strcasecmp). + * Detect Sidplayer files as playable. + * modland.com stores "Atari Digi-Mix" as *.mix instead of *.ym, so add that file-extension. + * Add FEST as a valid 4-channel signature + * Add "Atari STe/Falcon, Octalyser" CD61 and CD81 signatures + * Add "M&K!" as a valid MOD signature. These files are likely "His Master's Noise" + * Add support for Atari Falcon, Digital Tracker (MOD) files. + * Avoid double free(), could occure if trying to load an invalid MOD file + * Adjust MIME database, multiple of the magic searches were too aggressive. + * detecting .BAM files with .[0-9][0-9][0-9] filenames + * Remove adplugdb->wipe() call, it is not for freeing memory %prep %setup -q -n %{name}-%{version}