Hello community,

here is the log from the commit of package libmodplug for openSUSE:11.3
checked in at Tue Aug 16 17:32:38 CEST 2011.



--------
--- old-versions/11.3/UPDATES/all/libmodplug/libmodplug.changes 2011-05-25 
17:28:45.000000000 +0200
+++ 11.3/libmodplug/libmodplug.changes  2011-08-08 20:34:23.000000000 +0200
@@ -1,0 +2,13 @@
+Mon Aug  8 20:08:13 CEST 2011 - [email protected]
+
+- Update to version 0.8.8.4 (bnc#710726):
+  * Improve timidity.cfg parsing capability
+  * Add source command capability in timidity.cfg
+    (useful for debian default)
+  * Fix integer overflow in WAV reader (SA45131/A)
+  * Fix S3M stack overflow possibility (SA45131/B)
+  * Bound seeking and reading in PAT files
+  * Fix AMS/AMSv2 and DSM too large by one (SA45131/C)
+  * Use bmpvalues in Octamed files when calcuting default tempo
+
+-------------------------------------------------------------------

calling whatdependson for 11.3-i586


Old:
----
  libmodplug-0.8.8.3.tar.bz2

New:
----
  libmodplug-0.8.8.4.tar.bz2

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ libmodplug.spec ++++++
--- /var/tmp/diff_new_pack.bLlieX/_old  2011-08-16 17:30:19.000000000 +0200
+++ /var/tmp/diff_new_pack.bLlieX/_new  2011-08-16 17:30:19.000000000 +0200
@@ -19,7 +19,7 @@
 
 Name:           libmodplug
 Summary:        A MOD playing library
-Version:        0.8.8.3
+Version:        0.8.8.4
 Release:        2.<RELEASE2>
 Group:          System/Libraries
 License:        Public Domain

++++++ libmodplug-0.8.8.3.tar.bz2 -> libmodplug-0.8.8.4.tar.bz2 ++++++
++++ 12863 lines of diff (skipped)
++++    retrying with extended exclude list
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/libmodplug-0.8.8.3/INSTALL new/libmodplug-0.8.8.4/INSTALL
--- old/libmodplug-0.8.8.3/INSTALL      2009-05-10 05:05:27.000000000 +0200
+++ new/libmodplug-0.8.8.4/INSTALL      2011-07-17 14:52:38.000000000 +0200
@@ -1,3 +1,365 @@
-(1) ./configure
-(2) make
-(3) su -c "make install"
+Installation Instructions
+*************************
+
+Copyright (C) 1994, 1995, 1996, 1999, 2000, 2001, 2002, 2004, 2005,
+2006, 2007, 2008, 2009 Free Software Foundation, Inc.
+
+   Copying and distribution of this file, with or without modification,
+are permitted in any medium without royalty provided the copyright
+notice and this notice are preserved.  This file is offered as-is,
+without warranty of any kind.
+
+Basic Installation
+==================
+
+   Briefly, the shell commands `./configure; make; make install' should
+configure, build, and install this package.  The following
+more-detailed instructions are generic; see the `README' file for
+instructions specific to this package.  Some packages provide this
+`INSTALL' file but do not implement all of the features documented
+below.  The lack of an optional feature in a given package is not
+necessarily a bug.  More recommendations for GNU packages can be found
+in *note Makefile Conventions: (standards)Makefile Conventions.
+
+   The `configure' shell script attempts to guess correct values for
+various system-dependent variables used during compilation.  It uses
+those values to create a `Makefile' in each directory of the package.
+It may also create one or more `.h' files containing system-dependent
+definitions.  Finally, it creates a shell script `config.status' that
+you can run in the future to recreate the current configuration, and a
+file `config.log' containing compiler output (useful mainly for
+debugging `configure').
+
+   It can also use an optional file (typically called `config.cache'
+and enabled with `--cache-file=config.cache' or simply `-C') that saves
+the results of its tests to speed up reconfiguring.  Caching is
+disabled by default to prevent problems with accidental use of stale
+cache files.
+
+   If you need to do unusual things to compile the package, please try
+to figure out how `configure' could check whether to do them, and mail
+diffs or instructions to the address given in the `README' so they can
+be considered for the next release.  If you are using the cache, and at
+some point `config.cache' contains results you don't want to keep, you
+may remove or edit it.
+
+   The file `configure.ac' (or `configure.in') is used to create
+`configure' by a program called `autoconf'.  You need `configure.ac' if
+you want to change it or regenerate `configure' using a newer version
+of `autoconf'.
+
+   The simplest way to compile this package is:
+
+  1. `cd' to the directory containing the package's source code and type
+     `./configure' to configure the package for your system.
+
+     Running `configure' might take a while.  While running, it prints
+     some messages telling which features it is checking for.
+
+  2. Type `make' to compile the package.
+
+  3. Optionally, type `make check' to run any self-tests that come with
+     the package, generally using the just-built uninstalled binaries.
+
+  4. Type `make install' to install the programs and any data files and
+     documentation.  When installing into a prefix owned by root, it is
+     recommended that the package be configured and built as a regular
+     user, and only the `make install' phase executed with root
+     privileges.
+
+  5. Optionally, type `make installcheck' to repeat any self-tests, but
+     this time using the binaries in their final installed location.
+     This target does not install anything.  Running this target as a
+     regular user, particularly if the prior `make install' required
+     root privileges, verifies that the installation completed
+     correctly.
+
+  6. You can remove the program binaries and object files from the
+     source code directory by typing `make clean'.  To also remove the
+     files that `configure' created (so you can compile the package for
+     a different kind of computer), type `make distclean'.  There is
+     also a `make maintainer-clean' target, but that is intended mainly
+     for the package's developers.  If you use it, you may have to get
+     all sorts of other programs in order to regenerate files that came
+     with the distribution.
+
+  7. Often, you can also type `make uninstall' to remove the installed
+     files again.  In practice, not all packages have tested that
+     uninstallation works correctly, even though it is required by the
+     GNU Coding Standards.
+
+  8. Some packages, particularly those that use Automake, provide `make
+     distcheck', which can by used by developers to test that all other
+     targets like `make install' and `make uninstall' work correctly.
+     This target is generally not run by end users.
+
+Compilers and Options
+=====================
+
+   Some systems require unusual options for compilation or linking that
+the `configure' script does not know about.  Run `./configure --help'
+for details on some of the pertinent environment variables.
+
+   You can give `configure' initial values for configuration parameters
+by setting variables in the command line or in the environment.  Here
+is an example:
+
+     ./configure CC=c99 CFLAGS=-g LIBS=-lposix
+
+   *Note Defining Variables::, for more details.
+
+Compiling For Multiple Architectures
+====================================
+
+   You can compile the package for more than one kind of computer at the
+same time, by placing the object files for each architecture in their
+own directory.  To do this, you can use GNU `make'.  `cd' to the
+directory where you want the object files and executables to go and run
+the `configure' script.  `configure' automatically checks for the
+source code in the directory that `configure' is in and in `..'.  This
+is known as a "VPATH" build.
+
+   With a non-GNU `make', it is safer to compile the package for one
+architecture at a time in the source code directory.  After you have
+installed the package for one architecture, use `make distclean' before
+reconfiguring for another architecture.
+
+   On MacOS X 10.5 and later systems, you can create libraries and
+executables that work on multiple system types--known as "fat" or
+"universal" binaries--by specifying multiple `-arch' options to the
+compiler but only a single `-arch' option to the preprocessor.  Like
+this:
+
+     ./configure CC="gcc -arch i386 -arch x86_64 -arch ppc -arch ppc64" \
+                 CXX="g++ -arch i386 -arch x86_64 -arch ppc -arch ppc64" \
+                 CPP="gcc -E" CXXCPP="g++ -E"
+
+   This is not guaranteed to produce working output in all cases, you
+may have to build one architecture at a time and combine the results
+using the `lipo' tool if you have problems.
+
+Installation Names
+==================
+
+   By default, `make install' installs the package's commands under
+`/usr/local/bin', include files under `/usr/local/include', etc.  You
+can specify an installation prefix other than `/usr/local' by giving
+`configure' the option `--prefix=PREFIX', where PREFIX must be an
+absolute file name.
+
+   You can specify separate installation prefixes for
+architecture-specific files and architecture-independent files.  If you
+pass the option `--exec-prefix=PREFIX' to `configure', the package uses
+PREFIX as the prefix for installing programs and libraries.
+Documentation and other data files still use the regular prefix.
+
+   In addition, if you use an unusual directory layout you can give
+options like `--bindir=DIR' to specify different values for particular
+kinds of files.  Run `configure --help' for a list of the directories
+you can set and what kinds of files go in them.  In general, the
+default for these options is expressed in terms of `${prefix}', so that
+specifying just `--prefix' will affect all of the other directory
+specifications that were not explicitly provided.
+
+   The most portable way to affect installation locations is to pass the
+correct locations to `configure'; however, many packages provide one or
+both of the following shortcuts of passing variable assignments to the
+`make install' command line to change installation locations without
+having to reconfigure or recompile.
+
+   The first method involves providing an override variable for each
+affected directory.  For example, `make install
+prefix=/alternate/directory' will choose an alternate location for all
+directory configuration variables that were expressed in terms of
+`${prefix}'.  Any directories that were specified during `configure',
+but not in terms of `${prefix}', must each be overridden at install
+time for the entire installation to be relocated.  The approach of
+makefile variable overrides for each directory variable is required by
+the GNU Coding Standards, and ideally causes no recompilation.
+However, some platforms have known limitations with the semantics of
+shared libraries that end up requiring recompilation when using this
+method, particularly noticeable in packages that use GNU Libtool.
+
+   The second method involves providing the `DESTDIR' variable.  For
+example, `make install DESTDIR=/alternate/directory' will prepend
+`/alternate/directory' before all installation names.  The approach of
+`DESTDIR' overrides is not required by the GNU Coding Standards, and
+does not work on platforms that have drive letters.  On the other hand,
+it does better at avoiding recompilation issues, and works well even
+when some directory options were not specified in terms of `${prefix}'
+at `configure' time.
+
+Optional Features
+=================
+
+   If the package supports it, you can cause programs to be installed
+with an extra prefix or suffix on their names by giving `configure' the
+option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'.
+
+   Some packages pay attention to `--enable-FEATURE' options to
+`configure', where FEATURE indicates an optional part of the package.
+They may also pay attention to `--with-PACKAGE' options, where PACKAGE
+is something like `gnu-as' or `x' (for the X Window System).  The
+`README' should mention any `--enable-' and `--with-' options that the
+package recognizes.
+
+   For packages that use the X Window System, `configure' can usually
+find the X include and library files automatically, but if it doesn't,
+you can use the `configure' options `--x-includes=DIR' and
+`--x-libraries=DIR' to specify their locations.
+
+   Some packages offer the ability to configure how verbose the
+execution of `make' will be.  For these packages, running `./configure
+--enable-silent-rules' sets the default to minimal output, which can be
+overridden with `make V=1'; while running `./configure
+--disable-silent-rules' sets the default to verbose, which can be
+overridden with `make V=0'.
+
+Particular systems
+==================
+
+   On HP-UX, the default C compiler is not ANSI C compatible.  If GNU
+CC is not installed, it is recommended to use the following options in
+order to use an ANSI C compiler:
+
+     ./configure CC="cc -Ae -D_XOPEN_SOURCE=500"
+
+and if that doesn't work, install pre-built binaries of GCC for HP-UX.
+
+   On OSF/1 a.k.a. Tru64, some versions of the default C compiler cannot
+parse its `<wchar.h>' header file.  The option `-nodtk' can be used as
+a workaround.  If GNU CC is not installed, it is therefore recommended
+to try
+
+     ./configure CC="cc"
+
+and if that doesn't work, try
+
+     ./configure CC="cc -nodtk"
+
+   On Solaris, don't put `/usr/ucb' early in your `PATH'.  This
+directory contains several dysfunctional programs; working variants of
+these programs are available in `/usr/bin'.  So, if you need `/usr/ucb'
+in your `PATH', put it _after_ `/usr/bin'.
+
+   On Haiku, software installed for all users goes in `/boot/common',
+not `/usr/local'.  It is recommended to use the following options:
+
+     ./configure --prefix=/boot/common
+
+Specifying the System Type
+==========================
+
+   There may be some features `configure' cannot figure out
+automatically, but needs to determine by the type of machine the package
+will run on.  Usually, assuming the package is built to be run on the
+_same_ architectures, `configure' can figure that out, but if it prints
+a message saying it cannot guess the machine type, give it the
+`--build=TYPE' option.  TYPE can either be a short name for the system
+type, such as `sun4', or a canonical name which has the form:
+
+     CPU-COMPANY-SYSTEM
+
+where SYSTEM can have one of these forms:
+
+     OS
+     KERNEL-OS
+
+   See the file `config.sub' for the possible values of each field.  If
+`config.sub' isn't included in this package, then this package doesn't
+need to know the machine type.
+
+   If you are _building_ compiler tools for cross-compiling, you should
+use the option `--target=TYPE' to select the type of system they will
+produce code for.
+
+   If you want to _use_ a cross compiler, that generates code for a
+platform different from the build platform, you should specify the
+"host" platform (i.e., that on which the generated programs will
+eventually be run) with `--host=TYPE'.
+
+Sharing Defaults
+================
+
+   If you want to set default values for `configure' scripts to share,
+you can create a site shell script called `config.site' that gives
+default values for variables like `CC', `cache_file', and `prefix'.
+`configure' looks for `PREFIX/share/config.site' if it exists, then
+`PREFIX/etc/config.site' if it exists.  Or, you can set the
+`CONFIG_SITE' environment variable to the location of the site script.
+A warning: not all `configure' scripts look for a site script.
+
+Defining Variables
+==================
+
+   Variables not defined in a site shell script can be set in the
+environment passed to `configure'.  However, some packages may run
+configure again during the build, and the customized values of these
+variables may be lost.  In order to avoid this problem, you should set
+them in the `configure' command line, using `VAR=value'.  For example:
+
+     ./configure CC=/usr/local2/bin/gcc
+
+causes the specified `gcc' to be used as the C compiler (unless it is
+overridden in the site shell script).
+
+Unfortunately, this technique does not work for `CONFIG_SHELL' due to
+an Autoconf bug.  Until the bug is fixed you can use this workaround:
+
+     CONFIG_SHELL=/bin/bash /bin/bash ./configure CONFIG_SHELL=/bin/bash
+
+`configure' Invocation
+======================
+
+   `configure' recognizes the following options to control how it
+operates.
+
+`--help'
+`-h'
+     Print a summary of all of the options to `configure', and exit.
+
+`--help=short'
+`--help=recursive'
+     Print a summary of the options unique to this package's
+     `configure', and exit.  The `short' variant lists options used
+     only in the top level, while the `recursive' variant lists options
+     also present in any nested packages.
+
+`--version'
+`-V'
+     Print the version of Autoconf used to generate the `configure'
+     script, and exit.
+
+`--cache-file=FILE'
+     Enable the cache: use and save the results of the tests in FILE,
+     traditionally `config.cache'.  FILE defaults to `/dev/null' to
+     disable caching.
+
+`--config-cache'
+`-C'
+     Alias for `--cache-file=config.cache'.
+
+`--quiet'
+`--silent'
+`-q'
+     Do not print messages saying which checks are being made.  To
+     suppress all normal output, redirect it to `/dev/null' (any error
+     messages will still be shown).
+
+`--srcdir=DIR'
+     Look for the package's source code in directory DIR.  Usually
+     `configure' can determine that directory automatically.
+
+`--prefix=DIR'
+     Use DIR as the installation prefix.  *note Installation Names::
+     for more details, including other options available for fine-tuning
+     the installation locations.
+
+`--no-create'
+`-n'
+     Run the configure checks, but stop before creating any output
+     files.
+
+`configure' also accepts some other, not widely useful, options.  Run
+`configure --help' for more details.
+
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/libmodplug-0.8.8.3/configure.in new/libmodplug-0.8.8.4/configure.in
--- old/libmodplug-0.8.8.3/configure.in 2011-05-08 15:42:58.000000000 +0200
+++ new/libmodplug-0.8.8.4/configure.in 2011-07-18 01:55:51.000000000 +0200
@@ -3,7 +3,7 @@
 AC_PREREQ(2.63)
 AC_CONFIG_SRCDIR([Makefile.am])
 
-AM_INIT_AUTOMAKE(libmodplug, 0.8.8.3)
+AM_INIT_AUTOMAKE(libmodplug, 0.8.8.4)
 m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES])
 AC_CONFIG_HEADERS([src/config.h])
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/libmodplug-0.8.8.3/missing new/libmodplug-0.8.8.4/missing
--- old/libmodplug-0.8.8.3/missing      2009-05-10 05:05:27.000000000 +0200
+++ new/libmodplug-0.8.8.4/missing      2011-07-17 14:52:38.000000000 +0200
@@ -1,6 +1,10 @@
 #! /bin/sh
 # Common stub for a few missing GNU programs while installing.
-# Copyright (C) 1996, 1997, 1999, 2000, 2002 Free Software Foundation, Inc.
+
+scriptversion=2009-04-28.21; # UTC
+
+# Copyright (C) 1996, 1997, 1999, 2000, 2002, 2003, 2004, 2005, 2006,
+# 2008, 2009 Free Software Foundation, Inc.
 # Originally by Fran,cois Pinard <[email protected]>, 1996.
 
 # This program is free software; you can redistribute it and/or modify
@@ -14,9 +18,7 @@
 # GNU General Public License for more details.
 
 # You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
-# 02111-1307, USA.
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
 # As a special exception to the GNU General Public License, if you
 # distribute this file as part of a program that contains a
@@ -29,6 +31,8 @@
 fi
 
 run=:
+sed_output='s/.* --output[ =]\([^ ]*\).*/\1/p'
+sed_minuso='s/.* -o \([^ ]*\).*/\1/p'
 
 # In the cases where this matters, `missing' is being run in the
 # srcdir already.
@@ -38,18 +42,24 @@
   configure_ac=configure.in
 fi
 
-case "$1" in
+msg="missing on your system"
+
+case $1 in
 --run)
   # Try to run requested program, and just exit if it succeeds.
   run=
   shift
   "$@" && exit 0
+  # Exit code 63 means version mismatch.  This often happens
+  # when the user try to use an ancient version of a tool on
+  # a file that requires a minimum version.  In this case we
+  # we should proceed has if the program had been absent, or
+  # if --run hadn't been passed.
+  if test $? = 63; then
+    run=:
+    msg="probably too old"
+  fi
   ;;
-esac
-
-# If it does not exist, or fails to run (possibly an outdated version),
-# try to emulate it.
-case "$1" in
 
   -h|--h|--he|--hel|--help)
     echo "\
@@ -67,6 +77,7 @@
   aclocal      touch file \`aclocal.m4'
   autoconf     touch file \`configure'
   autoheader   touch file \`config.h.in'
+  autom4te     touch the output file, or create a stub one
   automake     touch all \`Makefile.in' files
   bison        create \`y.tab.[ch]', if possible, from existing .[ch]
   flex         create \`lex.yy.c', if possible, from existing .c
@@ -74,11 +85,18 @@
   lex          create \`lex.yy.c', if possible, from existing .c
   makeinfo     touch the output file
   tar          try tar, gnutar, gtar, then tar without non-portable flags
-  yacc         create \`y.tab.[ch]', if possible, from existing .[ch]"
+  yacc         create \`y.tab.[ch]', if possible, from existing .[ch]
+
+Version suffixes to PROGRAM as well as the prefixes \`gnu-', \`gnu', and
+\`g' are ignored when checking the name.
+
+Send bug reports to <[email protected]>."
+    exit $?
     ;;
 
   -v|--v|--ve|--ver|--vers|--versi|--versio|--version)
-    echo "missing 0.4 - GNU automake"
+    echo "missing $scriptversion (GNU Automake)"
+    exit $?
     ;;
 
   -*)
@@ -87,42 +105,69 @@
     exit 1
     ;;
 
-  aclocal*)
+esac
+
+# normalize program name to check for.
+program=`echo "$1" | sed '
+  s/^gnu-//; t
+  s/^gnu//; t
+  s/^g//; t'`
+
+# Now exit if we have it, but it failed.  Also exit now if we
+# don't have it and --version was passed (most likely to detect
+# the program).  This is about non-GNU programs, so use $1 not
+# $program.
+case $1 in
+  lex*|yacc*)
+    # Not GNU programs, they don't have --version.
+    ;;
+
+  tar*)
+    if test -n "$run"; then
+       echo 1>&2 "ERROR: \`tar' requires --run"
+       exit 1
+    elif test "x$2" = "x--version" || test "x$2" = "x--help"; then
+       exit 1
+    fi
+    ;;
+
+  *)
     if test -z "$run" && ($1 --version) > /dev/null 2>&1; then
        # We have it, but it failed.
        exit 1
+    elif test "x$2" = "x--version" || test "x$2" = "x--help"; then
+       # Could not run --version or --help.  This is probably someone
+       # running `$TOOL --version' or `$TOOL --help' to check whether
+       # $TOOL exists and not knowing $TOOL uses missing.
+       exit 1
     fi
+    ;;
+esac
 
+# If it does not exist, or fails to run (possibly an outdated version),
+# try to emulate it.
+case $program in
+  aclocal*)
     echo 1>&2 "\
-WARNING: \`$1' is missing on your system.  You should only need it if
+WARNING: \`$1' is $msg.  You should only need it if
          you modified \`acinclude.m4' or \`${configure_ac}'.  You might want
          to install the \`Automake' and \`Perl' packages.  Grab them from
          any GNU archive site."
     touch aclocal.m4
     ;;
 
-  autoconf)
-    if test -z "$run" && ($1 --version) > /dev/null 2>&1; then
-       # We have it, but it failed.
-       exit 1
-    fi
-
+  autoconf*)
     echo 1>&2 "\
-WARNING: \`$1' is missing on your system.  You should only need it if
+WARNING: \`$1' is $msg.  You should only need it if
          you modified \`${configure_ac}'.  You might want to install the
          \`Autoconf' and \`GNU m4' packages.  Grab them from any GNU
          archive site."
     touch configure
     ;;
 
-  autoheader)
-    if test -z "$run" && ($1 --version) > /dev/null 2>&1; then
-       # We have it, but it failed.
-       exit 1
-    fi
-
+  autoheader*)
     echo 1>&2 "\
-WARNING: \`$1' is missing on your system.  You should only need it if
+WARNING: \`$1' is $msg.  You should only need it if
          you modified \`acconfig.h' or \`${configure_ac}'.  You might want
          to install the \`Autoconf' and \`GNU m4' packages.  Grab them
          from any GNU archive site."
@@ -130,7 +175,7 @@
     test -z "$files" && files="config.h"
     touch_files=
     for f in $files; do
-      case "$f" in
+      case $f in
       *:*) touch_files="$touch_files "`echo "$f" |
                                       sed -e 's/^[^:]*://' -e 's/:.*//'`;;
       *) touch_files="$touch_files $f.in";;
@@ -140,13 +185,8 @@
     ;;
 
   automake*)
-    if test -z "$run" && ($1 --version) > /dev/null 2>&1; then
-       # We have it, but it failed.
-       exit 1
-    fi
-
     echo 1>&2 "\
-WARNING: \`$1' is missing on your system.  You should only need it if
+WARNING: \`$1' is $msg.  You should only need it if
          you modified \`Makefile.am', \`acinclude.m4' or \`${configure_ac}'.
          You might want to install the \`Automake' and \`Perl' packages.
          Grab them from any GNU archive site."
@@ -155,21 +195,16 @@
           while read f; do touch "$f"; done
     ;;
 
-  autom4te)
-    if test -z "$run" && ($1 --version) > /dev/null 2>&1; then
-       # We have it, but it failed.
-       exit 1
-    fi
-
+  autom4te*)
     echo 1>&2 "\
-WARNING: \`$1' is needed, and you do not seem to have it handy on your
-         system.  You might have modified some files without having the
+WARNING: \`$1' is needed, but is $msg.
+         You might have modified some files without having the
          proper tools for further handling them.
-         You can get \`$1Help2man' as part of \`Autoconf' from any GNU
+         You can get \`$1' as part of \`Autoconf' from any GNU
          archive site."
 
-    file=`echo "$*" | sed -n 's/.*--output[ =]*\([^ ]*\).*/\1/p'`
-    test -z "$file" && file=`echo "$*" | sed -n 's/.*-o[ ]*\([^ ]*\).*/\1/p'`
+    file=`echo "$*" | sed -n "$sed_output"`
+    test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"`
     if test -f "$file"; then
        touch $file
     else
@@ -183,111 +218,108 @@
     fi
     ;;
 
-  bison|yacc)
+  bison*|yacc*)
     echo 1>&2 "\
-WARNING: \`$1' is missing on your system.  You should only need it if
+WARNING: \`$1' $msg.  You should only need it if
          you modified a \`.y' file.  You may need the \`Bison' package
          in order for those modifications to take effect.  You can get
          \`Bison' from any GNU archive site."
     rm -f y.tab.c y.tab.h
-    if [ $# -ne 1 ]; then
+    if test $# -ne 1; then
         eval LASTARG="\${$#}"
-       case "$LASTARG" in
+       case $LASTARG in
        *.y)
            SRCFILE=`echo "$LASTARG" | sed 's/y$/c/'`
-           if [ -f "$SRCFILE" ]; then
+           if test -f "$SRCFILE"; then
                 cp "$SRCFILE" y.tab.c
            fi
            SRCFILE=`echo "$LASTARG" | sed 's/y$/h/'`
-           if [ -f "$SRCFILE" ]; then
+           if test -f "$SRCFILE"; then
                 cp "$SRCFILE" y.tab.h
            fi
          ;;
        esac
     fi
-    if [ ! -f y.tab.h ]; then
+    if test ! -f y.tab.h; then
        echo >y.tab.h
     fi
-    if [ ! -f y.tab.c ]; then
+    if test ! -f y.tab.c; then
        echo 'main() { return 0; }' >y.tab.c
     fi
     ;;
 
-  lex|flex)
+  lex*|flex*)
     echo 1>&2 "\
-WARNING: \`$1' is missing on your system.  You should only need it if
+WARNING: \`$1' is $msg.  You should only need it if
          you modified a \`.l' file.  You may need the \`Flex' package
          in order for those modifications to take effect.  You can get
          \`Flex' from any GNU archive site."
     rm -f lex.yy.c
-    if [ $# -ne 1 ]; then
+    if test $# -ne 1; then
         eval LASTARG="\${$#}"
-       case "$LASTARG" in
+       case $LASTARG in
        *.l)
            SRCFILE=`echo "$LASTARG" | sed 's/l$/c/'`
-           if [ -f "$SRCFILE" ]; then
+           if test -f "$SRCFILE"; then
                 cp "$SRCFILE" lex.yy.c
            fi
          ;;
        esac
     fi
-    if [ ! -f lex.yy.c ]; then
+    if test ! -f lex.yy.c; then
        echo 'main() { return 0; }' >lex.yy.c
     fi
     ;;
 
-  help2man)
-    if test -z "$run" && ($1 --version) > /dev/null 2>&1; then
-       # We have it, but it failed.
-       exit 1
-    fi
-
+  help2man*)
     echo 1>&2 "\
-WARNING: \`$1' is missing on your system.  You should only need it if
+WARNING: \`$1' is $msg.  You should only need it if
         you modified a dependency of a manual page.  You may need the
         \`Help2man' package in order for those modifications to take
         effect.  You can get \`Help2man' from any GNU archive site."
 
-    file=`echo "$*" | sed -n 's/.*-o \([^ ]*\).*/\1/p'`
-    if test -z "$file"; then
-       file=`echo "$*" | sed -n 's/.*--output=\([^ ]*\).*/\1/p'`
-    fi
-    if [ -f "$file" ]; then
+    file=`echo "$*" | sed -n "$sed_output"`
+    test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"`
+    if test -f "$file"; then
        touch $file
     else
        test -z "$file" || exec >$file
        echo ".ab help2man is required to generate this page"
-       exit 1
+       exit $?
     fi
     ;;
 
-  makeinfo)
-    if test -z "$run" && (makeinfo --version) > /dev/null 2>&1; then
-       # We have makeinfo, but it failed.
-       exit 1
-    fi
-
+  makeinfo*)
     echo 1>&2 "\
-WARNING: \`$1' is missing on your system.  You should only need it if
+WARNING: \`$1' is $msg.  You should only need it if
          you modified a \`.texi' or \`.texinfo' file, or any other file
          indirectly affecting the aspect of the manual.  The spurious
          call might also be the consequence of using a buggy \`make' (AIX,
          DU, IRIX).  You might want to install the \`Texinfo' package or
          the \`GNU make' package.  Grab either from any GNU archive site."
-    file=`echo "$*" | sed -n 's/.*-o \([^ ]*\).*/\1/p'`
+    # The file to touch is that specified with -o ...
+    file=`echo "$*" | sed -n "$sed_output"`
+    test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"`
     if test -z "$file"; then
-      file=`echo "$*" | sed 's/.* \([^ ]*\) *$/\1/'`
-      file=`sed -n '/^@setfilename/ { s/.* \([^ ]*\) *$/\1/; p; q; }' $file`
-    fi
+      # ... or it is the one specified with @setfilename ...
+      infile=`echo "$*" | sed 's/.* \([^ ]*\) *$/\1/'`
+      file=`sed -n '
+       /^@setfilename/{
+         s/.* \([^ ]*\) *$/\1/
+         p
+         q
+       }' $infile`
+      # ... or it is derived from the source name (dir/f.texi becomes f.info)
+      test -z "$file" && file=`echo "$infile" | sed 's,.*/,,;s,.[^.]*$,,'`.info
+    fi
+    # If the file does not exist, the user really needs makeinfo;
+    # let's fail without touching anything.
+    test -f $file || exit 1
     touch $file
     ;;
 
-  tar)
+  tar*)
     shift
-    if test -n "$run"; then
-      echo 1>&2 "ERROR: \`tar' requires --run"
-      exit 1
-    fi
 
     # We have already tried tar in the generic part.
     # Look for gnutar/gtar before invocation to avoid ugly error
@@ -300,13 +332,13 @@
     fi
     firstarg="$1"
     if shift; then
-       case "$firstarg" in
+       case $firstarg in
        *o*)
            firstarg=`echo "$firstarg" | sed s/o//`
            tar "$firstarg" "$@" && exit 0
            ;;
        esac
-       case "$firstarg" in
+       case $firstarg in
        *h*)
            firstarg=`echo "$firstarg" | sed s/h//`
            tar "$firstarg" "$@" && exit 0
@@ -323,10 +355,10 @@
 
   *)
     echo 1>&2 "\
-WARNING: \`$1' is needed, and you do not seem to have it handy on your
-         system.  You might have modified some files without having the
+WARNING: \`$1' is needed, and is $msg.
+         You might have modified some files without having the
          proper tools for further handling them.  Check the \`README' file,
-         it often tells you about the needed prerequirements for installing
+         it often tells you about the needed prerequisites for installing
          this package.  You may also peek at any GNU archive site, in case
          some other package would contain this missing \`$1' program."
     exit 1
@@ -334,3 +366,11 @@
 esac
 
 exit 0
+
+# Local variables:
+# eval: (add-hook 'write-file-hooks 'time-stamp)
+# time-stamp-start: "scriptversion="
+# time-stamp-format: "%:y-%02m-%02d.%02H"
+# time-stamp-time-zone: "UTC"
+# time-stamp-end: "; # UTC"
+# End:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/libmodplug-0.8.8.3/src/load_ams.cpp new/libmodplug-0.8.8.4/src/load_ams.cpp
--- old/libmodplug-0.8.8.3/src/load_ams.cpp     2009-05-10 05:05:27.000000000 
+0200
+++ new/libmodplug-0.8.8.4/src/load_ams.cpp     2011-07-25 00:21:24.000000000 
+0200
@@ -52,7 +52,7 @@
        
        if ((!lpStream) || (dwMemLength < 1024)) return FALSE;
        if ((pfh->verhi != 0x01) || (strncmp(pfh->szHeader, "Extreme", 7))
-        || (!pfh->patterns) || (!pfh->orders) || (!pfh->samples) || 
(pfh->samples > MAX_SAMPLES)
+        || (!pfh->patterns) || (!pfh->orders) || (!pfh->samples) || 
(pfh->samples >= MAX_SAMPLES)
         || (pfh->patterns > MAX_PATTERNS) || (pfh->orders > MAX_ORDERS))
        {
                return ReadAMS2(lpStream, dwMemLength);
@@ -321,7 +321,7 @@
        dwMemPos = pfh->titlelen + 8;
        psh = (AMS2SONGHEADER *)(lpStream + dwMemPos);
        if (((psh->version & 0xFF00) != 0x0200) || (!psh->instruments)
-        || (psh->instruments > MAX_INSTRUMENTS) || (!psh->patterns) || 
(!psh->orders)) return FALSE;
+        || (psh->instruments >= MAX_INSTRUMENTS) || (!psh->patterns) || 
(!psh->orders)) return FALSE;
        dwMemPos += sizeof(AMS2SONGHEADER);
        if (pfh->titlelen)
        {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/libmodplug-0.8.8.3/src/load_dsm.cpp new/libmodplug-0.8.8.4/src/load_dsm.cpp
--- old/libmodplug-0.8.8.3/src/load_dsm.cpp     2009-05-10 05:05:27.000000000 
+0200
+++ new/libmodplug-0.8.8.4/src/load_dsm.cpp     2011-07-19 15:19:56.000000000 
+0200
@@ -101,7 +101,7 @@
        if (m_nChannels < 4) m_nChannels = 4;
        if (m_nChannels > 16) m_nChannels = 16;
        m_nSamples = psong->numsmp;
-       if (m_nSamples > MAX_SAMPLES) m_nSamples = MAX_SAMPLES;
+       if (m_nSamples >= MAX_SAMPLES) m_nSamples = MAX_SAMPLES - 1;
        m_nDefaultSpeed = psong->speed;
        m_nDefaultTempo = psong->bpm;
        m_nDefaultGlobalVolume = psong->globalvol << 2;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/libmodplug-0.8.8.3/src/load_med.cpp new/libmodplug-0.8.8.4/src/load_med.cpp
--- old/libmodplug-0.8.8.3/src/load_med.cpp     2011-05-01 05:34:21.000000000 
+0200
+++ new/libmodplug-0.8.8.4/src/load_med.cpp     2011-08-04 13:58:55.000000000 
+0200
@@ -16,6 +16,10 @@
 
 //////////////////////////////////////////////////////////
 // OctaMed MED file support (import only)
+//
+// Lookup table for bpm values.
+static const BYTE bpmvals[10] = { 179,164,152,141,131,123,116,110,104,99 };
+
 
 // flags
 #define        MMD_FLAG_FILTERON       0x1
@@ -265,8 +269,6 @@
 static void MedConvert(MODCOMMAND *p, const MMD0SONGHEADER *pmsh)
 //---------------------------------------------------------------
 {
-       const BYTE bpmvals[9] = { 179,164,152,141,131,123,116,110,104};
-
        UINT command = p->command;
        UINT param = p->param;
        switch(command)
@@ -587,7 +589,12 @@
        #endif
        } else
        {
-               deftempo = _muldiv(deftempo, 5*715909, 2*474326);
+               if (pmsh->flags & MMD_FLAG_8CHANNEL && deftempo > 0 && deftempo 
<= 10)
+               {
+                       deftempo = bpmvals[deftempo-1];
+               } else {
+                       deftempo = _muldiv(deftempo, 5*715909, 2*474326);
+               }
        #ifdef MED_LOG
                Log("oldtempo: %3d bpm (bpm=%3d)\n", deftempo, 
bswapBE16(pmsh->deftempo));
        #endif
@@ -684,11 +691,11 @@
        if (pmex)
        {
                // Channel Split
-               if ((m_nChannels == 4) && (pmsh->flags & 0x40))
+               if ((m_nChannels == 4) && (pmsh->flags & MMD_FLAG_8CHANNEL))
                {
                        for (UINT i8ch=0; i8ch<4; i8ch++)
                        {
-                               if (pmex->channelsplit[i8ch]) m_nChannels++;
+                               if (pmex->channelsplit[i8ch]) --m_nChannels;
                        }
                }
                // Song Comments
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/libmodplug-0.8.8.3/src/load_pat.cpp new/libmodplug-0.8.8.4/src/load_pat.cpp
--- old/libmodplug-0.8.8.3/src/load_pat.cpp     2011-05-08 16:44:04.000000000 
+0200
+++ new/libmodplug-0.8.8.4/src/load_pat.cpp     2011-07-25 00:17:40.000000000 
+0200
@@ -67,7 +67,6 @@
 
 // 128 gm and 63 drum
 #define MAXSMP                         191
-static int isabspath = 0;
 static char midipat[MAXSMP][128];
 static char pathforpat[128];
 static char timiditycfg[128];
@@ -323,6 +322,7 @@
        char *mm;
        int sz;
        int pos;
+       int error;
 } MMFILE;
 
 static long mmftell(MMFILE *mmfile)
@@ -332,38 +332,60 @@
 
 static void mmfseek(MMFILE *mmfile, long p, int whence)
 {
+       int newpos = mmfile->pos;
        switch(whence) {
                case SEEK_SET:
-                       mmfile->pos = p;
+                       newpos = p;
                        break;
                case SEEK_CUR:
-                       mmfile->pos += p;
+                       newpos += p;
                        break;
                case SEEK_END:
-                       mmfile->pos = mmfile->sz + p;
+                       newpos = mmfile->sz + p;
                        break;
        }
+       if (newpos < mmfile->sz)
+               mmfile->pos = newpos;
+       else {
+               mmfile->error = 1;
+//             printf("WARNING: seeking too far\n");
+       }
 }
 
 static void mmreadUBYTES(BYTE *buf, long sz, MMFILE *mmfile)
 {
+       // do not overread.
+       if (sz > mmfile->sz - mmfile->pos)
+               sz = mmfile->sz - mmfile->pos;
        memcpy(buf, &mmfile->mm[mmfile->pos], sz);
        mmfile->pos += sz;
 }
 
 static void mmreadSBYTES(char *buf, long sz, MMFILE *mmfile)
 {
+       // do not overread.
+       if (sz > mmfile->sz - mmfile->pos)
+               sz = mmfile->sz - mmfile->pos;
        memcpy(buf, &mmfile->mm[mmfile->pos], sz);
        mmfile->pos += sz;
 }
 
 #endif
 
+long _mm_getfsize(MMSTREAM *mmpat) {
+       long fsize;
+       _mm_fseek(mmpat, 0L, SEEK_END);
+       fsize = _mm_ftell(mmpat);
+       _mm_fseek(mmpat, 0L, SEEK_SET);
+       return(fsize);
+}
+
 void pat_init_patnames(void)
 {
-       int i,j, pfnlen, ndir;
+       int z, i, nsources, isdrumset, nskip, pfnlen;
        char *p, *q;
        char line[PATH_MAX];
+       char cfgsources[5][PATH_MAX] = {{0}, {0}, {0}, {0}, {0}};
        MMSTREAM *mmcfg;
        strcpy(pathforpat, PATHFORPAT);
        strcpy(timiditycfg, TIMIDITYCFG);
@@ -374,69 +396,88 @@
                strcat(timiditycfg,"/timidity.cfg");
                strcat(pathforpat,"/instruments");
        }
-       mmcfg = _mm_fopen(timiditycfg,"r");
+       strncpy(cfgsources[0], timiditycfg, PATH_MAX);
+       nsources = 1;
+
        for( i=0; i<MAXSMP; i++ )       midipat[i][0] = '\0';
-       if( !mmcfg ) {
-               pat_message("can not open %s, use environment variable " 
PAT_ENV_PATH2CFG " for the directory", timiditycfg);
-       }
-       else {
-               // read in bank 0 and drum patches
-               j = 0;
-               _mm_fgets(mmcfg, line, PATH_MAX);
-               while( !_mm_feof(mmcfg) ) {
-                       if( isdigit(line[0]) || (line[0] == '\t' && 
isdigit(line[1])) ) {
-                               i = atoi(line);
-                               if( i < MAXSMP && i >= 0 ) {
-                                       p = strchr(line,'/') + 1;
-                                       if(j) 
-                                               q = midipat[pat_gm_drumnr(i)-1];
-                                       else
-                                               q = midipat[i];
+
+       for ( z=0; z<5; z++ ) {
+               if (cfgsources[z][0] == 0) continue;
+               mmcfg = _mm_fopen(cfgsources[z],"r");
+               if( !mmcfg ) {
+                       pat_message("can not open %s, use environment variable 
" PAT_ENV_PATH2CFG " for the directory", cfgsources[z]);
+               }
+               else {
+                       // read in bank 0 and drum patches
+                       isdrumset = 0;
+                       _mm_fgets(mmcfg, line, PATH_MAX);
+                       while( !_mm_feof(mmcfg) ) {
+                       if( isdigit(line[0]) || (isblank(line[0]) && 
isdigit(line[1])) ) {
+                               p = line;
+                               // get pat number
+                               while ( isspace(*p) ) p ++;
+                               i = atoi(p);
+                               while ( isdigit(*p) ) p ++;
+                               while ( isspace(*p) ) p ++;
+                               // get pat file name
+                               if( *p && i < MAXSMP && i >= 0 && *p != '#' ) {
+                                       q = isdrumset ? 
midipat[pat_gm_drumnr(i)-1] : midipat[i];
                                        pfnlen = 0;
-                                       ndir = 0;
-                                       while( *p && !isspace(*p) && pfnlen < 
128 ) {
-                                               if (*p == DIRDELIM) ndir++;
+                                       while( *p && !isspace(*p) && *p != '#' 
&& pfnlen < 128 ) {
                                                pfnlen ++;
                                                *q++ = *p++;
                                        }
-                                       if (ndir > 2) isabspath = 1;
                                        if( isblank(*p) && *(p+1) != '#' && 
pfnlen < 128 ) {
-                                               *q++ = ':';
+                                               *q++ = ':'; pfnlen ++;
                                                while( isspace(*p) ) {
                                                        while( isspace(*p) ) 
p++;
                                                        if ( *p == '#' ) { // 
comment
-                                                               
+
                                                        } else while( *p && 
!isspace(*p) && pfnlen < 128 ) {
                                                                pfnlen ++;
                                                                *q++ = *p++;
                                                        }
-                                                       if( isspace(*p) ) *q++ 
= ' ';
+                                                       if( isspace(*p) ) { 
*q++ = ' '; pfnlen++; }
                                                }
                                        }
                                        *q++ = '\0';
                                }
                        }
-                       if( !strncmp(line,"drumset",7) ) j = 1;
+                       if( !strncmp(line,"drumset",7) ) isdrumset = 1;
+                       if( !strncmp(line,"source",6) && nsources < 5 ) {
+                               q = cfgsources[nsources];
+                               p = &line[7];
+                               while ( isspace(*p) ) p ++;
+                               pfnlen = 0;
+                               while ( *p && *p != '#' && !isspace(*p) && 
pfnlen < 128 ) {
+                                       pfnlen ++;
+                                       *q++ = *p++;
+                               }
+                               *q = 0; // null termination
+                               nsources++;
+                       }
                        _mm_fgets(mmcfg, line, PATH_MAX);
+
+                       } /* end file parsing */
+                       _mm_fclose(mmcfg);
                }
-               _mm_fclose(mmcfg);
        }
        q = midipat[0];
-       j = 0;
-       // make all empty patches duplicate the previous valid one.
+       nskip = 0;
+       // make all empty patches duplicates the previous valid one.
        for( i=0; i<MAXSMP; i++ )       {
                if( midipat[i][0] ) q = midipat[i];
                else {
                        if( midipat[i] != q)
-                               strcpy(midipat[i],q);
-                       if( midipat[i][0] == '\0' ) j++;
+                               strcpy(midipat[i], q);
+                       if( midipat[i][0] == '\0' ) nskip++;
                }
        }
-       if( j ) {
+       if( nskip ) {
                for( i=MAXSMP; i-- > 0; )       {
                        if( midipat[i][0] ) q = midipat[i];
                        else if( midipat[i] != q )
-                               strcpy(midipat[i],q);
+                               strcpy(midipat[i], q);
                }
        }
 }
@@ -444,14 +485,16 @@
 static char *pat_build_path(char *fname, int pat)
 {
        char *ps;
-       ps = strrchr(midipat[pat], ':');
-       
+       char *patfile = midipat[pat];
+       int isabspath = (patfile[0] == '/');
+       if ( isabspath ) patfile ++;
+       ps = strrchr(patfile, ':');
        if( ps ) {
-               sprintf(fname, "%s%c%s", isabspath ? "" : pathforpat, DIRDELIM, 
midipat[pat]);
+               sprintf(fname, "%s%c%s", isabspath ? "" : pathforpat, DIRDELIM, 
patfile);
                strcpy(strrchr(fname, ':'), ".pat");
                return ps;
        }
-       sprintf(fname, "%s%c%s.pat", isabspath ? "" : pathforpat, DIRDELIM, 
midipat[pat]);
+       sprintf(fname, "%s%c%s.pat", isabspath ? "" : pathforpat, DIRDELIM, 
patfile);
        return 0;
 }
 
@@ -544,6 +587,10 @@
                        for( i=1; i<layer; i++ ) {
                                mmreadUBYTES((BYTE *)hw, sizeof(WaveHeader), 
mmpat);
                                mmfseek(mmpat, hw->wave_size, SEEK_CUR);
+                               if ( mmpat->error ) {
+                                       hw->wave_size = 0;
+                                       return;
+                               }
                        }
                }
                else {
@@ -578,13 +625,17 @@
 static int pat_readpat_attr(int pat, WaveHeader *hw, int layer)
 {
        char fname[128];
+       int fsize;
        MMSTREAM *mmpat;
        pat_build_path(fname, pat);
        mmpat = _mm_fopen(fname, "r");
        if( !mmpat )
                return 0;
+       fsize = _mm_getfsize(mmpat);
        pat_read_waveheader(mmpat, hw, layer);
        _mm_fclose(mmpat);
+       if (hw->wave_size > fsize)
+               return 0;
        return 1;
 }
 
@@ -603,7 +654,7 @@
                        for( i=0; i<n; i++ ) {
                                v = (((int)(*pw) - 0x8000) * amp) / 100;
                                if( v < -0x8000 ) v = -0x8000;
-                               if( v >  0x7fff ) v =  0x7fff; 
+                               if( v >  0x7fff ) v =  0x7fff;
                                *pw++ = v + 0x8000;
                        }
                }
@@ -612,7 +663,7 @@
                        for( i=0; i<n; i++ ) {
                                v = ((*pi) * amp) / 100;
                                if( v < -0x8000 ) v = -0x8000;
-                               if( v >  0x7fff ) v =  0x7fff; 
+                               if( v >  0x7fff ) v =  0x7fff;
                                *pi++ = v;
                        }
                }
@@ -797,7 +848,7 @@
     PATHANDLE   *retval;
 #ifdef NEWMIKMOD
     MM_ALLOC     *allochandle;
-    
+
                allochandle = _mmalloc_create("Load_PAT", NULL);
     retval = (PATHANDLE *)_mm_calloc(allochandle, 1,sizeof(PATHANDLE));
                if( !retval ) return NULL;
@@ -1057,7 +1108,7 @@
 {
        int u, inuse;
        int envpoint[6], envvolume[6];
-       for(u=0; u<120; u++) {        
+       for(u=0; u<120; u++) {
                d->samplenumber[u] = smp;
                d->samplenote[u] = smp;
        }
@@ -1269,7 +1320,7 @@
 
                // Enable aggressive declicking for songs that do not loop and 
that
                // are long enough that they won't be adversely affected.
-               
+
                q->flags  |= SL_LOOP;
                q->format |= SF_16BITS;
                q->format |= SF_SIGNED;
@@ -1395,6 +1446,7 @@
        mm.mm = (char *)lpStream;
        mm.sz = dwMemLength;
        mm.pos = 0;
+       mm.error = 0;
 #endif
        while( avoid_reentry ) sleep(1);
        avoid_reentry = 1;
@@ -1475,7 +1527,7 @@
        m_nDefaultSpeed = 6;
        m_nChannels     = h->samples;
        numpat          = t;
-       
+
        m_dwSongFlags   = SONG_LINEARSLIDES;
        m_nMinPeriod    = 28 << 2;
        m_nMaxPeriod    = 1712 << 3;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/libmodplug-0.8.8.3/src/load_s3m.cpp new/libmodplug-0.8.8.4/src/load_s3m.cpp
--- old/libmodplug-0.8.8.3/src/load_s3m.cpp     2011-05-08 00:17:06.000000000 
+0200
+++ new/libmodplug-0.8.8.4/src/load_s3m.cpp     2011-07-17 13:54:52.000000000 
+0200
@@ -195,10 +195,10 @@
 //---------------------------------------------------------------
 {
        UINT insnum,patnum,nins,npat;
-       DWORD insfile[128];
+       DWORD insfile[MAX_SAMPLES];
        WORD ptr[256];
        DWORD dwMemPos;
-       BYTE insflags[128], inspack[128];
+       BYTE insflags[MAX_SAMPLES], inspack[MAX_SAMPLES];
 
        if ((!lpStream) || (dwMemLength <= 
sizeof(S3MFILEHEADER)+sizeof(S3MSAMPLESTRUCT)+64)) return FALSE;
        S3MFILEHEADER psfh = *(S3MFILEHEADER *)lpStream;
@@ -312,7 +312,14 @@
                        if (j < 1024) j = 1024;
                        Ins[iSmp].nC4Speed = j;
                        insfile[iSmp] = (pSmp.hmem << 20) + 
(bswapLE16(pSmp.memseg) << 4);
-                       if (insfile[iSmp] > dwMemLength) insfile[iSmp] &= 
0xFFFF;
+                       // offset is invalid - ignore this sample.
+                       if (insfile[iSmp] > dwMemLength) insfile[iSmp] = 0;
+                       else if (insfile[iSmp]) {
+                               // ignore duplicate samples.
+                               for (int z=iSmp-1; z>=0; z--)
+                                       if (insfile[iSmp] == insfile[z])
+                                               insfile[iSmp] = 0;
+                       }
                        if ((Ins[iSmp].nLoopStart >= Ins[iSmp].nLoopEnd) || 
(Ins[iSmp].nLoopEnd - Ins[iSmp].nLoopStart < 8))
                                Ins[iSmp].nLoopStart = Ins[iSmp].nLoopEnd = 0;
                        Ins[iSmp].nPan = 0x80;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/libmodplug-0.8.8.3/src/load_wav.cpp new/libmodplug-0.8.8.4/src/load_wav.cpp
--- old/libmodplug-0.8.8.3/src/load_wav.cpp     2009-05-10 05:05:27.000000000 
+0200
+++ new/libmodplug-0.8.8.4/src/load_wav.cpp     2011-07-17 13:54:52.000000000 
+0200
@@ -54,7 +54,7 @@
        if ((Patterns[1] = AllocatePattern(64, 4)) == NULL) return TRUE;
        UINT samplesize = (pfmt->channels * pfmt->bitspersample) >> 3;
        UINT len = pdata->length, bytelen;
-       if (dwMemPos + len > dwMemLength - 8) len = dwMemLength - dwMemPos - 8;
+       if (len > dwMemLength - 8 - dwMemPos) len = dwMemLength - dwMemPos - 8;
        len /= samplesize;
        bytelen = len;
        if (pfmt->bitspersample >= 16) bytelen *= 2;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/libmodplug-0.8.8.3/src/load_xm.cpp new/libmodplug-0.8.8.4/src/load_xm.cpp
--- old/libmodplug-0.8.8.3/src/load_xm.cpp      2009-05-10 05:05:27.000000000 
+0200
+++ new/libmodplug-0.8.8.4/src/load_xm.cpp      2011-07-20 11:42:02.000000000 
+0200
@@ -85,35 +85,36 @@
        BYTE pattern_map[256];
        BOOL samples_used[MAX_SAMPLES];
        UINT unused_samples;
+       tagXMFILEHEADER xmhead;
 
        m_nChannels = 0;
        if ((!lpStream) || (dwMemLength < 0x200)) return FALSE;
        if (strnicmp((LPCSTR)lpStream, "Extended Module", 15)) return FALSE;
 
        memcpy(m_szNames[0], lpStream+17, 20);
-       dwHdrSize = bswapLE32(*((DWORD *)(lpStream+60)));
-       norders = bswapLE16(*((WORD *)(lpStream+64)));
+       xmhead = *(tagXMFILEHEADER *)(lpStream+60);
+       dwHdrSize = bswapLE32(xmhead.size);
+       norders = bswapLE16(xmhead.norder);
        if ((!norders) || (norders > MAX_ORDERS)) return FALSE;
-       restartpos = bswapLE16(*((WORD *)(lpStream+66)));
-       channels = bswapLE16(*((WORD *)(lpStream+68)));
+       restartpos = bswapLE16(xmhead.restartpos);
+       channels = bswapLE16(xmhead.channels);
        if ((!channels) || (channels > 64)) return FALSE;
        m_nType = MOD_TYPE_XM;
        m_nMinPeriod = 27;
        m_nMaxPeriod = 54784;
        m_nChannels = channels;
        if (restartpos < norders) m_nRestartPos = restartpos;
-       patterns = bswapLE16(*((WORD *)(lpStream+70)));
+       patterns = bswapLE16(xmhead.patterns);
        if (patterns > 256) patterns = 256;
-       instruments = bswapLE16(*((WORD *)(lpStream+72)));
+       instruments = bswapLE16(xmhead.instruments);
        if (instruments >= MAX_INSTRUMENTS) instruments = MAX_INSTRUMENTS-1;
        m_nInstruments = instruments;
        m_nSamples = 0;
-       memcpy(&xmflags, lpStream+74, 2);
-       xmflags = bswapLE16(xmflags);
+       xmflags = bswapLE16(xmhead.flags);
        if (xmflags & 1) m_dwSongFlags |= SONG_LINEARSLIDES;
        if (xmflags & 0x1000) m_dwSongFlags |= SONG_EXFILTERRANGE;
-       defspeed = bswapLE16(*((WORD *)(lpStream+76)));
-       deftempo = bswapLE16(*((WORD *)(lpStream+78)));
+       defspeed = bswapLE16(xmhead.speed);
+       deftempo = bswapLE16(xmhead.tempo);
        if ((deftempo >= 32) && (deftempo < 256)) m_nDefaultTempo = deftempo;
        if ((defspeed > 0) && (defspeed < 40)) m_nDefaultSpeed = defspeed;
        memcpy(Order, lpStream+80, norders);


++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++



Remember to have fun...

-- 
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to