[med-svn] [clustalo] 02/06: New upstream version 1.2.4

Andreas Tille tille at debian.org
Wed Dec 21 20:13:33 UTC 2016


This is an automated email from the git hooks/post-receive script.

tille pushed a commit to branch master
in repository clustalo.

commit e110e7028455514c9a74e004bb0d9b839cd9d7ac
Author: Andreas Tille <tille at debian.org>
Date:   Wed Dec 21 21:02:20 2016 +0100

    New upstream version 1.2.4
---
 ChangeLog                       |   6 +
 Doxyfile                        |   2 +-
 INSTALL                         | 118 +--------
 configure                       |  20 +-
 configure.ac                    |   7 +-
 depcomp                         | 531 ++++++++++++++++++++++++++--------------
 install-sh                      | 392 ++++++++++++++---------------
 missing                         | 461 ++++++++++++----------------------
 src/clustal-omega-config.h      |   6 +-
 src/clustal/mbed.c              |   8 +-
 src/hhalign/hhalignment-C.h     | 146 +++++------
 src/hhalign/hhfullalignment-C.h |   6 +-
 src/hhalign/hhhalfalignment-C.h |  10 +-
 src/hhalign/hhhit-C.h           | 106 ++++----
 src/hhalign/hhhitlist-C.h       | 162 ++++++------
 src/hhalign/hhhmm-C.h           |  58 ++---
 src/hhalign/hhmatrices-C.h      |  24 +-
 src/hhalign/hhutil-C.h          |   6 +-
 src/hhalign/util-C.h            |  12 +-
 src/squid/clustal.c             |   6 +-
 src/squid/hsregex.c             |   4 +-
 src/squid/msf.c                 |   8 +-
 22 files changed, 1004 insertions(+), 1095 deletions(-)

diff --git a/ChangeLog b/ChangeLog
old mode 100755
new mode 100644
index ed8e870..bc6e25d
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2016-12-20 Release 1.2.4 (AndreaGiacomo, r317)
+
+	- made code gcc-6 compliant
+
+	(no new command-line flags)
+
 2016-07-20 Release 1.2.3 (AndreaGiacomo, r313)
 
 	- fixed consensus line in ClustalW format, 'H' in NHQK not recognised as strong (bug in Squid)
diff --git a/Doxyfile b/Doxyfile
index cde71e7..817ed5c 100644
--- a/Doxyfile
+++ b/Doxyfile
@@ -31,7 +31,7 @@ PROJECT_NAME           = "Clustal Omega"
 # This could be handy for archiving the generated documentation or 
 # if some version control system is used.
 
-PROJECT_NUMBER         = 1.2.3
+PROJECT_NUMBER         = 1.2.4
 
 # The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) 
 # base path where the generated documentation will be put. 
diff --git a/INSTALL b/INSTALL
index b7c0645..2099840 100644
--- a/INSTALL
+++ b/INSTALL
@@ -1,43 +1,8 @@
-The impatient can try:
-
-$ ./configure
-$ make
-$ make install
-
-
-Clustal-Omega needs argtable2 (http://argtable.sourceforge.net/). If
-argtable2 is installed in a non-standard directory you might have to
-point configure to its installation directory. For example, if you are
-on a Mac and have argtable installed via MacPorts then you should use
-the following command line:
-
-$ ./configure CFLAGS='-I/opt/local/include' LDFLAGS='-L/opt/local/lib'
-
-ClustalO will automatically support multi-threading if your compiler
-supports OpenMP. For some reason automake's OpenMP detection for
-Apple's gcc is broken. You can force OpenMP detection by calling configure 
-like so:
-
-$ ./configure OPENMP_CFLAGS='-fopenmp' CFLAGS='-DHAVE_OPENMP'
-
-You could use a non-Apple gcc installed via MacPorts, adding
-
-CC=/opt/local/bin/gcc-mp-4.5
-
-to the configure call (you will have to change the exact string to match
-your gcc version).
-
-See below for generic installation instructions:
-
-----------------------------------------------------------------------
-
-
-
 Installation Instructions
 *************************
 
-Copyright (C) 1994, 1995, 1996, 1999, 2000, 2001, 2002, 2004, 2005,
-2006, 2007, 2008, 2009 Free Software Foundation, Inc.
+Copyright (C) 1994-1996, 1999-2002, 2004-2013 Free Software Foundation,
+Inc.
 
    Copying and distribution of this file, with or without modification,
 are permitted in any medium without royalty provided the copyright
@@ -47,8 +12,8 @@ without warranty of any kind.
 Basic Installation
 ==================
 
-   Briefly, the shell commands `./configure; make; make install' should
-configure, build, and install this package.  The following
+   Briefly, the shell command `./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
@@ -261,6 +226,11 @@ order to use an ANSI C compiler:
 
 and if that doesn't work, install pre-built binaries of GCC for HP-UX.
 
+   HP-UX `make' updates targets which have the same time stamps as
+their prerequisites, which makes it generally unusable when shipped
+generated files such as `configure' are involved.  Use GNU `make'
+instead.
+
    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
@@ -282,70 +252,6 @@ not `/usr/local'.  It is recommended to use the following options:
 
      ./configure --prefix=/boot/common
 
-
-   On Windows do 
-
-	1. Preparation
-
-	1.1. Install free MinGW64 on Windows 7.  Download
-	mingw-w64-bin_x86_64-mingw_20111101_sezero.zip from
-	http://sourceforge.net/projects/mingw-w64/files/Toolchains
-	targetting Win64/Personal Builds/sezero_4.5_20111101/, extract
-	it, move mingw64 folder to C:\ and rename it to mingw. MinGW64
-	provides tools to develop 64-bit Windows applications using
-	gcc and g++. With MinGW64, some software developed for Linux
-	platform can be built on Windows.
-
-     	1.2. There is a file named pthreads-w64.zip in C:\mingw
-     	folder. Extract it under C:\mingw folder.
-
-	1.3. Download MSYS-1.0.11.exe from
-	http://sourceforge.net/projects/mingw/files/MSYS/Base/msys-core/msys-1.0.11/
-	and install it.
-
-	1.4. Download Clustal Omega source from
-	http://www.clustal.org/omega/clustal-omega-x.x.x.tar.gz (where
-	x.x.x is the current version)
-
-	1.5. Copy downloaded file to MSYS.  If you installed MSYS in
-	C:\msys and your account is Administrator, copy it to
-	C:\msys\1.0\home\Administrator. You can do it using Windows
-	explorer.
-
-	1.6. Download argtable2-13.tar.gz from
-	http://argtable.sourceforge.net/ and copy it to MSYS. This is
-	required by Clustal Omega.
-
-	2. Configuration and Build process
-
-	2.1. Launch MSYS and extract argtable2 source as tar xfz
-	argtable2-13.tar.gz.
-
-	2.2. Extract Clustal Omega source as tar xfz
-	clustal-omega-1.2.0.tar.gz.
-
-	2.3. cd argtable2-13; ./configure; make; make install
-
-	2.4. cd ~/clustal-omega-1.2.0
-
-	2.5. ./configure CFLAGS='-I/usr/local/include
-	-DSRE_STRICT_ANSI' LDFLAGS='-L/usr/local/lib'
-
-	2.6. make; make install
-
-	2.7. You can find clustalo.exe in /usr/local/bin folder which
-	is C:\msys\1.0\local/bin.
-
-	2.8. Following DLLs are necessary to run clustalo.exe.  Put
-	them in the same folder where clustalo.exe
-	exists. C:\mingw\bin\libcc_sjlj-1.dll,
-	C:\mingw\bin\libgomp-1.dll, C:\mingw\bin\libstdc++-6.dll,
-	C:\mingw\bin\pthreadGC2-w64.dll
-
-	(lifted from
-   http://www.blaststation.com/freestuff/en/howtoBuildx64ClustalO.php,
-   as of 2014-10-14)
-
 Specifying the System Type
 ==========================
 
@@ -403,9 +309,10 @@ 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:
+an Autoconf limitation.  Until the limitation is lifted, you can use
+this workaround:
 
-     CONFIG_SHELL=/bin/bash /bin/bash ./configure CONFIG_SHELL=/bin/bash
+     CONFIG_SHELL=/bin/bash ./configure CONFIG_SHELL=/bin/bash
 
 `configure' Invocation
 ======================
@@ -461,4 +368,3 @@ operates.
 
 `configure' also accepts some other, not widely useful, options.  Run
 `configure --help' for more details.
-
diff --git a/configure b/configure
index 3090f0a..6a3a706 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.63 for Clustal Omega 1.2.3.
+# Generated by GNU Autoconf 2.63 for Clustal Omega 1.2.4.
 #
 # Report bugs to <clustalw at ucd.ie>.
 #
@@ -745,8 +745,8 @@ SHELL=${CONFIG_SHELL-/bin/sh}
 # Identity of this package.
 PACKAGE_NAME='Clustal Omega'
 PACKAGE_TARNAME='clustal-omega'
-PACKAGE_VERSION='1.2.3'
-PACKAGE_STRING='Clustal Omega 1.2.3'
+PACKAGE_VERSION='1.2.4'
+PACKAGE_STRING='Clustal Omega 1.2.4'
 PACKAGE_BUGREPORT='clustalw at ucd.ie'
 
 # Factoring default headers for most tests.
@@ -1483,7 +1483,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 Clustal Omega 1.2.3 to adapt to many kinds of systems.
+\`configure' configures Clustal Omega 1.2.4 to adapt to many kinds of systems.
 
 Usage: $0 [OPTION]... [VAR=VALUE]...
 
@@ -1553,7 +1553,7 @@ fi
 
 if test -n "$ac_init_help"; then
   case $ac_init_help in
-     short | recursive ) echo "Configuration of Clustal Omega 1.2.3:";;
+     short | recursive ) echo "Configuration of Clustal Omega 1.2.4:";;
    esac
   cat <<\_ACEOF
 
@@ -1659,7 +1659,7 @@ fi
 test -n "$ac_init_help" && exit $ac_status
 if $ac_init_version; then
   cat <<\_ACEOF
-Clustal Omega configure 1.2.3
+Clustal Omega configure 1.2.4
 generated by GNU Autoconf 2.63
 
 Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001,
@@ -1673,7 +1673,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 Clustal Omega $as_me 1.2.3, which was
+It was created by Clustal Omega $as_me 1.2.4, which was
 generated by GNU Autoconf 2.63.  Invocation command line was
 
   $ $0 $@
@@ -2492,7 +2492,7 @@ fi
 
 # Define the identity of the package.
  PACKAGE='clustal-omega'
- VERSION='1.2.3'
+ VERSION='1.2.4'
 
 
 cat >>confdefs.h <<_ACEOF
@@ -21790,7 +21790,7 @@ exec 6>&1
 # report actual input values of CONFIG_FILES etc. instead of their
 # values after options handling.
 ac_log="
-This file was extended by Clustal Omega $as_me 1.2.3, which was
+This file was extended by Clustal Omega $as_me 1.2.4, which was
 generated by GNU Autoconf 2.63.  Invocation command line was
 
   CONFIG_FILES    = $CONFIG_FILES
@@ -21853,7 +21853,7 @@ Report bugs to <bug-autoconf at gnu.org>."
 _ACEOF
 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
 ac_cs_version="\\
-Clustal Omega config.status 1.2.3
+Clustal Omega config.status 1.2.4
 configured by $0, generated by GNU Autoconf 2.63,
   with options \\"`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`\\"
 
diff --git a/configure.ac b/configure.ac
index d827cf8..8e59f2b 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1,6 +1,6 @@
 # configure.ac for Clustal Omega
 #
-# RCS $Id: configure.ac 313 2016-07-20 13:30:29Z fabian $
+# RCS $Id: configure.ac 317 2016-12-16 17:44:50Z fabian $
 
 
 # release
@@ -32,7 +32,10 @@
 #AC_INIT([Clustal Omega], [1.2.2], [clustalw at ucd.ie])
 #PACKAGE_CODENAME="AndreaGiacomo"
 # r313
-AC_INIT([Clustal Omega], [1.2.3], [clustalw at ucd.ie])
+#AC_INIT([Clustal Omega], [1.2.3], [clustalw at ucd.ie])
+#PACKAGE_CODENAME="AndreaGiacomo"
+# r317
+AC_INIT([Clustal Omega], [1.2.4], [clustalw at ucd.ie])
 PACKAGE_CODENAME="AndreaGiacomo"
 
 # The AC_INIT macro can take any source file as an argument. It just
diff --git a/depcomp b/depcomp
index df8eea7..fc98710 100755
--- a/depcomp
+++ b/depcomp
@@ -1,10 +1,9 @@
 #! /bin/sh
 # depcomp - compile a program generating dependencies as side-effects
 
-scriptversion=2009-04-28.21; # UTC
+scriptversion=2013-05-30.07; # UTC
 
-# Copyright (C) 1999, 2000, 2003, 2004, 2005, 2006, 2007, 2009 Free
-# Software Foundation, Inc.
+# Copyright (C) 1999-2014 Free Software Foundation, Inc.
 
 # This program is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
@@ -28,9 +27,9 @@ scriptversion=2009-04-28.21; # UTC
 
 case $1 in
   '')
-     echo "$0: No command.  Try \`$0 --help' for more information." 1>&2
-     exit 1;
-     ;;
+    echo "$0: No command.  Try '$0 --help' for more information." 1>&2
+    exit 1;
+    ;;
   -h | --h*)
     cat <<\EOF
 Usage: depcomp [--help] [--version] PROGRAM [ARGS]
@@ -40,11 +39,11 @@ as side-effects.
 
 Environment variables:
   depmode     Dependency tracking mode.
-  source      Source file read by `PROGRAMS ARGS'.
-  object      Object file output by `PROGRAMS ARGS'.
+  source      Source file read by 'PROGRAMS ARGS'.
+  object      Object file output by 'PROGRAMS ARGS'.
   DEPDIR      directory where to store dependencies.
   depfile     Dependency file to output.
-  tmpdepfile  Temporary file to use when outputing dependencies.
+  tmpdepfile  Temporary file to use when outputting dependencies.
   libtool     Whether libtool is used (yes/no).
 
 Report bugs to <bug-automake at gnu.org>.
@@ -57,6 +56,66 @@ EOF
     ;;
 esac
 
+# Get the directory component of the given path, and save it in the
+# global variables '$dir'.  Note that this directory component will
+# be either empty or ending with a '/' character.  This is deliberate.
+set_dir_from ()
+{
+  case $1 in
+    */*) dir=`echo "$1" | sed -e 's|/[^/]*$|/|'`;;
+      *) dir=;;
+  esac
+}
+
+# Get the suffix-stripped basename of the given path, and save it the
+# global variable '$base'.
+set_base_from ()
+{
+  base=`echo "$1" | sed -e 's|^.*/||' -e 's/\.[^.]*$//'`
+}
+
+# If no dependency file was actually created by the compiler invocation,
+# we still have to create a dummy depfile, to avoid errors with the
+# Makefile "include basename.Plo" scheme.
+make_dummy_depfile ()
+{
+  echo "#dummy" > "$depfile"
+}
+
+# Factor out some common post-processing of the generated depfile.
+# Requires the auxiliary global variable '$tmpdepfile' to be set.
+aix_post_process_depfile ()
+{
+  # If the compiler actually managed to produce a dependency file,
+  # post-process it.
+  if test -f "$tmpdepfile"; then
+    # Each line is of the form 'foo.o: dependency.h'.
+    # Do two passes, one to just change these to
+    #   $object: dependency.h
+    # and one to simply output
+    #   dependency.h:
+    # which is needed to avoid the deleted-header problem.
+    { sed -e "s,^.*\.[$lower]*:,$object:," < "$tmpdepfile"
+      sed -e "s,^.*\.[$lower]*:[$tab ]*,," -e 's,$,:,' < "$tmpdepfile"
+    } > "$depfile"
+    rm -f "$tmpdepfile"
+  else
+    make_dummy_depfile
+  fi
+}
+
+# A tabulation character.
+tab='	'
+# A newline character.
+nl='
+'
+# Character ranges might be problematic outside the C locale.
+# These definitions help.
+upper=ABCDEFGHIJKLMNOPQRSTUVWXYZ
+lower=abcdefghijklmnopqrstuvwxyz
+digits=0123456789
+alpha=${upper}${lower}
+
 if test -z "$depmode" || test -z "$source" || test -z "$object"; then
   echo "depcomp: Variables source, object and depmode must be set" 1>&2
   exit 1
@@ -69,6 +128,9 @@ tmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`}
 
 rm -f "$tmpdepfile"
 
+# Avoid interferences from the environment.
+gccflag= dashmflag=
+
 # Some modes work just like other modes, but use different flags.  We
 # parameterize here, but still list the modes in the big case below,
 # to make depend.m4 easier to write.  Note that we *cannot* use a case
@@ -80,18 +142,32 @@ if test "$depmode" = hp; then
 fi
 
 if test "$depmode" = dashXmstdout; then
-   # This is just like dashmstdout with a different argument.
-   dashmflag=-xM
-   depmode=dashmstdout
+  # This is just like dashmstdout with a different argument.
+  dashmflag=-xM
+  depmode=dashmstdout
 fi
 
 cygpath_u="cygpath -u -f -"
 if test "$depmode" = msvcmsys; then
-   # This is just like msvisualcpp but w/o cygpath translation.
-   # Just convert the backslash-escaped backslashes to single forward
-   # slashes to satisfy depend.m4
-   cygpath_u="sed s,\\\\\\\\,/,g"
-   depmode=msvisualcpp
+  # This is just like msvisualcpp but w/o cygpath translation.
+  # Just convert the backslash-escaped backslashes to single forward
+  # slashes to satisfy depend.m4
+  cygpath_u='sed s,\\\\,/,g'
+  depmode=msvisualcpp
+fi
+
+if test "$depmode" = msvc7msys; then
+  # This is just like msvc7 but w/o cygpath translation.
+  # Just convert the backslash-escaped backslashes to single forward
+  # slashes to satisfy depend.m4
+  cygpath_u='sed s,\\\\,/,g'
+  depmode=msvc7
+fi
+
+if test "$depmode" = xlc; then
+  # IBM C/C++ Compilers xlc/xlC can output gcc-like dependency information.
+  gccflag=-qmakedep=gcc,-MF
+  depmode=gcc
 fi
 
 case "$depmode" in
@@ -114,8 +190,7 @@ gcc3)
   done
   "$@"
   stat=$?
-  if test $stat -eq 0; then :
-  else
+  if test $stat -ne 0; then
     rm -f "$tmpdepfile"
     exit $stat
   fi
@@ -123,13 +198,17 @@ gcc3)
   ;;
 
 gcc)
+## Note that this doesn't just cater to obsosete pre-3.x GCC compilers.
+## but also to in-use compilers like IMB xlc/xlC and the HP C compiler.
+## (see the conditional assignment to $gccflag above).
 ## There are various ways to get dependency output from gcc.  Here's
 ## why we pick this rather obscure method:
 ## - Don't want to use -MD because we'd like the dependencies to end
 ##   up in a subdir.  Having to rename by hand is ugly.
 ##   (We might end up doing this anyway to support other compilers.)
 ## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like
-##   -MM, not -M (despite what the docs say).
+##   -MM, not -M (despite what the docs say).  Also, it might not be
+##   supported by the other compilers which use the 'gcc' depmode.
 ## - Using -M directly means running the compiler twice (even worse
 ##   than renaming).
   if test -z "$gccflag"; then
@@ -137,31 +216,31 @@ gcc)
   fi
   "$@" -Wp,"$gccflag$tmpdepfile"
   stat=$?
-  if test $stat -eq 0; then :
-  else
+  if test $stat -ne 0; then
     rm -f "$tmpdepfile"
     exit $stat
   fi
   rm -f "$depfile"
   echo "$object : \\" > "$depfile"
-  alpha=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz
-## The second -e expression handles DOS-style file names with drive letters.
+  # The second -e expression handles DOS-style file names with drive
+  # letters.
   sed -e 's/^[^:]*: / /' \
       -e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile"
-## This next piece of magic avoids the `deleted header file' problem.
+## This next piece of magic avoids the "deleted header file" problem.
 ## The problem is that when a header file which appears in a .P file
 ## is deleted, the dependency causes make to die (because there is
 ## typically no way to rebuild the header).  We avoid this by adding
 ## dummy dependencies for each header file.  Too bad gcc doesn't do
 ## this for us directly.
-  tr ' ' '
-' < "$tmpdepfile" |
-## Some versions of gcc put a space before the `:'.  On the theory
+## Some versions of gcc put a space before the ':'.  On the theory
 ## that the space means something, we add a space to the output as
-## well.
+## well.  hp depmode also adds that space, but also prefixes the VPATH
+## to the object.  Take care to not repeat it in the output.
 ## Some versions of the HPUX 10.20 sed can't process this invocation
 ## correctly.  Breaking it into two sed invocations is a workaround.
-    sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
+  tr ' ' "$nl" < "$tmpdepfile" \
+    | sed -e 's/^\\$//' -e '/^$/d' -e "s|.*$object$||" -e '/:$/d' \
+    | sed -e 's/$/ :/' >> "$depfile"
   rm -f "$tmpdepfile"
   ;;
 
@@ -179,8 +258,7 @@ sgi)
     "$@" -MDupdate "$tmpdepfile"
   fi
   stat=$?
-  if test $stat -eq 0; then :
-  else
+  if test $stat -ne 0; then
     rm -f "$tmpdepfile"
     exit $stat
   fi
@@ -188,43 +266,41 @@ sgi)
 
   if test -f "$tmpdepfile"; then  # yes, the sourcefile depend on other files
     echo "$object : \\" > "$depfile"
-
     # Clip off the initial element (the dependent).  Don't try to be
     # clever and replace this with sed code, as IRIX sed won't handle
     # lines with more than a fixed number of characters (4096 in
     # IRIX 6.2 sed, 8192 in IRIX 6.5).  We also remove comment lines;
-    # the IRIX cc adds comments like `#:fec' to the end of the
+    # the IRIX cc adds comments like '#:fec' to the end of the
     # dependency line.
-    tr ' ' '
-' < "$tmpdepfile" \
-    | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' | \
-    tr '
-' ' ' >> "$depfile"
+    tr ' ' "$nl" < "$tmpdepfile" \
+      | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' \
+      | tr "$nl" ' ' >> "$depfile"
     echo >> "$depfile"
-
     # The second pass generates a dummy entry for each header file.
-    tr ' ' '
-' < "$tmpdepfile" \
-   | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \
-   >> "$depfile"
+    tr ' ' "$nl" < "$tmpdepfile" \
+      | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \
+      >> "$depfile"
   else
-    # The sourcefile does not contain any dependencies, so just
-    # store a dummy comment line, to avoid errors with the Makefile
-    # "include basename.Plo" scheme.
-    echo "#dummy" > "$depfile"
+    make_dummy_depfile
   fi
   rm -f "$tmpdepfile"
   ;;
 
+xlc)
+  # This case exists only to let depend.m4 do its work.  It works by
+  # looking at the text of this script.  This case will never be run,
+  # since it is checked for above.
+  exit 1
+  ;;
+
 aix)
   # The C for AIX Compiler uses -M and outputs the dependencies
   # in a .u file.  In older versions, this file always lives in the
-  # current directory.  Also, the AIX compiler puts `$object:' at the
+  # current directory.  Also, the AIX compiler puts '$object:' at the
   # start of each line; $object doesn't have directory information.
   # Version 6 uses the directory in both cases.
-  dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`
-  test "x$dir" = "x$object" && dir=
-  base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'`
+  set_dir_from "$object"
+  set_base_from "$object"
   if test "$libtool" = yes; then
     tmpdepfile1=$dir$base.u
     tmpdepfile2=$base.u
@@ -237,9 +313,7 @@ aix)
     "$@" -M
   fi
   stat=$?
-
-  if test $stat -eq 0; then :
-  else
+  if test $stat -ne 0; then
     rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3"
     exit $stat
   fi
@@ -248,44 +322,100 @@ aix)
   do
     test -f "$tmpdepfile" && break
   done
-  if test -f "$tmpdepfile"; then
-    # Each line is of the form `foo.o: dependent.h'.
-    # Do two passes, one to just change these to
-    # `$object: dependent.h' and one to simply `dependent.h:'.
-    sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile"
-    # That's a tab and a space in the [].
-    sed -e 's,^.*\.[a-z]*:[	 ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile"
-  else
-    # The sourcefile does not contain any dependencies, so just
-    # store a dummy comment line, to avoid errors with the Makefile
-    # "include basename.Plo" scheme.
-    echo "#dummy" > "$depfile"
+  aix_post_process_depfile
+  ;;
+
+tcc)
+  # tcc (Tiny C Compiler) understand '-MD -MF file' since version 0.9.26
+  # FIXME: That version still under development at the moment of writing.
+  #        Make that this statement remains true also for stable, released
+  #        versions.
+  # It will wrap lines (doesn't matter whether long or short) with a
+  # trailing '\', as in:
+  #
+  #   foo.o : \
+  #    foo.c \
+  #    foo.h \
+  #
+  # It will put a trailing '\' even on the last line, and will use leading
+  # spaces rather than leading tabs (at least since its commit 0394caf7
+  # "Emit spaces for -MD").
+  "$@" -MD -MF "$tmpdepfile"
+  stat=$?
+  if test $stat -ne 0; then
+    rm -f "$tmpdepfile"
+    exit $stat
   fi
+  rm -f "$depfile"
+  # Each non-empty line is of the form 'foo.o : \' or ' dep.h \'.
+  # We have to change lines of the first kind to '$object: \'.
+  sed -e "s|.*:|$object :|" < "$tmpdepfile" > "$depfile"
+  # And for each line of the second kind, we have to emit a 'dep.h:'
+  # dummy dependency, to avoid the deleted-header problem.
+  sed -n -e 's|^  *\(.*\) *\\$|\1:|p' < "$tmpdepfile" >> "$depfile"
   rm -f "$tmpdepfile"
   ;;
 
-icc)
-  # Intel's C compiler understands `-MD -MF file'.  However on
-  #    icc -MD -MF foo.d -c -o sub/foo.o sub/foo.c
-  # ICC 7.0 will fill foo.d with something like
-  #    foo.o: sub/foo.c
-  #    foo.o: sub/foo.h
-  # which is wrong.  We want:
-  #    sub/foo.o: sub/foo.c
-  #    sub/foo.o: sub/foo.h
-  #    sub/foo.c:
-  #    sub/foo.h:
-  # ICC 7.1 will output
+## The order of this option in the case statement is important, since the
+## shell code in configure will try each of these formats in the order
+## listed in this file.  A plain '-MD' option would be understood by many
+## compilers, so we must ensure this comes after the gcc and icc options.
+pgcc)
+  # Portland's C compiler understands '-MD'.
+  # Will always output deps to 'file.d' where file is the root name of the
+  # source file under compilation, even if file resides in a subdirectory.
+  # The object file name does not affect the name of the '.d' file.
+  # pgcc 10.2 will output
   #    foo.o: sub/foo.c sub/foo.h
-  # and will wrap long lines using \ :
+  # and will wrap long lines using '\' :
   #    foo.o: sub/foo.c ... \
   #     sub/foo.h ... \
   #     ...
+  set_dir_from "$object"
+  # Use the source, not the object, to determine the base name, since
+  # that's sadly what pgcc will do too.
+  set_base_from "$source"
+  tmpdepfile=$base.d
+
+  # For projects that build the same source file twice into different object
+  # files, the pgcc approach of using the *source* file root name can cause
+  # problems in parallel builds.  Use a locking strategy to avoid stomping on
+  # the same $tmpdepfile.
+  lockdir=$base.d-lock
+  trap "
+    echo '$0: caught signal, cleaning up...' >&2
+    rmdir '$lockdir'
+    exit 1
+  " 1 2 13 15
+  numtries=100
+  i=$numtries
+  while test $i -gt 0; do
+    # mkdir is a portable test-and-set.
+    if mkdir "$lockdir" 2>/dev/null; then
+      # This process acquired the lock.
+      "$@" -MD
+      stat=$?
+      # Release the lock.
+      rmdir "$lockdir"
+      break
+    else
+      # If the lock is being held by a different process, wait
+      # until the winning process is done or we timeout.
+      while test -d "$lockdir" && test $i -gt 0; do
+        sleep 1
+        i=`expr $i - 1`
+      done
+    fi
+    i=`expr $i - 1`
+  done
+  trap - 1 2 13 15
+  if test $i -le 0; then
+    echo "$0: failed to acquire lock after $numtries attempts" >&2
+    echo "$0: check lockdir '$lockdir'" >&2
+    exit 1
+  fi
 
-  "$@" -MD -MF "$tmpdepfile"
-  stat=$?
-  if test $stat -eq 0; then :
-  else
+  if test $stat -ne 0; then
     rm -f "$tmpdepfile"
     exit $stat
   fi
@@ -297,8 +427,8 @@ icc)
   sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile"
   # Some versions of the HPUX 10.20 sed can't process this invocation
   # correctly.  Breaking it into two sed invocations is a workaround.
-  sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" |
-    sed -e 's/$/ :/' >> "$depfile"
+  sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" \
+    | sed -e 's/$/ :/' >> "$depfile"
   rm -f "$tmpdepfile"
   ;;
 
@@ -309,9 +439,8 @@ hp2)
   # 'foo.d', which lands next to the object file, wherever that
   # happens to be.
   # Much of this is similar to the tru64 case; see comments there.
-  dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`
-  test "x$dir" = "x$object" && dir=
-  base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'`
+  set_dir_from  "$object"
+  set_base_from "$object"
   if test "$libtool" = yes; then
     tmpdepfile1=$dir$base.d
     tmpdepfile2=$dir.libs/$base.d
@@ -322,8 +451,7 @@ hp2)
     "$@" +Maked
   fi
   stat=$?
-  if test $stat -eq 0; then :
-  else
+  if test $stat -ne 0; then
      rm -f "$tmpdepfile1" "$tmpdepfile2"
      exit $stat
   fi
@@ -333,77 +461,107 @@ hp2)
     test -f "$tmpdepfile" && break
   done
   if test -f "$tmpdepfile"; then
-    sed -e "s,^.*\.[a-z]*:,$object:," "$tmpdepfile" > "$depfile"
-    # Add `dependent.h:' lines.
+    sed -e "s,^.*\.[$lower]*:,$object:," "$tmpdepfile" > "$depfile"
+    # Add 'dependent.h:' lines.
     sed -ne '2,${
-	       s/^ *//
-	       s/ \\*$//
-	       s/$/:/
-	       p
-	     }' "$tmpdepfile" >> "$depfile"
+               s/^ *//
+               s/ \\*$//
+               s/$/:/
+               p
+             }' "$tmpdepfile" >> "$depfile"
   else
-    echo "#dummy" > "$depfile"
+    make_dummy_depfile
   fi
   rm -f "$tmpdepfile" "$tmpdepfile2"
   ;;
 
 tru64)
-   # The Tru64 compiler uses -MD to generate dependencies as a side
-   # effect.  `cc -MD -o foo.o ...' puts the dependencies into `foo.o.d'.
-   # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put
-   # dependencies in `foo.d' instead, so we check for that too.
-   # Subdirectories are respected.
-   dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`
-   test "x$dir" = "x$object" && dir=
-   base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'`
-
-   if test "$libtool" = yes; then
-      # With Tru64 cc, shared objects can also be used to make a
-      # static library.  This mechanism is used in libtool 1.4 series to
-      # handle both shared and static libraries in a single compilation.
-      # With libtool 1.4, dependencies were output in $dir.libs/$base.lo.d.
-      #
-      # With libtool 1.5 this exception was removed, and libtool now
-      # generates 2 separate objects for the 2 libraries.  These two
-      # compilations output dependencies in $dir.libs/$base.o.d and
-      # in $dir$base.o.d.  We have to check for both files, because
-      # one of the two compilations can be disabled.  We should prefer
-      # $dir$base.o.d over $dir.libs/$base.o.d because the latter is
-      # automatically cleaned when .libs/ is deleted, while ignoring
-      # the former would cause a distcleancheck panic.
-      tmpdepfile1=$dir.libs/$base.lo.d   # libtool 1.4
-      tmpdepfile2=$dir$base.o.d          # libtool 1.5
-      tmpdepfile3=$dir.libs/$base.o.d    # libtool 1.5
-      tmpdepfile4=$dir.libs/$base.d      # Compaq CCC V6.2-504
-      "$@" -Wc,-MD
-   else
-      tmpdepfile1=$dir$base.o.d
-      tmpdepfile2=$dir$base.d
-      tmpdepfile3=$dir$base.d
-      tmpdepfile4=$dir$base.d
-      "$@" -MD
-   fi
-
-   stat=$?
-   if test $stat -eq 0; then :
-   else
-      rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4"
-      exit $stat
-   fi
-
-   for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4"
-   do
-     test -f "$tmpdepfile" && break
-   done
-   if test -f "$tmpdepfile"; then
-      sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile"
-      # That's a tab and a space in the [].
-      sed -e 's,^.*\.[a-z]*:[	 ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile"
-   else
-      echo "#dummy" > "$depfile"
-   fi
-   rm -f "$tmpdepfile"
-   ;;
+  # The Tru64 compiler uses -MD to generate dependencies as a side
+  # effect.  'cc -MD -o foo.o ...' puts the dependencies into 'foo.o.d'.
+  # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put
+  # dependencies in 'foo.d' instead, so we check for that too.
+  # Subdirectories are respected.
+  set_dir_from  "$object"
+  set_base_from "$object"
+
+  if test "$libtool" = yes; then
+    # Libtool generates 2 separate objects for the 2 libraries.  These
+    # two compilations output dependencies in $dir.libs/$base.o.d and
+    # in $dir$base.o.d.  We have to check for both files, because
+    # one of the two compilations can be disabled.  We should prefer
+    # $dir$base.o.d over $dir.libs/$base.o.d because the latter is
+    # automatically cleaned when .libs/ is deleted, while ignoring
+    # the former would cause a distcleancheck panic.
+    tmpdepfile1=$dir$base.o.d          # libtool 1.5
+    tmpdepfile2=$dir.libs/$base.o.d    # Likewise.
+    tmpdepfile3=$dir.libs/$base.d      # Compaq CCC V6.2-504
+    "$@" -Wc,-MD
+  else
+    tmpdepfile1=$dir$base.d
+    tmpdepfile2=$dir$base.d
+    tmpdepfile3=$dir$base.d
+    "$@" -MD
+  fi
+
+  stat=$?
+  if test $stat -ne 0; then
+    rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3"
+    exit $stat
+  fi
+
+  for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3"
+  do
+    test -f "$tmpdepfile" && break
+  done
+  # Same post-processing that is required for AIX mode.
+  aix_post_process_depfile
+  ;;
+
+msvc7)
+  if test "$libtool" = yes; then
+    showIncludes=-Wc,-showIncludes
+  else
+    showIncludes=-showIncludes
+  fi
+  "$@" $showIncludes > "$tmpdepfile"
+  stat=$?
+  grep -v '^Note: including file: ' "$tmpdepfile"
+  if test $stat -ne 0; then
+    rm -f "$tmpdepfile"
+    exit $stat
+  fi
+  rm -f "$depfile"
+  echo "$object : \\" > "$depfile"
+  # The first sed program below extracts the file names and escapes
+  # backslashes for cygpath.  The second sed program outputs the file
+  # name when reading, but also accumulates all include files in the
+  # hold buffer in order to output them again at the end.  This only
+  # works with sed implementations that can handle large buffers.
+  sed < "$tmpdepfile" -n '
+/^Note: including file:  *\(.*\)/ {
+  s//\1/
+  s/\\/\\\\/g
+  p
+}' | $cygpath_u | sort -u | sed -n '
+s/ /\\ /g
+s/\(.*\)/'"$tab"'\1 \\/p
+s/.\(.*\) \\/\1:/
+H
+$ {
+  s/.*/'"$tab"'/
+  G
+  p
+}' >> "$depfile"
+  echo >> "$depfile" # make sure the fragment doesn't end with a backslash
+  rm -f "$tmpdepfile"
+  ;;
+
+msvc7msys)
+  # This case exists only to let depend.m4 do its work.  It works by
+  # looking at the text of this script.  This case will never be run,
+  # since it is checked for above.
+  exit 1
+  ;;
 
 #nosideeffect)
   # This comment above is used by automake to tell side-effect
@@ -422,7 +580,7 @@ dashmstdout)
     shift
   fi
 
-  # Remove `-o $object'.
+  # Remove '-o $object'.
   IFS=" "
   for arg
   do
@@ -442,18 +600,18 @@ dashmstdout)
   done
 
   test -z "$dashmflag" && dashmflag=-M
-  # Require at least two characters before searching for `:'
+  # Require at least two characters before searching for ':'
   # in the target name.  This is to cope with DOS-style filenames:
-  # a dependency such as `c:/foo/bar' could be seen as target `c' otherwise.
+  # a dependency such as 'c:/foo/bar' could be seen as target 'c' otherwise.
   "$@" $dashmflag |
-    sed 's:^[  ]*[^: ][^:][^:]*\:[    ]*:'"$object"'\: :' > "$tmpdepfile"
+    sed "s|^[$tab ]*[^:$tab ][^:][^:]*:[$tab ]*|$object: |" > "$tmpdepfile"
   rm -f "$depfile"
   cat < "$tmpdepfile" > "$depfile"
-  tr ' ' '
-' < "$tmpdepfile" | \
-## Some versions of the HPUX 10.20 sed can't process this invocation
-## correctly.  Breaking it into two sed invocations is a workaround.
-    sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
+  # Some versions of the HPUX 10.20 sed can't process this sed invocation
+  # correctly.  Breaking it into two sed invocations is a workaround.
+  tr ' ' "$nl" < "$tmpdepfile" \
+    | sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' \
+    | sed -e 's/$/ :/' >> "$depfile"
   rm -f "$tmpdepfile"
   ;;
 
@@ -503,12 +661,15 @@ makedepend)
   touch "$tmpdepfile"
   ${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@"
   rm -f "$depfile"
-  cat < "$tmpdepfile" > "$depfile"
-  sed '1,2d' "$tmpdepfile" | tr ' ' '
-' | \
-## Some versions of the HPUX 10.20 sed can't process this invocation
-## correctly.  Breaking it into two sed invocations is a workaround.
-    sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
+  # makedepend may prepend the VPATH from the source file name to the object.
+  # No need to regex-escape $object, excess matching of '.' is harmless.
+  sed "s|^.*\($object *:\)|\1|" "$tmpdepfile" > "$depfile"
+  # Some versions of the HPUX 10.20 sed can't process the last invocation
+  # correctly.  Breaking it into two sed invocations is a workaround.
+  sed '1,2d' "$tmpdepfile" \
+    | tr ' ' "$nl" \
+    | sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' \
+    | sed -e 's/$/ :/' >> "$depfile"
   rm -f "$tmpdepfile" "$tmpdepfile".bak
   ;;
 
@@ -525,7 +686,7 @@ cpp)
     shift
   fi
 
-  # Remove `-o $object'.
+  # Remove '-o $object'.
   IFS=" "
   for arg
   do
@@ -544,10 +705,10 @@ cpp)
     esac
   done
 
-  "$@" -E |
-    sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \
-       -e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' |
-    sed '$ s: \\$::' > "$tmpdepfile"
+  "$@" -E \
+    | sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \
+             -e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \
+    | sed '$ s: \\$::' > "$tmpdepfile"
   rm -f "$depfile"
   echo "$object : \\" > "$depfile"
   cat < "$tmpdepfile" >> "$depfile"
@@ -579,23 +740,23 @@ msvisualcpp)
       shift
       ;;
     "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI")
-	set fnord "$@"
-	shift
-	shift
-	;;
+        set fnord "$@"
+        shift
+        shift
+        ;;
     *)
-	set fnord "$@" "$arg"
-	shift
-	shift
-	;;
+        set fnord "$@" "$arg"
+        shift
+        shift
+        ;;
     esac
   done
   "$@" -E 2>/dev/null |
   sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::\1:p' | $cygpath_u | sort -u > "$tmpdepfile"
   rm -f "$depfile"
   echo "$object : \\" > "$depfile"
-  sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::	\1 \\:p' >> "$depfile"
-  echo "	" >> "$depfile"
+  sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::'"$tab"'\1 \\:p' >> "$depfile"
+  echo "$tab" >> "$depfile"
   sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::\1\::p' >> "$depfile"
   rm -f "$tmpdepfile"
   ;;
diff --git a/install-sh b/install-sh
index 6781b98..59990a1 100755
--- a/install-sh
+++ b/install-sh
@@ -1,7 +1,7 @@
 #!/bin/sh
 # install - install a program, script, or datafile
 
-scriptversion=2009-04-28.21; # UTC
+scriptversion=2014-09-12.12; # UTC
 
 # This originates from X11R5 (mit/util/scripts/install.sh), which was
 # later released in X11R6 (xc/config/util/install.sh) with the
@@ -35,25 +35,21 @@ scriptversion=2009-04-28.21; # UTC
 # FSF changes to this file are in the public domain.
 #
 # Calling this script install-sh is preferred over install.sh, to prevent
-# `make' implicit rules from creating a file called install from it
+# 'make' implicit rules from creating a file called install from it
 # when there is no Makefile.
 #
 # This script is compatible with the BSD install script, but was written
 # from scratch.
 
+tab='	'
 nl='
 '
-IFS=" ""	$nl"
+IFS=" $tab$nl"
 
-# set DOITPROG to echo to test this script
+# Set DOITPROG to "echo" to test this script.
 
-# Don't use :- since 4.3BSD and earlier shells don't like it.
 doit=${DOITPROG-}
-if test -z "$doit"; then
-  doit_exec=exec
-else
-  doit_exec=$doit
-fi
+doit_exec=${doit:-exec}
 
 # Put in absolute file names if you don't have them in your path;
 # or use environment vars.
@@ -68,17 +64,6 @@ mvprog=${MVPROG-mv}
 rmprog=${RMPROG-rm}
 stripprog=${STRIPPROG-strip}
 
-posix_glob='?'
-initialize_posix_glob='
-  test "$posix_glob" != "?" || {
-    if (set -f) 2>/dev/null; then
-      posix_glob=
-    else
-      posix_glob=:
-    fi
-  }
-'
-
 posix_mkdir=
 
 # Desired mode of installed file.
@@ -97,7 +82,7 @@ dir_arg=
 dst_arg=
 
 copy_on_change=false
-no_target_directory=
+is_target_a_directory=possibly
 
 usage="\
 Usage: $0 [OPTION]... [-T] SRCFILE DSTFILE
@@ -137,42 +122,57 @@ while test $# -ne 0; do
     -d) dir_arg=true;;
 
     -g) chgrpcmd="$chgrpprog $2"
-	shift;;
+        shift;;
 
     --help) echo "$usage"; exit $?;;
 
     -m) mode=$2
-	case $mode in
-	  *' '* | *'	'* | *'
-'*	  | *'*'* | *'?'* | *'['*)
-	    echo "$0: invalid mode: $mode" >&2
-	    exit 1;;
-	esac
-	shift;;
+        case $mode in
+          *' '* | *"$tab"* | *"$nl"* | *'*'* | *'?'* | *'['*)
+            echo "$0: invalid mode: $mode" >&2
+            exit 1;;
+        esac
+        shift;;
 
     -o) chowncmd="$chownprog $2"
-	shift;;
+        shift;;
 
     -s) stripcmd=$stripprog;;
 
-    -t) dst_arg=$2
-	shift;;
+    -t)
+        is_target_a_directory=always
+        dst_arg=$2
+        # Protect names problematic for 'test' and other utilities.
+        case $dst_arg in
+          -* | [=\(\)!]) dst_arg=./$dst_arg;;
+        esac
+        shift;;
 
-    -T) no_target_directory=true;;
+    -T) is_target_a_directory=never;;
 
     --version) echo "$0 $scriptversion"; exit $?;;
 
-    --)	shift
-	break;;
+    --) shift
+        break;;
 
-    -*)	echo "$0: invalid option: $1" >&2
-	exit 1;;
+    -*) echo "$0: invalid option: $1" >&2
+        exit 1;;
 
     *)  break;;
   esac
   shift
 done
 
+# We allow the use of options -d and -T together, by making -d
+# take the precedence; this is for compatibility with GNU install.
+
+if test -n "$dir_arg"; then
+  if test -n "$dst_arg"; then
+    echo "$0: target directory not allowed when installing a directory." >&2
+    exit 1
+  fi
+fi
+
 if test $# -ne 0 && test -z "$dir_arg$dst_arg"; then
   # When -d is used, all remaining arguments are directories to create.
   # When -t is used, the destination is already specified.
@@ -186,6 +186,10 @@ if test $# -ne 0 && test -z "$dir_arg$dst_arg"; then
     fi
     shift # arg
     dst_arg=$arg
+    # Protect names problematic for 'test' and other utilities.
+    case $dst_arg in
+      -* | [=\(\)!]) dst_arg=./$dst_arg;;
+    esac
   done
 fi
 
@@ -194,13 +198,26 @@ if test $# -eq 0; then
     echo "$0: no input file specified." >&2
     exit 1
   fi
-  # It's OK to call `install-sh -d' without argument.
+  # It's OK to call 'install-sh -d' without argument.
   # This can happen when creating conditional directories.
   exit 0
 fi
 
 if test -z "$dir_arg"; then
-  trap '(exit $?); exit' 1 2 13 15
+  if test $# -gt 1 || test "$is_target_a_directory" = always; then
+    if test ! -d "$dst_arg"; then
+      echo "$0: $dst_arg: Is not a directory." >&2
+      exit 1
+    fi
+  fi
+fi
+
+if test -z "$dir_arg"; then
+  do_exit='(exit $ret); exit $ret'
+  trap "ret=129; $do_exit" 1
+  trap "ret=130; $do_exit" 2
+  trap "ret=141; $do_exit" 13
+  trap "ret=143; $do_exit" 15
 
   # Set umask so as not to create temps with too-generous modes.
   # However, 'strip' requires both read and write access to temps.
@@ -211,16 +228,16 @@ if test -z "$dir_arg"; then
 
     *[0-7])
       if test -z "$stripcmd"; then
-	u_plus_rw=
+        u_plus_rw=
       else
-	u_plus_rw='% 200'
+        u_plus_rw='% 200'
       fi
       cp_umask=`expr '(' 777 - $mode % 1000 ')' $u_plus_rw`;;
     *)
       if test -z "$stripcmd"; then
-	u_plus_rw=
+        u_plus_rw=
       else
-	u_plus_rw=,u+rw
+        u_plus_rw=,u+rw
       fi
       cp_umask=$mode$u_plus_rw;;
   esac
@@ -228,9 +245,9 @@ fi
 
 for src
 do
-  # Protect names starting with `-'.
+  # Protect names problematic for 'test' and other utilities.
   case $src in
-    -*) src=./$src;;
+    -* | [=\(\)!]) src=./$src;;
   esac
 
   if test -n "$dir_arg"; then
@@ -252,51 +269,20 @@ do
       echo "$0: no destination specified." >&2
       exit 1
     fi
-
     dst=$dst_arg
-    # Protect names starting with `-'.
-    case $dst in
-      -*) dst=./$dst;;
-    esac
 
     # If destination is a directory, append the input filename; won't work
     # if double slashes aren't ignored.
     if test -d "$dst"; then
-      if test -n "$no_target_directory"; then
-	echo "$0: $dst_arg: Is a directory" >&2
-	exit 1
+      if test "$is_target_a_directory" = never; then
+        echo "$0: $dst_arg: Is a directory" >&2
+        exit 1
       fi
       dstdir=$dst
       dst=$dstdir/`basename "$src"`
       dstdir_status=0
     else
-      # Prefer dirname, but fall back on a substitute if dirname fails.
-      dstdir=`
-	(dirname "$dst") 2>/dev/null ||
-	expr X"$dst" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
-	     X"$dst" : 'X\(//\)[^/]' \| \
-	     X"$dst" : 'X\(//\)$' \| \
-	     X"$dst" : 'X\(/\)' \| . 2>/dev/null ||
-	echo X"$dst" |
-	    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
-		   s//\1/
-		   q
-		 }
-		 /^X\(\/\/\)[^/].*/{
-		   s//\1/
-		   q
-		 }
-		 /^X\(\/\/\)$/{
-		   s//\1/
-		   q
-		 }
-		 /^X\(\/\).*/{
-		   s//\1/
-		   q
-		 }
-		 s/.*/./; q'
-      `
-
+      dstdir=`dirname "$dst"`
       test -d "$dstdir"
       dstdir_status=$?
     fi
@@ -307,74 +293,81 @@ do
   if test $dstdir_status != 0; then
     case $posix_mkdir in
       '')
-	# Create intermediate dirs using mode 755 as modified by the umask.
-	# This is like FreeBSD 'install' as of 1997-10-28.
-	umask=`umask`
-	case $stripcmd.$umask in
-	  # Optimize common cases.
-	  *[2367][2367]) mkdir_umask=$umask;;
-	  .*0[02][02] | .[02][02] | .[02]) mkdir_umask=22;;
-
-	  *[0-7])
-	    mkdir_umask=`expr $umask + 22 \
-	      - $umask % 100 % 40 + $umask % 20 \
-	      - $umask % 10 % 4 + $umask % 2
-	    `;;
-	  *) mkdir_umask=$umask,go-w;;
-	esac
-
-	# With -d, create the new directory with the user-specified mode.
-	# Otherwise, rely on $mkdir_umask.
-	if test -n "$dir_arg"; then
-	  mkdir_mode=-m$mode
-	else
-	  mkdir_mode=
-	fi
-
-	posix_mkdir=false
-	case $umask in
-	  *[123567][0-7][0-7])
-	    # POSIX mkdir -p sets u+wx bits regardless of umask, which
-	    # is incompatible with FreeBSD 'install' when (umask & 300) != 0.
-	    ;;
-	  *)
-	    tmpdir=${TMPDIR-/tmp}/ins$RANDOM-$$
-	    trap 'ret=$?; rmdir "$tmpdir/d" "$tmpdir" 2>/dev/null; exit $ret' 0
-
-	    if (umask $mkdir_umask &&
-		exec $mkdirprog $mkdir_mode -p -- "$tmpdir/d") >/dev/null 2>&1
-	    then
-	      if test -z "$dir_arg" || {
-		   # Check for POSIX incompatibilities with -m.
-		   # HP-UX 11.23 and IRIX 6.5 mkdir -m -p sets group- or
-		   # other-writeable bit of parent directory when it shouldn't.
-		   # FreeBSD 6.1 mkdir -m -p sets mode of existing directory.
-		   ls_ld_tmpdir=`ls -ld "$tmpdir"`
-		   case $ls_ld_tmpdir in
-		     d????-?r-*) different_mode=700;;
-		     d????-?--*) different_mode=755;;
-		     *) false;;
-		   esac &&
-		   $mkdirprog -m$different_mode -p -- "$tmpdir" && {
-		     ls_ld_tmpdir_1=`ls -ld "$tmpdir"`
-		     test "$ls_ld_tmpdir" = "$ls_ld_tmpdir_1"
-		   }
-		 }
-	      then posix_mkdir=:
-	      fi
-	      rmdir "$tmpdir/d" "$tmpdir"
-	    else
-	      # Remove any dirs left behind by ancient mkdir implementations.
-	      rmdir ./$mkdir_mode ./-p ./-- 2>/dev/null
-	    fi
-	    trap '' 0;;
-	esac;;
+        # Create intermediate dirs using mode 755 as modified by the umask.
+        # This is like FreeBSD 'install' as of 1997-10-28.
+        umask=`umask`
+        case $stripcmd.$umask in
+          # Optimize common cases.
+          *[2367][2367]) mkdir_umask=$umask;;
+          .*0[02][02] | .[02][02] | .[02]) mkdir_umask=22;;
+
+          *[0-7])
+            mkdir_umask=`expr $umask + 22 \
+              - $umask % 100 % 40 + $umask % 20 \
+              - $umask % 10 % 4 + $umask % 2
+            `;;
+          *) mkdir_umask=$umask,go-w;;
+        esac
+
+        # With -d, create the new directory with the user-specified mode.
+        # Otherwise, rely on $mkdir_umask.
+        if test -n "$dir_arg"; then
+          mkdir_mode=-m$mode
+        else
+          mkdir_mode=
+        fi
+
+        posix_mkdir=false
+        case $umask in
+          *[123567][0-7][0-7])
+            # POSIX mkdir -p sets u+wx bits regardless of umask, which
+            # is incompatible with FreeBSD 'install' when (umask & 300) != 0.
+            ;;
+          *)
+            # $RANDOM is not portable (e.g. dash);  use it when possible to
+            # lower collision chance
+            tmpdir=${TMPDIR-/tmp}/ins$RANDOM-$$
+            trap 'ret=$?; rmdir "$tmpdir/a/b" "$tmpdir/a" "$tmpdir" 2>/dev/null; exit $ret' 0
+
+            # As "mkdir -p" follows symlinks and we work in /tmp possibly;  so
+            # create the $tmpdir first (and fail if unsuccessful) to make sure
+            # that nobody tries to guess the $tmpdir name.
+            if (umask $mkdir_umask &&
+                $mkdirprog $mkdir_mode "$tmpdir" &&
+                exec $mkdirprog $mkdir_mode -p -- "$tmpdir/a/b") >/dev/null 2>&1
+            then
+              if test -z "$dir_arg" || {
+                   # Check for POSIX incompatibilities with -m.
+                   # HP-UX 11.23 and IRIX 6.5 mkdir -m -p sets group- or
+                   # other-writable bit of parent directory when it shouldn't.
+                   # FreeBSD 6.1 mkdir -m -p sets mode of existing directory.
+                   test_tmpdir="$tmpdir/a"
+                   ls_ld_tmpdir=`ls -ld "$test_tmpdir"`
+                   case $ls_ld_tmpdir in
+                     d????-?r-*) different_mode=700;;
+                     d????-?--*) different_mode=755;;
+                     *) false;;
+                   esac &&
+                   $mkdirprog -m$different_mode -p -- "$test_tmpdir" && {
+                     ls_ld_tmpdir_1=`ls -ld "$test_tmpdir"`
+                     test "$ls_ld_tmpdir" = "$ls_ld_tmpdir_1"
+                   }
+                 }
+              then posix_mkdir=:
+              fi
+              rmdir "$tmpdir/a/b" "$tmpdir/a" "$tmpdir"
+            else
+              # Remove any dirs left behind by ancient mkdir implementations.
+              rmdir ./$mkdir_mode ./-p ./-- "$tmpdir" 2>/dev/null
+            fi
+            trap '' 0;;
+        esac;;
     esac
 
     if
       $posix_mkdir && (
-	umask $mkdir_umask &&
-	$doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir"
+        umask $mkdir_umask &&
+        $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir"
       )
     then :
     else
@@ -384,53 +377,51 @@ do
       # directory the slow way, step by step, checking for races as we go.
 
       case $dstdir in
-	/*) prefix='/';;
-	-*) prefix='./';;
-	*)  prefix='';;
+        /*) prefix='/';;
+        [-=\(\)!]*) prefix='./';;
+        *)  prefix='';;
       esac
 
-      eval "$initialize_posix_glob"
-
       oIFS=$IFS
       IFS=/
-      $posix_glob set -f
+      set -f
       set fnord $dstdir
       shift
-      $posix_glob set +f
+      set +f
       IFS=$oIFS
 
       prefixes=
 
       for d
       do
-	test -z "$d" && continue
-
-	prefix=$prefix$d
-	if test -d "$prefix"; then
-	  prefixes=
-	else
-	  if $posix_mkdir; then
-	    (umask=$mkdir_umask &&
-	     $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir") && break
-	    # Don't fail if two instances are running concurrently.
-	    test -d "$prefix" || exit 1
-	  else
-	    case $prefix in
-	      *\'*) qprefix=`echo "$prefix" | sed "s/'/'\\\\\\\\''/g"`;;
-	      *) qprefix=$prefix;;
-	    esac
-	    prefixes="$prefixes '$qprefix'"
-	  fi
-	fi
-	prefix=$prefix/
+        test X"$d" = X && continue
+
+        prefix=$prefix$d
+        if test -d "$prefix"; then
+          prefixes=
+        else
+          if $posix_mkdir; then
+            (umask=$mkdir_umask &&
+             $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir") && break
+            # Don't fail if two instances are running concurrently.
+            test -d "$prefix" || exit 1
+          else
+            case $prefix in
+              *\'*) qprefix=`echo "$prefix" | sed "s/'/'\\\\\\\\''/g"`;;
+              *) qprefix=$prefix;;
+            esac
+            prefixes="$prefixes '$qprefix'"
+          fi
+        fi
+        prefix=$prefix/
       done
 
       if test -n "$prefixes"; then
-	# Don't fail if two instances are running concurrently.
-	(umask $mkdir_umask &&
-	 eval "\$doit_exec \$mkdirprog $prefixes") ||
-	  test -d "$dstdir" || exit 1
-	obsolete_mkdir_used=true
+        # Don't fail if two instances are running concurrently.
+        (umask $mkdir_umask &&
+         eval "\$doit_exec \$mkdirprog $prefixes") ||
+          test -d "$dstdir" || exit 1
+        obsolete_mkdir_used=true
       fi
     fi
   fi
@@ -465,15 +456,12 @@ do
 
     # If -C, don't bother to copy if it wouldn't change the file.
     if $copy_on_change &&
-       old=`LC_ALL=C ls -dlL "$dst"	2>/dev/null` &&
-       new=`LC_ALL=C ls -dlL "$dsttmp"	2>/dev/null` &&
-
-       eval "$initialize_posix_glob" &&
-       $posix_glob set -f &&
+       old=`LC_ALL=C ls -dlL "$dst"     2>/dev/null` &&
+       new=`LC_ALL=C ls -dlL "$dsttmp"  2>/dev/null` &&
+       set -f &&
        set X $old && old=:$2:$4:$5:$6 &&
        set X $new && new=:$2:$4:$5:$6 &&
-       $posix_glob set +f &&
-
+       set +f &&
        test "$old" = "$new" &&
        $cmpprog "$dst" "$dsttmp" >/dev/null 2>&1
     then
@@ -486,24 +474,24 @@ do
       # to itself, or perhaps because mv is so ancient that it does not
       # support -f.
       {
-	# Now remove or move aside any old file at destination location.
-	# We try this two ways since rm can't unlink itself on some
-	# systems and the destination file might be busy for other
-	# reasons.  In this case, the final cleanup might fail but the new
-	# file should still install successfully.
-	{
-	  test ! -f "$dst" ||
-	  $doit $rmcmd -f "$dst" 2>/dev/null ||
-	  { $doit $mvcmd -f "$dst" "$rmtmp" 2>/dev/null &&
-	    { $doit $rmcmd -f "$rmtmp" 2>/dev/null; :; }
-	  } ||
-	  { echo "$0: cannot unlink or rename $dst" >&2
-	    (exit 1); exit 1
-	  }
-	} &&
-
-	# Now rename the file to the real destination.
-	$doit $mvcmd "$dsttmp" "$dst"
+        # Now remove or move aside any old file at destination location.
+        # We try this two ways since rm can't unlink itself on some
+        # systems and the destination file might be busy for other
+        # reasons.  In this case, the final cleanup might fail but the new
+        # file should still install successfully.
+        {
+          test ! -f "$dst" ||
+          $doit $rmcmd -f "$dst" 2>/dev/null ||
+          { $doit $mvcmd -f "$dst" "$rmtmp" 2>/dev/null &&
+            { $doit $rmcmd -f "$rmtmp" 2>/dev/null; :; }
+          } ||
+          { echo "$0: cannot unlink or rename $dst" >&2
+            (exit 1); exit 1
+          }
+        } &&
+
+        # Now rename the file to the real destination.
+        $doit $mvcmd "$dsttmp" "$dst"
       }
     fi || exit 1
 
diff --git a/missing b/missing
index 28055d2..f62bbae 100755
--- a/missing
+++ b/missing
@@ -1,11 +1,10 @@
 #! /bin/sh
-# Common stub for a few missing GNU programs while installing.
+# Common wrapper for a few potentially missing GNU programs.
 
-scriptversion=2009-04-28.21; # UTC
+scriptversion=2013-10-28.13; # UTC
 
-# Copyright (C) 1996, 1997, 1999, 2000, 2002, 2003, 2004, 2005, 2006,
-# 2008, 2009 Free Software Foundation, Inc.
-# Originally by Fran,cois Pinard <pinard at iro.umontreal.ca>, 1996.
+# Copyright (C) 1996-2014 Free Software Foundation, Inc.
+# Originally written by Fran,cois Pinard <pinard at iro.umontreal.ca>, 1996.
 
 # This program is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
@@ -26,69 +25,40 @@ scriptversion=2009-04-28.21; # UTC
 # the same distribution terms that you use for the rest of that program.
 
 if test $# -eq 0; then
-  echo 1>&2 "Try \`$0 --help' for more information"
+  echo 1>&2 "Try '$0 --help' for more information"
   exit 1
 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.
-if test -f configure.ac; then
-  configure_ac=configure.ac
-else
-  configure_ac=configure.in
-fi
+case $1 in
 
-msg="missing on your system"
+  --is-lightweight)
+    # Used by our autoconf macros to check whether the available missing
+    # script is modern enough.
+    exit 0
+    ;;
 
-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
-  ;;
+  --run)
+    # Back-compat with the calling convention used by older automake.
+    shift
+    ;;
 
   -h|--h|--he|--hel|--help)
     echo "\
 $0 [OPTION]... PROGRAM [ARGUMENT]...
 
-Handle \`PROGRAM [ARGUMENT]...' for when PROGRAM is missing, or return an
-error status if there is no known handling for PROGRAM.
+Run 'PROGRAM [ARGUMENT]...', returning a proper advice when this fails due
+to PROGRAM being missing or too old.
 
 Options:
   -h, --help      display this help and exit
   -v, --version   output version information and exit
-  --run           try to run the given command, and emulate it if it fails
 
 Supported PROGRAM values:
-  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
-  help2man     touch the output file
-  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]
+  aclocal   autoconf  autoheader   autom4te  automake  makeinfo
+  bison     yacc      flex         lex       help2man
 
-Version suffixes to PROGRAM as well as the prefixes \`gnu-', \`gnu', and
-\`g' are ignored when checking the name.
+Version suffixes to PROGRAM as well as the prefixes 'gnu-', 'gnu', and
+'g' are ignored when checking the name.
 
 Send bug reports to <bug-automake at gnu.org>."
     exit $?
@@ -100,272 +70,141 @@ Send bug reports to <bug-automake at gnu.org>."
     ;;
 
   -*)
-    echo 1>&2 "$0: Unknown \`$1' option"
-    echo 1>&2 "Try \`$0 --help' for more information"
+    echo 1>&2 "$0: unknown '$1' option"
+    echo 1>&2 "Try '$0 --help' for more information"
     exit 1
     ;;
 
 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 $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*)
-    echo 1>&2 "\
-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*)
-    echo 1>&2 "\
-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."
-    files=`sed -n 's/^[ ]*A[CM]_CONFIG_HEADER(\([^)]*\)).*/\1/p' ${configure_ac}`
-    test -z "$files" && files="config.h"
-    touch_files=
-    for f in $files; do
-      case $f in
-      *:*) touch_files="$touch_files "`echo "$f" |
-				       sed -e 's/^[^:]*://' -e 's/:.*//'`;;
-      *) touch_files="$touch_files $f.in";;
-      esac
-    done
-    touch $touch_files
-    ;;
-
-  automake*)
-    echo 1>&2 "\
-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."
-    find . -type f -name Makefile.am -print |
-	   sed 's/\.am$/.in/' |
-	   while read f; do touch "$f"; done
-    ;;
-
-  autom4te*)
-    echo 1>&2 "\
-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 \`$1' as part of \`Autoconf' from any GNU
-         archive site."
-
-    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 "#! /bin/sh"
-	echo "# Created by GNU Automake missing as a replacement of"
-	echo "#  $ $@"
-	echo "exit 0"
-	chmod +x $file
-	exit 1
-    fi
-    ;;
-
-  bison*|yacc*)
-    echo 1>&2 "\
-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 test $# -ne 1; then
-        eval LASTARG="\${$#}"
-	case $LASTARG in
-	*.y)
-	    SRCFILE=`echo "$LASTARG" | sed 's/y$/c/'`
-	    if test -f "$SRCFILE"; then
-	         cp "$SRCFILE" y.tab.c
-	    fi
-	    SRCFILE=`echo "$LASTARG" | sed 's/y$/h/'`
-	    if test -f "$SRCFILE"; then
-	         cp "$SRCFILE" y.tab.h
-	    fi
-	  ;;
-	esac
-    fi
-    if test ! -f y.tab.h; then
-	echo >y.tab.h
-    fi
-    if test ! -f y.tab.c; then
-	echo 'main() { return 0; }' >y.tab.c
-    fi
-    ;;
-
-  lex*|flex*)
-    echo 1>&2 "\
-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 test $# -ne 1; then
-        eval LASTARG="\${$#}"
-	case $LASTARG in
-	*.l)
-	    SRCFILE=`echo "$LASTARG" | sed 's/l$/c/'`
-	    if test -f "$SRCFILE"; then
-	         cp "$SRCFILE" lex.yy.c
-	    fi
-	  ;;
-	esac
-    fi
-    if test ! -f lex.yy.c; then
-	echo 'main() { return 0; }' >lex.yy.c
-    fi
-    ;;
-
-  help2man*)
-    echo 1>&2 "\
-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 "$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 $?
-    fi
-    ;;
-
-  makeinfo*)
-    echo 1>&2 "\
-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."
-    # 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
-      # ... 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*)
-    shift
-
-    # We have already tried tar in the generic part.
-    # Look for gnutar/gtar before invocation to avoid ugly error
-    # messages.
-    if (gnutar --version > /dev/null 2>&1); then
-       gnutar "$@" && exit 0
-    fi
-    if (gtar --version > /dev/null 2>&1); then
-       gtar "$@" && exit 0
-    fi
-    firstarg="$1"
-    if shift; then
-	case $firstarg in
-	*o*)
-	    firstarg=`echo "$firstarg" | sed s/o//`
-	    tar "$firstarg" "$@" && exit 0
-	    ;;
-	esac
-	case $firstarg in
-	*h*)
-	    firstarg=`echo "$firstarg" | sed s/h//`
-	    tar "$firstarg" "$@" && exit 0
-	    ;;
-	esac
-    fi
-
-    echo 1>&2 "\
-WARNING: I can't seem to be able to run \`tar' with the given arguments.
-         You may want to install GNU tar or Free paxutils, or check the
-         command line arguments."
-    exit 1
-    ;;
-
-  *)
-    echo 1>&2 "\
-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 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
-    ;;
-esac
+# Run the given program, remember its exit status.
+"$@"; st=$?
+
+# If it succeeded, we are done.
+test $st -eq 0 && exit 0
+
+# Also exit now if we it failed (or wasn't found), and '--version' was
+# passed; such an option is passed most likely to detect whether the
+# program is present and works.
+case $2 in --version|--help) exit $st;; esac
+
+# Exit code 63 means version mismatch.  This often happens when the user
+# tries to use an ancient version of a tool on a file that requires a
+# minimum version.
+if test $st -eq 63; then
+  msg="probably too old"
+elif test $st -eq 127; then
+  # Program was missing.
+  msg="missing on your system"
+else
+  # Program was found and executed, but failed.  Give up.
+  exit $st
+fi
 
-exit 0
+perl_URL=http://www.perl.org/
+flex_URL=http://flex.sourceforge.net/
+gnu_software_URL=http://www.gnu.org/software
+
+program_details ()
+{
+  case $1 in
+    aclocal|automake)
+      echo "The '$1' program is part of the GNU Automake package:"
+      echo "<$gnu_software_URL/automake>"
+      echo "It also requires GNU Autoconf, GNU m4 and Perl in order to run:"
+      echo "<$gnu_software_URL/autoconf>"
+      echo "<$gnu_software_URL/m4/>"
+      echo "<$perl_URL>"
+      ;;
+    autoconf|autom4te|autoheader)
+      echo "The '$1' program is part of the GNU Autoconf package:"
+      echo "<$gnu_software_URL/autoconf/>"
+      echo "It also requires GNU m4 and Perl in order to run:"
+      echo "<$gnu_software_URL/m4/>"
+      echo "<$perl_URL>"
+      ;;
+  esac
+}
+
+give_advice ()
+{
+  # Normalize program name to check for.
+  normalized_program=`echo "$1" | sed '
+    s/^gnu-//; t
+    s/^gnu//; t
+    s/^g//; t'`
+
+  printf '%s\n' "'$1' is $msg."
+
+  configure_deps="'configure.ac' or m4 files included by 'configure.ac'"
+  case $normalized_program in
+    autoconf*)
+      echo "You should only need it if you modified 'configure.ac',"
+      echo "or m4 files included by it."
+      program_details 'autoconf'
+      ;;
+    autoheader*)
+      echo "You should only need it if you modified 'acconfig.h' or"
+      echo "$configure_deps."
+      program_details 'autoheader'
+      ;;
+    automake*)
+      echo "You should only need it if you modified 'Makefile.am' or"
+      echo "$configure_deps."
+      program_details 'automake'
+      ;;
+    aclocal*)
+      echo "You should only need it if you modified 'acinclude.m4' or"
+      echo "$configure_deps."
+      program_details 'aclocal'
+      ;;
+   autom4te*)
+      echo "You might have modified some maintainer files that require"
+      echo "the 'autom4te' program to be rebuilt."
+      program_details 'autom4te'
+      ;;
+    bison*|yacc*)
+      echo "You should only need it if you modified a '.y' file."
+      echo "You may want to install the GNU Bison package:"
+      echo "<$gnu_software_URL/bison/>"
+      ;;
+    lex*|flex*)
+      echo "You should only need it if you modified a '.l' file."
+      echo "You may want to install the Fast Lexical Analyzer package:"
+      echo "<$flex_URL>"
+      ;;
+    help2man*)
+      echo "You should only need it if you modified a dependency" \
+           "of a man page."
+      echo "You may want to install the GNU Help2man package:"
+      echo "<$gnu_software_URL/help2man/>"
+    ;;
+    makeinfo*)
+      echo "You should only need it if you modified a '.texi' file, or"
+      echo "any other file indirectly affecting the aspect of the manual."
+      echo "You might want to install the Texinfo package:"
+      echo "<$gnu_software_URL/texinfo/>"
+      echo "The spurious makeinfo call might also be the consequence of"
+      echo "using a buggy 'make' (AIX, DU, IRIX), in which case you might"
+      echo "want to install GNU make:"
+      echo "<$gnu_software_URL/make/>"
+      ;;
+    *)
+      echo "You might have modified some files without having the proper"
+      echo "tools for further handling them.  Check the 'README' file, it"
+      echo "often tells you about the needed prerequisites for installing"
+      echo "this package.  You may also peek at any GNU archive site, in"
+      echo "case some other package contains this missing '$1' program."
+      ;;
+  esac
+}
+
+give_advice "$1" | sed -e '1s/^/WARNING: /' \
+                       -e '2,$s/^/         /' >&2
+
+# Propagate the correct exit status (expected to be 127 for a program
+# not found, 63 for a program that failed due to version mismatch).
+exit $st
 
 # Local variables:
 # eval: (add-hook 'write-file-hooks 'time-stamp)
diff --git a/src/clustal-omega-config.h b/src/clustal-omega-config.h
index edcbc4b..68b7313 100644
--- a/src/clustal-omega-config.h
+++ b/src/clustal-omega-config.h
@@ -228,7 +228,7 @@
 
 /* Define to the full name and version of this package. */
 #ifndef CLUSTAL_OMEGA_PACKAGE_STRING
-#define CLUSTAL_OMEGA_PACKAGE_STRING "Clustal Omega 1.2.3"
+#define CLUSTAL_OMEGA_PACKAGE_STRING "Clustal Omega 1.2.4"
 #endif
 
 /* Define to the one symbol short name of this package. */
@@ -238,7 +238,7 @@
 
 /* Define to the version of this package. */
 #ifndef CLUSTAL_OMEGA_PACKAGE_VERSION
-#define CLUSTAL_OMEGA_PACKAGE_VERSION "1.2.3"
+#define CLUSTAL_OMEGA_PACKAGE_VERSION "1.2.4"
 #endif
 
 /* The size of `fpos_t', as computed by sizeof. */
@@ -301,7 +301,7 @@
 
 /* Version number of package */
 #ifndef CLUSTAL_OMEGA_VERSION
-#define CLUSTAL_OMEGA_VERSION "1.2.3"
+#define CLUSTAL_OMEGA_VERSION "1.2.4"
 #endif
 
 /* Define if using the dmalloc debugging malloc package */
diff --git a/src/clustal/mbed.c b/src/clustal/mbed.c
index 33fd2de..2282aa6 100644
--- a/src/clustal/mbed.c
+++ b/src/clustal/mbed.c
@@ -15,7 +15,7 @@
  ********************************************************************/
 
 /*
- *  RCS $Id: mbed.c 300 2016-06-13 13:29:58Z fabian $
+ *  RCS $Id: mbed.c 316 2016-12-16 16:14:39Z fabian $
  *
  *
  * Reimplementation from scratch of mBed (Blackshields et al., 2010;
@@ -88,8 +88,10 @@ static const int RESTARTS_PER_SPLIT = 10;
 #define USE_KMEANS_LLOYDS 0
 
 
-#ifndef HAVE_LOG2
-#define log2(x)  (log(x) / 0.69314718055994530942)
+//#ifndef HAVE_LOG2
+#ifndef CLUSTAL_OMEGA_HAVE_LOG2
+//#define log2(x)  (log(x) / 0.69314718055994530942)
+#define log2(x)  ( x<=0 ? (float)(-100000) : 1.442695041*log(x) )
 #endif
 #define NUMBER_OF_SEEDS(n) pow(log2(((double)n)), 2)
 
diff --git a/src/hhalign/hhalignment-C.h b/src/hhalign/hhalignment-C.h
index a9aa299..bf5ad99 100644
--- a/src/hhalign/hhalignment-C.h
+++ b/src/hhalign/hhalignment-C.h
@@ -15,7 +15,7 @@
  ********************************************************************/
 
 /*
- *  RCS $Id: hhalignment-C.h 309 2016-06-13 14:10:11Z fabian $
+ *  RCS $Id: hhalignment-C.h 316 2016-12-16 16:14:39Z fabian $
  */
 
 
@@ -82,15 +82,15 @@ Alignment::Alignment(int maxseq, int maxres)
 
     //printf(">>>>>>>>%s:%s:%d: maxseq=%d, maxres=%d\n", __FUNCTION__, __FILE__, __LINE__, maxseq, maxres); /* (FS) */
   longname = new(char[DESCLEN]);
-  sname = new(char*[maxseq+2]); /* MR1 */
-  seq = new(char*[maxseq+2]); /* MR1 */
-  l = new(int[maxres]);
-  X = new(char*[maxseq+2]);  /* MR1 */
-  I = new(short unsigned int*[maxseq+2]); /* MR1 */
-  keep = new(char[maxseq+2]); /* MR1 */
-  display = new(char[maxseq+2]); /* MR1 */
-  wg = new(float[maxseq+2]); /* MR1 */
-  nseqs = new(int[maxres+2]); /* MR1 */
+  sname = new char*[maxseq+2]; /* MR1 */
+  seq = new char*[maxseq+2]; /* MR1 */
+  l = new int[maxres];
+  X = new char*[maxseq+2];  /* MR1 */
+  I = new short unsigned int*[maxseq+2]; /* MR1 */
+  keep = new char[maxseq+2]; /* MR1 */
+  display = new char[maxseq+2]; /* MR1 */
+  wg = new float[maxseq+2]; /* MR1 */
+  nseqs = new int[maxres+2]; /* MR1 */
   N_in=L=0;
   nres=NULL; // number of residues per sequence k
   first=NULL; // first residue in sequence k
@@ -143,7 +143,7 @@ Alignment::Read(FILE* inf, char infile[], char* firstline)
   int k; // Index of sequence being read currently (first=0)
   char line[LINELEN]=""; // input line
   //char cur_seq[MAXCOL]; // Sequence currently read in
-  char *cur_seq=new(char[par.maxColCnt]);
+  char *cur_seq=new char[par.maxColCnt];
   char* cur_name; // Sequence currently read in
   int linenr=0; // current line number in input file
   char skip_sequence=0;
@@ -185,11 +185,11 @@ Alignment::Read(FILE* inf, char infile[], char* firstline)
                               }
 
                           // Create space for residues and paste new sequence in
-                          seq[k]=new(char[strlen(cur_seq)+2]);
+                          seq[k]=new char[strlen(cur_seq)+2];
                           if (!seq[k]) MemoryError("array for input sequences");
-                          X[k]=new(char[strlen(cur_seq)+2]);
+                          X[k]=new char[strlen(cur_seq)+2];
                           if (!X[k]) MemoryError("array for input sequences");
-                          I[k]=new(short unsigned int[strlen(cur_seq)+2]);
+                          I[k]=new short unsigned int[strlen(cur_seq)+2];
                           if (!I[k]) MemoryError("array for input sequences");
                           strcpy(seq[k],cur_seq);
                       }
@@ -238,7 +238,7 @@ Alignment::Read(FILE* inf, char infile[], char* firstline)
 
                   // store sequence name
                   if (v>=4) printf("Reading seq %-16.16s k=%3i n_displ=%3i display[k]=%i keep[k]=%i\n",cur_name,k,n_display,display[k],keep[k]);
-                  sname[k] = new(char[strlen(cur_name)+1]);
+                  sname[k] = new char[strlen(cur_name)+1];
                   if (!sname[k]) {MemoryError("array for sequence names");}
                   strcpy(sname[k],cur_name);
               } // end if(line contains sequence name)
@@ -353,11 +353,11 @@ Alignment::Read(FILE* inf, char infile[], char* firstline)
 
   if (k>=0) //if at least one sequence was read in
       {
-          seq[k]=new(char[strlen(cur_seq)+2]);
+          seq[k]=new char[strlen(cur_seq)+2];
           if (!seq[k]) MemoryError("array for input sequences");
-          X[k]=new(char[strlen(cur_seq)+2]);
+          X[k]=new char[strlen(cur_seq)+2];
           if (!X[k]) MemoryError("array for input sequences");
-          I[k]=new(short unsigned int[strlen(cur_seq)+2]);
+          I[k]=new short unsigned int[strlen(cur_seq)+2];
           if (!I[k]) MemoryError("array for input sequences");
           strcpy(seq[k],cur_seq);
       }
@@ -425,7 +425,7 @@ Alignment::Compress(const char infile[])
     /*static short unsigned int h[MAXSEQ];*/
     /*short*/ unsigned int *h = NULL; /* short may lead to overflow for long alignments, FS, r235 -> r236 */
 
-    h = new(/*short*/ unsigned int[N_in+2]); /* short -> overflow, FS, r235 -> r236 */
+    h = new /*short*/ unsigned int[N_in+2]; /* short -> overflow, FS, r235 -> r236 */
     float *percent_gaps = NULL; /* FS, 2010-Nov */
     char *match_state = NULL;  /* FS, 2010-Nov */
 
@@ -557,13 +557,13 @@ Alignment::Compress(const char infile[])
                had to move declaration of float *percent_gaps out of switch()
             */
             //float percent_gaps[MAXCOL]; //percentage of gaps in column k (with weighted sequences)
-            percent_gaps = new(float[par.maxColCnt]);
+            percent_gaps = new float[par.maxColCnt];
 
             //determine number of columns L in alignment
             L=strlen(seq[kfirst])-1;
 
             // Conversion to integer representation, checking for unequal lengths and initialization
-            if (nres==NULL) nres=new(int[N_in]);
+            if (nres==NULL) nres=new int[N_in];
 #if 0
 //#ifdef HAVE_OPENMP
 #pragma omp parallel for schedule(static), private(l)
@@ -801,7 +801,7 @@ Alignment::Compress(const char infile[])
                had to move declaration of float *percent_gaps out of switch()
             */
             //char match_state[MAXCOL]; //1: column assigned to match state 0: insert state
-            match_state = new(char[par.maxColCnt]);
+            match_state = new char[par.maxColCnt];
 
             // Determine number of columns L in alignment
             L=strlen(seq[0]+1);
@@ -963,7 +963,7 @@ Alignment::FilterForDisplay(int max_seqid, int coverage, int qid, float qsc, int
 
 
     if (par.mark) return n_display;
-    char *dummy = new(char[N_in+1]);
+    char *dummy = new char[N_in+1];
     int vtmp=v, seqid;
     v=0;
     n_display=0;
@@ -1026,12 +1026,12 @@ Alignment::Filter2(char keep[], int coverage, int qid, float qsc, int seqid1, in
 {
     // In the beginnning, keep[k] is 1 for all regular amino acid sequences and 0 for all others (ss_conf, ss_pred,...)
     // In the end, keep[k] will be 1 for all regular representative sequences kept in the alignment, 0 for all others
-    char* in=new(char[N_in+1]); // in[k]=1: seq k has been accepted; in[k]=0: seq k has not yet been accepted at current seqid
-    char* inkk=new(char[N_in+1]); // inkk[k]=1 iff in[ksort[k]]=1 else 0;
-    int* Nmax=new(int[L+2]); // position-dependent maximum-sequence-identity threshold for filtering /* MR1, used to be called idmax*/
-    int* idmaxwin=new(int[L+2]); // minimum value of idmax[i-WFIL,i+WFIL]
-    int* seqid_prev=new(int[N_in+1]); // maximum-sequence-identity threshold used in previous round of filtering (with lower seqid)
-    int* N=new(int[L+2]); // N[i] number of already accepted sequences at position i
+    char* in=new char[N_in+1]; // in[k]=1: seq k has been accepted; in[k]=0: seq k has not yet been accepted at current seqid
+    char* inkk=new char[N_in+1]; // inkk[k]=1 iff in[ksort[k]]=1 else 0;
+    int* Nmax=new int[L+2]; // position-dependent maximum-sequence-identity threshold for filtering /* MR1, used to be called idmax*/
+    int* idmaxwin=new int[L+2]; // minimum value of idmax[i-WFIL,i+WFIL]
+    int* seqid_prev=new int[N_in+1]; // maximum-sequence-identity threshold used in previous round of filtering (with lower seqid)
+    int* N=new int[L+2]; // N[i] number of already accepted sequences at position i
     const int WFIL=25; // see previous line
 
     int diffNmax=Ndiff;       // current  maximum difference of Nmax[i] and Ndiff /* MR1 */
@@ -1059,8 +1059,8 @@ Alignment::Filter2(char keep[], int coverage, int qid, float qsc, int seqid1, in
     // Determine first[k], last[k]?
     if (first==NULL)
         {
-            first=new(int[N_in]);// first non-gap position in sequence k
-            last =new(int[N_in]);// last  non-gap position in sequence k
+            first=new int[N_in];// first non-gap position in sequence k
+            last =new int[N_in];// last  non-gap position in sequence k
             for (k=0; k<N_in; k++) // do this for ALL sequences, not only those with in[k]==1 (since in[k] may be display[k])
                 {
                     for (i=1; i<=L; i++) if (X[k][i]<NAA) break;
@@ -1075,7 +1075,7 @@ Alignment::Filter2(char keep[], int coverage, int qid, float qsc, int seqid1, in
     //if ( (nres==NULL)  || (sizeof(nres)<N_in*sizeof(int)) )
     if  (nres==NULL)  
         {
-            nres=new(int[N_in]);
+            nres=new int[N_in];
             for (k=0; k<N_in; k++) // do this for ALL sequences, not only those with in[k]==1 (since in[k] may be display[k])
                 {
                     int nr=0;
@@ -1089,7 +1089,7 @@ Alignment::Filter2(char keep[], int coverage, int qid, float qsc, int seqid1, in
     // Sort sequences according to length; afterwards, nres[ksort[kk]] is sorted by size
     if (ksort==NULL)
         {
-            ksort=new(int[N_in]); // never reuse alignment object for new alignment with more sequences
+            ksort=new int[N_in]; // never reuse alignment object for new alignment with more sequences
             for (k=0; k<N_in; k++) ksort[k]=k;
             QSortInt(nres,ksort,kfirst+1,N_in-1,-1); //Sort sequences after kfirst (query) in descending order
         }
@@ -1355,7 +1355,7 @@ Alignment::HomologyFilter(int coverage_core, float qsc_core, float coresc)
     const int Ndiff_core=0;
     int n;
     HMM qcore;
-    char* coreseq=new(char[N_in]); // coreseq[k]=1 if sequence belongs to core of alignment (i.e. it is very similar to query)
+    char* coreseq=new char[N_in]; // coreseq[k]=1 if sequence belongs to core of alignment (i.e. it is very similar to query)
     for (int k=0; k<N_in; k++) coreseq[k]=keep[k]; // Copy keep[] into coreseq[]
 
     // Remove sequences with seq. identity larger than seqid percent (remove the shorter of two)
@@ -1406,7 +1406,7 @@ Alignment::FilterWithCoreHMM(char in[], float coresc, HMM& qcore)
     int i; // column in query alignment
     int a; // amino acid (0..19)
     int n=1; // number of sequences that passed filter
-    float** logodds=new(float*[L+1]); // log-odds ratios for HMM qcore
+    float** logodds=new float*[L+1]; // log-odds ratios for HMM qcore
     char gap; // 1: previous state in seq k was a gap 0: previous state in seq k was an amino acid
     float score; // score of sequence k aligned with qcore
 
@@ -1415,8 +1415,8 @@ Alignment::FilterWithCoreHMM(char in[], float coresc, HMM& qcore)
     // Determine first[k], last[k]?
     if (first==NULL)
         {
-            first=new(int[N_in]);// first non-gap position in sequence k
-            last =new(int[N_in]);// last non-gap position in sequence k
+            first=new int[N_in];// first non-gap position in sequence k
+            last =new int[N_in];// last non-gap position in sequence k
             for (k=0; k<N_in; k++) // do this for ALL sequences, not only those with in[k]==1 (since in[k] may be display[k])
                 {
                     for (i=1; i<=L; i++) if (X[k][i]<NAA) break;
@@ -1429,7 +1429,7 @@ Alignment::FilterWithCoreHMM(char in[], float coresc, HMM& qcore)
     // Determine number of residues nres[k]?
     if (nres==NULL)
         {
-            nres=new(int[N_in]);
+            nres=new int[N_in];
             for (k=0; k<N_in; k++) // do this for ALL sequences, not only those with in[k]==1 (since in[k] may be display[k])
                 {
                     int nr=0;
@@ -1712,18 +1712,18 @@ Alignment::FrequenciesAndTransitions(HMM& q, char* in)
                     q.sname[q.ncons]=new(char[10]);
                     if (!q.sname[q.ncons]) {MemoryError("array of names for displayed sequences");}
                     strcpy(q.sname[q.ncons],"Consensus");
-                    q.seq[q.ncons]=new(char[L+2]);
+                    q.seq[q.ncons]=new char[L+2];
                     if (!q.seq[q.ncons]) {MemoryError("array of names for displayed sequences");}
                 }
             if (par.cons)
                 {
                     // Reserve space for consensus sequence as first sequence in alignment
                     q.nfirst=n++; kfirst=-1;
-                    q.sname[q.nfirst]=new(char[strlen(name)+11]);
+                    q.sname[q.nfirst]=new char[strlen(name)+11];
                     if (!q.sname[q.nfirst]) {MemoryError("array of names for displayed sequences");}
                     strcpy(q.sname[q.nfirst],name);
                     strcat(q.sname[q.nfirst],"_consensus");
-                    q.seq[q.nfirst]=new(char[L+2]);
+                    q.seq[q.nfirst]=new char[L+2];
                     if (!q.seq[q.nfirst]) {MemoryError("array of names for displayed sequences");}
                 }
             // Calculate consensus amino acids using similarity matrix
@@ -1781,10 +1781,10 @@ Alignment::FrequenciesAndTransitions(HMM& q, char* in)
                     else if (k==kfirst) nn=q.nfirst=n++;
                     else nn=n++;
                     // strcut(sname[k]," "); // delete rest of name line beginning with two spaces " " // Why this?? Problem for pdb seqs without chain
-                    q.sname[nn]=new(char[strlen(sname[k])+1]);
+                    q.sname[nn]=new char[strlen(sname[k])+1];
                     if (!q.sname[nn]) {MemoryError("array of names for displayed sequences");}
                     strcpy(q.sname[nn],sname[k]);
-                    q.seq[nn]=new(char[strlen(seq[k])+1]);
+                    q.seq[nn]=new char[strlen(seq[k])+1];
                     if (!q.seq[nn]) {MemoryError("array of names for displayed sequences");}
                     strcpy(q.seq[nn],seq[k]);
                 }
@@ -1871,14 +1871,14 @@ Alignment::Amino_acid_frequencies_and_transitions_from_M_state(HMM& q, char* in)
   //float wi[MAXSEQ]; // weight of sequence k in column i, calculated from subalignment i
   float *wi=NULL; // weight of sequence k in column i, calculated from subalignment i
   //float Neff[MAXRES]; // diversity of subalignment i
-  float *Neff = new(float[par.maxResLen]); // diversity of subalignment i
+  float *Neff = new float[par.maxResLen]; // diversity of subalignment i
   int nseqi=0; // number of sequences in subalignment i
   int ncol=0; // number of columns j that contribute to Neff[i]
   char change; // has the set of sequences in subalignment changed? 0:no 1:yes
   float fj[NAA+3]; // to calculate entropy
   float sum;
 
-  wi = new(float[N_in+2]);
+  wi = new float[N_in+2];
 
   // Global weights?
   if (par.wg==1)
@@ -1888,7 +1888,7 @@ Alignment::Amino_acid_frequencies_and_transitions_from_M_state(HMM& q, char* in)
   // Initialization
   q.Neff_HMM=0.0f;
   Neff[0]=0.0; // if the first column has no residues (i.e. change==0), Neff[i]=Neff[i-1]=Neff[0]
-  n = new(int*[L+2]);
+  n = new int*[L+2];
 //#if 0
 #ifdef HAVE_OPENMP
 #pragma omp parallel for schedule(static) private(a)
@@ -2047,9 +2047,9 @@ Alignment::Amino_acid_frequencies_and_transitions_from_M_state(HMM& q, char* in)
       } // end for(k)
       // Normalize and take log
       sum = q.tr[i][M2M]+q.tr[i][M2I]+q.tr[i][M2D]+FLT_MIN;
-      q.tr[i][M2M]=log2(q.tr[i][M2M]/sum);
-      q.tr[i][M2I]=log2(q.tr[i][M2I]/sum);
-      q.tr[i][M2D]=log2(q.tr[i][M2D]/sum);
+      q.tr[i][M2M]=Log2(q.tr[i][M2M]/sum);
+      q.tr[i][M2I]=Log2(q.tr[i][M2I]/sum);
+      q.tr[i][M2D]=Log2(q.tr[i][M2D]/sum);
 
       // for (k=0; k<N_in; k++) if (in[k]) w[k][i]=wi[k];
   } // end loop through alignment columns i
@@ -2099,7 +2099,7 @@ Alignment::Amino_acid_frequencies_and_transitions_from_M_state(HMM& q, char* in)
       }
       q.Neff_HMM/=L;
       float Nlim=fmax(10.0,q.Neff_HMM+1.0); // limiting Neff
-      float scale=log2((Nlim-q.Neff_HMM)/(Nlim-1.0)); // for calculating Neff for those seqs with inserts at specific pos
+      float scale=Log2((Nlim-q.Neff_HMM)/(Nlim-1.0)); // for calculating Neff for those seqs with inserts at specific pos
 //#if 0
 #ifdef HAVE_OPENMP
 #pragma omp parallel for schedule(static) private(k)
@@ -2163,7 +2163,7 @@ Alignment::Transitions_from_I_state(HMM& q, char* in)
     //float wi[MAXSEQ]; // weight of sequence k in column i, calculated from subalignment i
     float *wi = NULL; // weight of sequence k in column i, calculated from subalignment i
     //float Neff[MAXRES]; // diversity of subalignment i
-    float *Neff = new(float[par.maxResLen]); // diversity of subalignment i
+    float *Neff = new float[par.maxResLen]; // diversity of subalignment i
     int nseqi; // number of sequences in subalignment i
     int ncol; // number of columns j that contribute to Neff[i]
     float fj[NAA+3]; // to calculate entropy
@@ -2171,18 +2171,18 @@ Alignment::Transitions_from_I_state(HMM& q, char* in)
     float Nlim=0.0; // only for global weights
     float scale=0.0; // only for global weights
 
-    wi = new(float[N_in+2]);
+    wi = new float[N_in+2];
 
     // Global weights?
     if (par.wg==1)
         {
             for (k=0; k<N_in; k++) wi[k]=wg[k];
             Nlim=fmax(10.0,q.Neff_HMM+1.0); // limiting Neff
-            scale=log2((Nlim-q.Neff_HMM)/(Nlim-1.0)); // for calculating Neff for those seqs with inserts at specific pos
+            scale=Log2((Nlim-q.Neff_HMM)/(Nlim-1.0)); // for calculating Neff for those seqs with inserts at specific pos
         }
 
     // Initialization
-    n = new(int*[L+2]);
+    n = new int*[L+2];
     for (j=1; j<=L; j++) n[j]=new(int[NAA+3]);
 
     //////////////////////////////////////////////////////////////////////////////////////////////
@@ -2309,8 +2309,8 @@ Alignment::Transitions_from_I_state(HMM& q, char* in)
 
             // Normalize and take log
             sum = q.tr[i][I2M]+q.tr[i][I2I];
-            q.tr[i][I2M]=log2(q.tr[i][I2M]/sum);
-            q.tr[i][I2I]=log2(q.tr[i][I2I]/sum);
+            q.tr[i][I2M]=Log2(q.tr[i][I2M]/sum);
+            q.tr[i][I2I]=Log2(q.tr[i][I2I]/sum);
 
         }
     // end loop through alignment columns i
@@ -2365,7 +2365,7 @@ Alignment::Transitions_from_D_state(HMM& q, char* in)
     //float wi[MAXSEQ]; // weight of sequence k in column i, calculated from subalignment i
     float *wi=NULL; // weight of sequence k in column i, calculated from subalignment i
     //float Neff[MAXRES]; // diversity of subalignment i 
-    float *Neff = new(float[par.maxResLen]); // diversity of subalignment i 
+    float *Neff = new float[par.maxResLen]; // diversity of subalignment i 
     int nseqi=0; // number of sequences in subalignment i (for DEBUGGING)
     int ncol=0; // number of columns j that contribute to Neff[i]
     char change; // has the set of sequences in subalignment changed? 0:no 1:yes
@@ -2374,18 +2374,18 @@ Alignment::Transitions_from_D_state(HMM& q, char* in)
     float Nlim=0.0; // only for global weights
     float scale=0.0; // only for global weights
 
-    wi = new(float[N_in+2]); /* FIXME: FS */
+    wi = new float[N_in+2]; /* FIXME: FS */
     // Global weights?
     if (par.wg==1)
         {
             for (k=0; k<N_in; k++) 
                 wi[k]=wg[k];
             Nlim=fmax(10.0,q.Neff_HMM+1.0); // limiting Neff
-            scale=log2((Nlim-q.Neff_HMM)/(Nlim-1.0)); // for calculating Neff for those seqs with dels at specific pos
+            scale=Log2((Nlim-q.Neff_HMM)/(Nlim-1.0)); // for calculating Neff for those seqs with dels at specific pos
         }
 
     // Initialization
-    n = new(int*[L+2]);
+    n = new int*[L+2];
 //#if 0
 #ifdef HAVE_OPENMP
 #pragma omp parallel for schedule(static) private(a) 
@@ -2568,8 +2568,8 @@ Alignment::Transitions_from_D_state(HMM& q, char* in)
 
         // Normalize and take log
         sum = q.tr[i][D2M]+q.tr[i][D2D];
-        q.tr[i][D2M]=log2(q.tr[i][D2M]/sum);
-        q.tr[i][D2D]=log2(q.tr[i][D2D]/sum);
+        q.tr[i][D2M]=Log2(q.tr[i][D2M]/sum);
+        q.tr[i][D2D]=Log2(q.tr[i][D2D]/sum);
 
     }
     // end loop through alignment columns i
@@ -2696,7 +2696,7 @@ Alignment::MergeMasterSlave(Hit& hit, char ta3mfile[])
  N_filtered = Tali.Filter(par.max_seqid,par.coverage,par.qid,par.qsc,par.Ndiff);
 
  // Record imatch[j]
- int* imatch=new(int[hit.j2+1]);
+ int* imatch=new int[hit.j2+1];
  int step = hit.nsteps;
  for (j=hit.j1; j<=hit.j2; j++)
  {
@@ -2828,7 +2828,7 @@ Alignment::MergeMasterSlave(Hit& hit, char ta3mfile[])
  iprev=i; lprev=l;
  if (h>=maxcol-1000) // too few columns? Reserve double space
  {
- char* new_seq=new(char[2*maxcol]);
+ char* new_seq=new char[2*maxcol];
  strncpy(new_seq,cur_seq,maxcol); //////// check: maxcol-1 ????
  delete[](cur_seq); (cur_seq) = NULL;
  cur_seq=new_seq;
@@ -2841,14 +2841,14 @@ Alignment::MergeMasterSlave(Hit& hit, char ta3mfile[])
  cur_seq[h++]='\0';
 
  keep[N_in] = display[N_in] = KEEP_CONDITIONALLY;
- seq[N_in]=new(char[h]);
+ seq[N_in]=new char[h];
  if (!seq[N_in]) MemoryError("array for input sequences");
  strcpy(seq[N_in],cur_seq);
- X[N_in]=new(char[h]);
+ X[N_in]=new char[h];
  if (!X[N_in]) MemoryError("array for input sequences");
- I[N_in]=new(short unsigned int[h]);
+ I[N_in]=new short unsigned int[h];
  if (!I[N_in]) MemoryError("array for input sequences");
- sname[N_in]=new(char[strlen(Tali.sname[k])+1]);
+ sname[N_in]=new char[strlen(Tali.sname[k])+1];
  if (!sname[N_in]) MemoryError("array for input sequences");
  strcpy(sname[N_in],Tali.sname[k]);
  N_in++;
@@ -2879,7 +2879,7 @@ Alignment::AddSequence(char Xk[], int Ik[])
 {
  int i; // position in query and target
  if (L<=0) InternalError("L is not set in AddSequence()");
- X[N_in]=new(char[L+2]);
+ X[N_in]=new char[L+2];
  for (i=0; i<=L+1; i++) X[N_in][i]=Xk[i];
  if (Ik==NULL)
  for (i=0; i<=L+1; i++) I[N_in][i]=0;
@@ -2929,7 +2929,7 @@ Alignment::GetPositionSpecificWeights(float* w[])
  {
 
  // Initialization
- n = new(int*[L+2]);
+ n = new int*[L+2];
  for (j=1; j<=L; j++) n[j]=new(int[NAA+3]);
  for (j=1; j<=L; j++)
  for (a=0; a<NAA+3; a++) n[j][a]=0;
@@ -3046,9 +3046,9 @@ Alignment::Transfer(char **ppcProf, int iCnt){
     /* @<allocate memory for sequences etc@> */
     for (k = 0; k < iCnt; k++){
 #define GOOD_MEASURE 1000 /* Temporary -- can be removed once rest in place */
-        I[k] = new(short unsigned int[iLen+2+GOOD_MEASURE]);
-        X[k] = new(char[iLen+2+GOOD_MEASURE]);
-        seq[k] = new(char[iLen+2+GOOD_MEASURE]);
+        I[k] = new short unsigned int[iLen+2+GOOD_MEASURE];
+        X[k] = new char[iLen+2+GOOD_MEASURE];
+        seq[k] = new char[iLen+2+GOOD_MEASURE];
         seq[k][0] = ' ';
         seq[k][1] = '\0';
         if (NULL == ppcProf[k]){
diff --git a/src/hhalign/hhfullalignment-C.h b/src/hhalign/hhfullalignment-C.h
index 9140c12..8f40fd1 100644
--- a/src/hhalign/hhfullalignment-C.h
+++ b/src/hhalign/hhfullalignment-C.h
@@ -15,7 +15,7 @@
  ********************************************************************/
 
 /*
- *  RCS $Id: hhfullalignment-C.h 309 2016-06-13 14:10:11Z fabian $
+ *  RCS $Id: hhfullalignment-C.h 315 2016-12-15 17:18:30Z fabian $
  */
 
 // hhfullalignment.C
@@ -357,8 +357,8 @@ FullAlignment::PrintHHR(FILE* outf, Hit& hit)
   int iq=hit.i1;  // match state counter for query HMM (displayed in consensus line)
   int jt=hit.j1;  // match state counter for template HMM (displayed in consensus line)
 
-  lq = new(short unsigned int[qa->n+2]);
-  lt = new(short unsigned int[ta->n+2]);
+  lq = new short unsigned int[qa->n+2];
+  lt = new short unsigned int[ta->n+2];
 
   for (k=0; k<qa->n; k++) lq[k]=qa->l[k][hit.i1];
   for (k=0; k<ta->n; k++) lt[k]=ta->l[k][hit.j1];
diff --git a/src/hhalign/hhhalfalignment-C.h b/src/hhalign/hhhalfalignment-C.h
index 53f1d97..5579b73 100644
--- a/src/hhalign/hhhalfalignment-C.h
+++ b/src/hhalign/hhhalfalignment-C.h
@@ -15,7 +15,7 @@
  ********************************************************************/
 
 /*
- *  RCS $Id: hhhalfalignment-C.h 309 2016-06-13 14:10:11Z fabian $
+ *  RCS $Id: hhhalfalignment-C.h 315 2016-12-15 17:18:30Z fabian $
  */
 
 // hhfullalignment.C
@@ -64,10 +64,10 @@ HalfAlignment::HalfAlignment(int maxseqdis)
   n=0; 
   sname=seq=NULL; 
   nss_dssp = nss_pred = nss_conf = nsa_dssp = ncons= -1;
-  h = new(int[maxseqdis]);   //h[k] = next position of sequence k to be written
-  s = new(char*[maxseqdis]);  //s[k][h] = character in column h, sequence k of output alignment
-  l = new(int*[maxseqdis]);   //counts non-gap residues: l[k][i] = index of last residue AT OR BEFORE match state i in seq k
-  m = new(int*[maxseqdis]);   //counts positions:        m[k][i] = position of match state i in string seq[k]  
+  h = new int[maxseqdis];   //h[k] = next position of sequence k to be written
+  s = new char*[maxseqdis];  //s[k][h] = character in column h, sequence k of output alignment
+  l = new int*[maxseqdis];   //counts non-gap residues: l[k][i] = index of last residue AT OR BEFORE match state i in seq k
+  m = new int*[maxseqdis];   //counts positions:        m[k][i] = position of match state i in string seq[k]  
 }
 
 /////////////////////////////////////////////////////////////////////////////////////
diff --git a/src/hhalign/hhhit-C.h b/src/hhalign/hhhit-C.h
index e047946..7f2296c 100644
--- a/src/hhalign/hhhit-C.h
+++ b/src/hhalign/hhhit-C.h
@@ -15,7 +15,7 @@
  ********************************************************************/
 
 /*
- * RCS $Id: hhhit-C.h 308 2016-06-13 14:07:35Z fabian $
+ * RCS $Id: hhhit-C.h 316 2016-12-16 16:14:39Z fabian $
  */
 
 // hhhit.C
@@ -177,20 +177,20 @@ void
 Hit::AllocateBacktraceMatrix(int Nq, int Nt)
 {
   int i;
-  bMM=new(char*[Nq]);
-  bMI=new(char*[Nq]);
-  bIM=new(char*[Nq]);
-  bDG=new(char*[Nq]);
-  bGD=new(char*[Nq]);
-  cell_off=new(char*[Nq]);
+  bMM=new char*[Nq];
+  bMI=new char*[Nq];
+  bIM=new char*[Nq];
+  bDG=new char*[Nq];
+  bGD=new char*[Nq];
+  cell_off=new char*[Nq];
   for (i=0; i<Nq; i++) 
     {
-      bMM[i]=new(char[Nt]);
-      bMI[i]=new(char[Nt]);
-      bIM[i]=new(char[Nt]);
-      bGD[i]=new(char[Nt]);
-      bDG[i]=new(char[Nt]);
-      cell_off[i]=new(char[Nt]);
+      bMM[i]=new char[Nt];
+      bMI[i]=new char[Nt];
+      bIM[i]=new char[Nt];
+      bGD[i]=new char[Nt];
+      bDG[i]=new char[Nt];
+      cell_off[i]=new char[Nt] ;
       if (!bMM[i] || !bMI[i] || !bIM[i] || !bGD[i] || !bDG[i] || !cell_off[i]) 
 	{
 	  fprintf(stderr,"Error: out of memory while allocating row %i (out of %i) for dynamic programming matrices \n",i+1,Nq);
@@ -237,19 +237,19 @@ Hit::DeleteBacktraceMatrix(int Nq)
 void 
 Hit::AllocateForwardMatrix(int Nq, int Nt)
 {
-  F_MM=new(double*[Nq]);
-  F_MI=new(double*[Nq]);
-  F_DG=new(double*[Nq]);
-  F_IM=new(double*[Nq]);
-  F_GD=new(double*[Nq]);
-  scale=new(double[Nq+1]); // need Nq+3?
+  F_MM=new double*[Nq];
+  F_MI=new double*[Nq];
+  F_DG=new double*[Nq];
+  F_IM=new double*[Nq];
+  F_GD=new double*[Nq];
+  scale=new double[Nq+1] ; // need Nq+3?
   for (int i=0; i<Nq; i++) 
     {
-      F_MM[i] = new(double[Nt]);
-      F_MI[i] = new(double[Nt]);
-      F_DG[i] = new(double[Nt]);
-      F_IM[i] = new(double[Nt]);
-      F_GD[i] = new(double[Nt]);
+      F_MM[i] = new double[Nt];
+      F_MI[i] = new double[Nt];
+      F_DG[i] = new double[Nt];
+      F_IM[i] = new double[Nt];
+      F_GD[i] = new double[Nt];
       if (!F_MM[i] || !F_MI[i] || !F_IM[i] || !F_GD[i] || !F_DG[i]) 
 	{
 	  fprintf(stderr,"Error: out of memory while allocating row %i (out of %i) for dynamic programming matrices \n",i+1,Nq);
@@ -294,14 +294,14 @@ Hit::DeleteForwardMatrix(int Nq)
 void 
 Hit::AllocateBackwardMatrix(int Nq, int Nt)
 {
-  B_MM=new(double*[Nq]);
+  B_MM=new double*[Nq];
   B_MI=F_MI; 
   B_DG=F_DG; 
   B_IM=F_IM; 
   B_GD=F_GD; 
   for (int i=0; i<Nq; i++) 
     {
-      B_MM[i] = new(double[Nt]);
+      B_MM[i] = new double[Nt];
       if (!B_MM[i]) 
 	{
 	  fprintf(stderr,"Error: out of memory while allocating row %i (out of %i) for dynamic programming matrices \n",i+1,Nq);
@@ -374,11 +374,11 @@ Hit::Viterbi(HMM& q, HMM& t, float** Sstruc)
     //float sDG[MAXRES];          // sDG[i][j] = score of best alignment up to indices (i,j) ending in (Delete,Gap)
     //float sIM[MAXRES];          // sIM[i][j] = score of best alignment up to indices (i,j) ending in (Ins,Match)
     //float sMI[MAXRES];          // sMI[i][j] = score of best alignment up to indices (i,j) ending in (Match,Ins) 
-    float *sMM = new(float[par.maxResLen]);   // sMM[i][j] = score of best alignment up to indices (i,j) ending in (Match,Match) 
-    float *sGD = new(float[par.maxResLen]);   // sGD[i][j] = score of best alignment up to indices (i,j) ending in (Gap,Delete) 
-    float *sDG = new(float[par.maxResLen]);   // sDG[i][j] = score of best alignment up to indices (i,j) ending in (Delete,Gap)
-    float *sIM = new(float[par.maxResLen]);   // sIM[i][j] = score of best alignment up to indices (i,j) ending in (Ins,Match)
-    float *sMI = new(float[par.maxResLen]);   // sMI[i][j] = score of best alignment up to indices (i,j) ending in (Match,Ins) 
+    float *sMM = new float[par.maxResLen];   // sMM[i][j] = score of best alignment up to indices (i,j) ending in (Match,Match) 
+    float *sGD = new float[par.maxResLen];   // sGD[i][j] = score of best alignment up to indices (i,j) ending in (Gap,Delete) 
+    float *sDG = new float[par.maxResLen];   // sDG[i][j] = score of best alignment up to indices (i,j) ending in (Delete,Gap)
+    float *sIM = new float[par.maxResLen];   // sIM[i][j] = score of best alignment up to indices (i,j) ending in (Ins,Match)
+    float *sMI = new float[par.maxResLen];   // sMI[i][j] = score of best alignment up to indices (i,j) ending in (Match,Ins) 
     float smin=(par.loc? 0:-FLT_MAX);  //used to distinguish between SW and NW algorithms in maximization         
     int i=0,j=0;      //query and template match state indices
     float sMM_i_j=0, sMI_i_j=0, sIM_i_j=0, sGD_i_j=0, sDG_i_j=0;
@@ -697,8 +697,8 @@ Hit::Forward(HMM& q, HMM& t, float** Pstruc)
         }
     
     // Calculate log2(P_forward)
-    score = log2(Pforward)-10.0f;
-    for (i=1; i<=q.L+1; i++) score -= log2(scale[i]);
+    score = Log2(Pforward)-10.0f;
+    for (i=1; i<=q.L+1; i++) score -= Log2(scale[i]);
     //   state = MM;
     
     if (par.loc) 
@@ -1124,9 +1124,9 @@ Hit::Backtrace(HMM& q, HMM& t)
   nsteps=step; 
   
   // Allocate new space for alignment scores
-  if (t.Xcons) Xcons = new( char[q.L+2]); // for template consensus sequence aligned to query
-  S    = new( float[nsteps+1]);
-  S_ss = new( float[nsteps+1]);
+  if (t.Xcons) Xcons = new char[q.L+2]; // for template consensus sequence aligned to query
+  S    = new float[nsteps+1];
+  S_ss = new float[nsteps+1];
   if (!S_ss) MemoryError("space for HMM-HMM alignments");
 
   // Add contribution from secondary structure score, record score along alignment,
@@ -1226,7 +1226,7 @@ Hit::StochasticBacktrace(HMM& q, HMM& t, char maximize)
   int i,j;         // query and template match state indices
 //  float pmin=(par.loc? 1.0: 0.0);    // used to distinguish between SW and NW algorithms in maximization         
   const float pmin=0;
-  double* scale_cum = new(double[q.L+2]);
+  double* scale_cum = new double[q.L+2];
   
 
   scale_cum[0]=1;
@@ -1245,7 +1245,7 @@ Hit::StochasticBacktrace(HMM& q, HMM& t, char maximize)
   else 
     {
 //      float sumF[q.L+t.L];
-      double* sumF=new(double[q.L+t.L]);
+      double* sumF=new double[q.L+t.L];
       sumF[0]=0.0;
       for (j=1; j<=t.L; j++)        sumF[j] = sumF[j-1] + F_MM[q.L][j]/scale_cum[q.L];;
       for (j=t.L+1; j<t.L+q.L; j++) sumF[j] = sumF[j-1] + F_MM[j-t.L][t.L]/scale_cum[j-t.L];;
@@ -1369,9 +1369,9 @@ Hit::StochasticBacktrace(HMM& q, HMM& t, char maximize)
   nsteps=step; 
 
   // Allocate new space for alignment scores
-  if (t.Xcons) Xcons = new( char[q.L+2]); // for template consensus sequence aligned to query
-  S    = new( float[nsteps+1]);
-  S_ss = new( float[nsteps+1]);
+  if (t.Xcons) Xcons = new char[q.L+2]; // for template consensus sequence aligned to query
+  S    = new float[nsteps+1];
+  S_ss = new float[nsteps+1];
   if (!S_ss) MemoryError("space for HMM-HMM alignments");
 
   // Add contribution from secondary structure score, record score along alignment,
@@ -1473,10 +1473,10 @@ Hit::BacktraceMAC(HMM& q, HMM& t)
   nsteps=step; 
     
   // Allocate new space for alignment scores
-  if (t.Xcons) Xcons = new( char[q.L+2]); // for template consensus sequence aligned to query
-  S    = new( float[nsteps+1]);
-  S_ss = new( float[nsteps+1]);
-  P_posterior = new( float[nsteps+1]);
+  if (t.Xcons) Xcons = new char[q.L+2]; // for template consensus sequence aligned to query
+  S    = new float[nsteps+1];
+  S_ss = new float[nsteps+1];
+  P_posterior = new float[nsteps+1];
   if (!P_posterior) MemoryError("space for HMM-HMM alignments");
 
   // Add contribution from secondary structure score, record score along alignment,
@@ -1681,9 +1681,9 @@ Hit::InitializeBacktrace(HMM& q, HMM& t)
     if (irep==1) //if this is the first single repeat repeat hit with this template
         {
             //Copy information about template profile to hit and reset template pointers to avoid destruction
-            longname=new(char[strlen(t.longname)+1])();
-            name    =new(char[strlen(t.name)+1])();
-            file    =new(char[strlen(t.file)+1])();
+            longname=new char[strlen(t.longname)+1]();
+            name    =new char[strlen(t.name)+1]();
+            file    =new char[strlen(t.file)+1]();
             if (!file) {
                 MemoryError("space for alignments with database HMMs. \nNote that all alignments have to be kept in memory");
             }
@@ -1694,8 +1694,8 @@ Hit::InitializeBacktrace(HMM& q, HMM& t)
             strcpy(fold ,t.fold);
             strcpy(cl ,t.cl);
             strcpy(file,t.file);
-            sname=new(char*[t.n_display])();   // Call Compare only once with irep=1
-            seq  =new(char*[t.n_display])();   // Call Compare only once with irep=1
+            sname=new char*[t.n_display]();   // Call Compare only once with irep=1
+            seq  =new char*[t.n_display]();   // Call Compare only once with irep=1
             if (!sname || !seq) {
                 MemoryError("space for alignments with database HMMs.\nNote that all sequences for display have to be kept in memory");
             }
@@ -1728,9 +1728,9 @@ Hit::InitializeBacktrace(HMM& q, HMM& t)
         }    
     
     // Allocate new space
-    this->i = new( int[i2+j2+2])();
-    this->j = new( int[i2+j2+2])();
-    states  = new( char[i2+j2+2])();
+    this->i = new int[i2+j2+2]();
+    this->j = new int[i2+j2+2]();
+    states  = new char[i2+j2+2]();
     S = S_ss = P_posterior = NULL; // set to NULL to avoid deleting data from irep=1 when hit with irep=2 is removed 
     Xcons = NULL;
 } /* this is the end of Hit::InitializeBacktrace() */
diff --git a/src/hhalign/hhhitlist-C.h b/src/hhalign/hhhitlist-C.h
index 95777fc..a86c23d 100644
--- a/src/hhalign/hhhitlist-C.h
+++ b/src/hhalign/hhhitlist-C.h
@@ -15,7 +15,7 @@
  ********************************************************************/
 
 /*
- * RCS $Id: hhhitlist-C.h 307 2016-06-13 14:04:39Z fabian $
+ * RCS $Id: hhhitlist-C.h 315 2016-12-15 17:18:30Z fabian $
  */
 
 // hhhitlist.C
@@ -1283,32 +1283,32 @@ HitList::TransitiveScoring()
       index.Add(name,k);
     }
   // Read symmetric Z-scores matrix
-  Z = new(float*[N]);
+  Z = new float*[N];
   for (k=0; k<N; k++) 
     {
-      Z[k] = new(float[N]);
+      Z[k] = new float[N];
       for (l=0; l<k; l++) Z[k][l] = Z[l][k];
       unused = fread(Z[k]+k,sizeof(float),N-k,wfile);   
     }
   // Read symmetric covariance matrix
-  C = new(float*[N]);
+  C = new float*[N];
   for (k=0; k<N; k++) 
     {
-      C[k] = new(float[N]);
+      C[k] = new float[N];
       for (l=0; l<k; l++) C[k][l] = C[l][k];
       unused = fread(C[k]+k,sizeof(float),N-k,wfile);
     }
   fclose(wfile);
 
   // Allocate memory
-  Zq = new(float[N]);
-  Ztq = new(float[N]);
-  Zrq = new(float[N]);
-  fold = new(char*[N]);
-  fam = new(char*[N]);
-  Prob = new(float[N]);
-  ll = new(int[N]);
-  w = new(float[N]);
+  Zq   = new float[N];
+  Ztq  = new float[N];
+  Zrq  = new float[N];
+  fold = new char*[N];
+  fam  = new char*[N];
+  Prob = new float[N];
+  ll   = new int[N];
+  w    = new float[N];
 
   // Transform P-values to normally distributed Z-scores and store in Zq vector
   fprintf(stderr,"Transform P-values to Z-scores\n");
@@ -1371,12 +1371,12 @@ HitList::TransitiveScoring()
   else
     {
       // Generate submatrix of C for indices l for which Z_lq,Z_lk > Zmin_trans 
-      double** Csub = new(double*[M]);
-      double** Cinv = new(double*[M]);
+      double** Csub = new double*[M];
+      double** Cinv = new double*[M];
       for (m=0; m<M; m++) 
 	{
-	  Csub[m] = new(double[M]);
-	  Cinv[m] = new(double[M]);
+	  Csub[m] = new double[M];
+	  Cinv[m] = new double[M];
 	  for (n=0; n<M; n++)
 	    Csub[m][n] = double(C[ll[m]][ll[n]]);
 	}
@@ -1451,10 +1451,10 @@ HitList::TransitiveScoring()
       else 
 	{
 	  // Generate submatrix of C for indices l for which Z_lq,Z_lk > Zmin_trans 
-	  double** Csub = new(double*[M]);
+	  double** Csub = new double*[M];
 	  for (m=0; m<M; m++) 
 	    {
-	      Csub[m] = new(double[M]);
+	      Csub[m] = new double[M];
 	      for (n=0; n<M; n++)
 		Csub[m][n] = double(C[ll[m]][ll[n]]);
 	    }
@@ -1468,8 +1468,8 @@ HitList::TransitiveScoring()
 	  else 
 	    {
 	      
-	      double** Cinv = new(double*[M]);
-	      for (m=0; m<M; m++) Cinv[m] = new(double[M]);
+	      double** Cinv = new double*[M];
+	      for (m=0; m<M; m++) Cinv[m] = new double[M];
 
 	      // Invert Csub
 	      InvertMatrix(Cinv,Csub,M);
@@ -1648,32 +1648,32 @@ HitList::TransitiveScoring2()
       index.Add(name,k);
     }
   // Read symmetric Z-scores matrix
-  Z = new(float*[N]);
+  Z = new float*[N];
   for (k=0; k<N; k++) 
     {
-      Z[k] = new(float[N]);
+      Z[k] = new float[N];
       for (l=0; l<k; l++) Z[k][l] = Z[l][k];
       unused = fread(Z[k]+k,sizeof(float),N-k,wfile);   
     }
   // Read symmetric covariance matrix
-  C = new(float*[N]);
+  C = new float*[N];
   for (k=0; k<N; k++) 
     {
-      C[k] = new(float[N]);
+      C[k] = new float[N];
       for (l=0; l<k; l++) C[k][l] = C[l][k];
       unused = fread(C[k]+k,sizeof(float),N-k,wfile);
     }
   fclose(wfile);
 
   // Allocate memory
-  Zq = new(float[N]);
-  Ztq = new(float[N]);
-  Zrq = new(float[N]);
-  fold = new(char*[N]);
-  fam = new(char*[N]);
-  Prob = new(float[N]);
-  ll = new(int[N]);
-  w = new(float[N]);
+  Zq   = new float[N];
+  Ztq  = new float[N];
+  Zrq  = new float[N];
+  fold = new char*[N];
+  fam  = new char*[N];
+  Prob = new float[N];
+  ll   = new int[N];
+  w    = new float[N];
 
   // Transform P-values to normally distributed Z-scores and store in Zq vector
   fprintf(stderr,"Transform P-values to Z-scores\n");
@@ -1737,12 +1737,12 @@ HitList::TransitiveScoring2()
   else
     {
       // Generate submatrix of C for indices l for which Z_lq,Z_lk > Zmin_trans 
-      double** Csub = new(double*[M]);
-      double** Cinv = new(double*[M]);
+      double** Csub = new double*[M];
+      double** Cinv = new double*[M];
       for (m=0; m<M; m++) 
 	{
-	  Csub[m] = new(double[M]);
-	  Cinv[m] = new(double[M]);
+	  Csub[m] = new double[M];
+	  Cinv[m] = new double[M];
 	  for (n=0; n<M; n++)
 	    Csub[m][n] = double(C[ll[m]][ll[n]]);
 	}
@@ -1819,10 +1819,10 @@ HitList::TransitiveScoring2()
       else 
 	{
 	  // Generate submatrix of C for indices l for which Z_lq,Z_lk > Zmin_trans 
-	  double** Csub = new(double*[M]);
+	  double** Csub = new double*[M];
 	  for (m=0; m<M; m++) 
 	    {
-	      Csub[m] = new(double[M]);
+	      Csub[m] = new double[M];
 	      for (n=0; n<M; n++)
 		Csub[m][n] = double(C[ll[m]][ll[n]]);
 	    }
@@ -1836,8 +1836,8 @@ HitList::TransitiveScoring2()
 	  else 
 	    {
 	      
-	      double** Cinv = new(double*[M]);
-	      for (m=0; m<M; m++) Cinv[m] = new(double[M]);
+	      double** Cinv = new double*[M];
+	      for (m=0; m<M; m++) Cinv[m] = new double[M];
 
 // 	      // Invert Csub
 // 	      InvertMatrix(Cinv,Csub,M);
@@ -2018,32 +2018,32 @@ HitList::TransitiveScoring3()
       index.Add(name,k);
     }
   // Read symmetric Z-scores matrix
-  Z = new(float*[N]);
+  Z = new float*[N];
   for (k=0; k<N; k++) 
     {
-      Z[k] = new(float[N]);
+      Z[k] = new float[N];
       for (l=0; l<k; l++) Z[k][l] = Z[l][k];
       unused = fread(Z[k]+k,sizeof(float),N-k,wfile);   
     }
   // Read symmetric covariance matrix
-  C = new(float*[N]);
+  C = new float*[N];
   for (k=0; k<N; k++) 
     {
-      C[k] = new(float[N]);
+      C[k] = new float[N];
       for (l=0; l<k; l++) C[k][l] = C[l][k];
       unused = fread(C[k]+k,sizeof(float),N-k,wfile);
     }
   fclose(wfile);
 
   // Allocate memory
-  Zq = new(float[N]);
-  Ztq = new(float[N]);
-  Zrq = new(float[N]);
-  fold = new(char*[N]);
-  fam = new(char*[N]);
-  Prob = new(float[N]);
-  ll = new(int[N]);
-  w = new(float[N]);
+  Zq   = new float[N];
+  Ztq  = new float[N];
+  Zrq  = new float[N];
+  fold = new char*[N];
+  fam  = new char*[N];
+  Prob = new float[N];
+  ll   = new int[N];
+  w    = new float[N];
 
   // Transform P-values to normally distributed Z-scores and store in Zq vector
   fprintf(stderr,"Transform P-values to Z-scores\n");
@@ -2112,12 +2112,12 @@ HitList::TransitiveScoring3()
       else
 	{
 	  // Generate submatrix of C for indices l for which Z_lq,Z_lk > Zmin_trans 
-	  double** Csub = new(double*[M]);
-	  double** Cinv = new(double*[M]);
+	  double** Csub = new double*[M];
+	  double** Cinv = new double*[M];
 	  for (m=0; m<M; m++) 
 	    {
-	      Csub[m] = new(double[M]);
-	      Cinv[m] = new(double[M]);
+	      Csub[m] = new double[M];
+	      Cinv[m] = new double[M];
 	      for (n=0; n<M; n++)
 		Csub[m][n] = double(C[ll[m]][ll[n]]);
 	    }
@@ -2184,10 +2184,10 @@ HitList::TransitiveScoring3()
       else 
 	{
 	  // Generate submatrix of C for indices l for which Z_lq,Z_lk > Zmin_trans 
-	  double** Csub = new(double*[M]);
+	  double** Csub = new double*[M];
 	  for (m=0; m<M; m++) 
 	    {
-	      Csub[m] = new(double[M]);
+	      Csub[m] = new double[M];
 	      for (n=0; n<M; n++)
 		Csub[m][n] = double(C[ll[m]][ll[n]]);
 	    }
@@ -2201,8 +2201,8 @@ HitList::TransitiveScoring3()
 	  else 
 	    {
 	      
-	      double** Cinv = new(double*[M]);
-	      for (m=0; m<M; m++) Cinv[m] = new(double[M]);
+	      double** Cinv = new double*[M];
+	      for (m=0; m<M; m++) Cinv[m] = new double[M];
 
 	      // Invert Csub
  	      InvertMatrix(Cinv,Csub,M); 
@@ -2383,32 +2383,32 @@ HitList::TransitiveScoring4()
       index.Add(name,k);
     }
   // Read symmetric Z-scores matrix
-  Z = new(float*[N]);
+  Z = new float*[N];
   for (k=0; k<N; k++) 
     {
-      Z[k] = new(float[N]);
+      Z[k] = new float[N];
       for (l=0; l<k; l++) Z[k][l] = Z[l][k];
       unused = fread(Z[k]+k,sizeof(float),N-k,wfile);   
     }
   // Read symmetric covariance matrix
-  C = new(float*[N]);
+  C = new float*[N];
   for (k=0; k<N; k++) 
     {
-      C[k] = new(float[N]);
+      C[k] = new float[N];
       for (l=0; l<k; l++) C[k][l] = C[l][k];
       unused = fread(C[k]+k,sizeof(float),N-k,wfile);
     }
   fclose(wfile);
 
   // Allocate memory
-  Zq = new(float[N]);
-  Ztq = new(float[N]);
-  Zrq = new(float[N]);
-  fold = new(char*[N]);
-  fam = new(char*[N]);
-  Prob = new(float[N]);
-  ll = new(int[N]);
-  w = new(float[N]);
+  Zq   = new float[N];
+  Ztq  = new float[N];
+  Zrq  = new float[N];
+  fold = new char*[N];
+  fam  = new char*[N];
+  Prob = new float[N];
+  ll   = new int[N];
+  w    = new float[N];
 
   // Transform P-values to normally distributed Z-scores and store in Zq vector
   fprintf(stderr,"Transform P-values to Z-scores\n");
@@ -2470,10 +2470,10 @@ HitList::TransitiveScoring4()
   else
     {
       // Generate submatrix of C for indices l for which Z_lq,Z_lk > Zmin_trans 
-      double** Csub = new(double*[M]);
+      double** Csub = new double*[M];
       for (m=0; m<M; m++) 
 	{
-	  Csub[m] = new(double[M]);
+	  Csub[m] = new double[M];
 	  for (n=0; n<M; n++)
 	    Csub[m][n] = double(C[ll[m]][ll[n]]);
 	}
@@ -2536,10 +2536,10 @@ HitList::TransitiveScoring4()
       else 
 	{
 	  // Generate submatrix of C for indices l for which Z_lq,Z_lk > Zmin_trans 
-	  double** Csub = new(double*[M]);
+	  double** Csub = new double*[M];
 	  for (m=0; m<M; m++) 
 	    {
-	      Csub[m] = new(double[M]);
+	      Csub[m] = new double[M];
 	      for (n=0; n<M; n++)
 		Csub[m][n] = double(C[ll[m]][ll[n]]);
 	    }
@@ -2838,9 +2838,9 @@ HitList::InvertMatrix(double** B, double** A, int N)
     }
 
   int k,l,m;
-  double** V = new(double*[N]);
-  double* s  = new(double[N]);
-  for (k=0; k<N; k++) V[k] = new(double[N]);
+  double** V = new double*[N];
+  double* s  = new double[N];
+  for (k=0; k<N; k++) V[k] = new double[N];
 
   // Copy original matrix A into B since B will be overwritten by SVD()
   for (k=0; k<N; k++) 
@@ -2923,7 +2923,7 @@ HitList::SVD(double **A, int n, double w[], double **V)
   double pythag(double a, double b);
   int flag,i,its,j,jj,k,l=1,nm=1;
   double anorm,c,f,g,h,s,scale,x,y,z,*rv1;
-  rv1=new(double[n]);
+  rv1=new double[n];
   g=scale=anorm=0.0;    
   
   // Householder reduction to bidiagonal form.
diff --git a/src/hhalign/hhhmm-C.h b/src/hhalign/hhhmm-C.h
index ce4d7db..401c724 100644
--- a/src/hhalign/hhhmm-C.h
+++ b/src/hhalign/hhhmm-C.h
@@ -15,7 +15,7 @@
  ********************************************************************/
 
 /*
- * RCS $Id: hhhmm-C.h 309 2016-06-13 14:10:11Z fabian $
+ * RCS $Id: hhhmm-C.h 316 2016-12-16 16:14:39Z fabian $
  */
 
 
@@ -186,12 +186,12 @@ HMM& HMM::operator=(HMM& q)
   
   n_display=q.n_display;
   for (int k=0; k<n_display; k++) {
-    sname[k]=new(char[strlen(q.sname[k])+1]);
+    sname[k]=new char[strlen(q.sname[k])+1];
     if (!sname[k]) MemoryError("array of names for sequences to display");
     strcpy(sname[k],q.sname[k]);
   }
   for (int k=0; k<n_display; k++) {
-    seq[k]=new(char[strlen(q.seq[k])+1]); 
+    seq[k]=new char[strlen(q.seq[k])+1]; 
     if (!seq[k]) MemoryError("array of names for sequences to display");
     strcpy(seq[k],q.seq[k]);
   }
@@ -327,7 +327,7 @@ HMM::Read(FILE* dbf, char* path)
       else if (!strcmp("SEQ",str3))
 	{
         //char cur_seq[MAXCOL]=""; //Sequence currently read in
-        char *cur_seq = new(char[par.maxColCnt]); //Sequence currently read in
+        char *cur_seq = new char[par.maxColCnt]; //Sequence currently read in
 	  int k;                // sequence index; start with -1; after reading name of n'th sequence-> k=n
 	  int h;                // index for character in input line
 	  int l=1;              // index of character in sequence seq[k]
@@ -358,14 +358,14 @@ HMM::Read(FILE* dbf, char* path)
 
 		  //If this is not the first sequence then store residues of previous sequence
 		  if (k>0) {
-		    seq[k-1]=new(char[strlen(cur_seq)+1]); 
+		    seq[k-1]=new char[strlen(cur_seq)+1]; 
 		    if (!seq[k-1]) MemoryError("array of sequences to display");
 		    strcpy(seq[k-1],cur_seq);
 		  }
 
 		  // store sequence name
 		  strcut(line+1); //find next white-space character and overwrite it with end-of-string character
-		  sname[k] = new (char[strlen(line+1)+1]); //+1 for terminating '\0'
+		  sname[k] = new char[strlen(line+1)+1]; //+1 for terminating '\0'
 		  if (!sname[k]) MemoryError("array of names for sequences to display");
 		  strcpy(sname[k],line+1);           //store sequence name in **name
 		  l=1; i=1;		
@@ -461,7 +461,7 @@ HMM::Read(FILE* dbf, char* path)
 	    } //while(getline)
 	  //If this is not the first sequence some residues have already been read in
 	  if (k>=0) {
-	    seq[k]=new(char[strlen(cur_seq)+1]); 
+	    seq[k]=new char[strlen(cur_seq)+1]; 
 	    if (!seq[k]) MemoryError("array of sequences to display");
 	    strcpy(seq[k],cur_seq);
 	  }
@@ -733,7 +733,7 @@ HMM::ReadHMMer(FILE* dbf, char* filestr)
 	  if (nsa_dssp<0) 
 	    {
 	      nsa_dssp=k++;
-	      seq[nsa_dssp] = new(char[/*MAXRES*/par.maxResLen+2]);
+	      seq[nsa_dssp] = new char[/*MAXRES*/par.maxResLen+2];
 	      sname[nsa_dssp] = new(char[15]);
 	      strcpy(seq[nsa_dssp]," ");
 	      strcpy(sname[nsa_dssp],"sa_dssp");
@@ -754,7 +754,7 @@ HMM::ReadHMMer(FILE* dbf, char* filestr)
 	  if (nss_pred<0) 
 	    {
 	      nss_pred=k++;
-	      seq[nss_pred] = new(char[/*MAXRES*/par.maxResLen+2]);
+	      seq[nss_pred] = new char[/*MAXRES*/par.maxResLen+2];
 	      sname[nss_pred] = new(char[15]);
 	      strcpy(seq[nss_pred]," ");
 	      strcpy(sname[nss_pred],"ss_pred");
@@ -775,7 +775,7 @@ HMM::ReadHMMer(FILE* dbf, char* filestr)
 	  if (nss_conf<0) 
 	    {
 	      nss_conf=k++;
-	      seq[nss_conf] = new(char[/*MAXRES*/par.maxResLen+2]);
+	      seq[nss_conf] = new char[/*MAXRES*/par.maxResLen+2];
 	      sname[nss_conf] = new(char[15]);
 	      strcpy(seq[nss_conf]," ");
 	      strcpy(sname[nss_conf],"ss_conf");
@@ -857,7 +857,7 @@ HMM::ReadHMMer(FILE* dbf, char* filestr)
 
 	  // Prepare to store DSSP states (if there are none, delete afterwards)
 	  nss_dssp=k++;
-	  seq[nss_dssp] = new(char[/*MAXRES*/par.maxResLen+2]);
+	  seq[nss_dssp] = new char[/*MAXRES*/par.maxResLen+2];
 	  sname[nss_dssp] = new(char[15]);
 	  strcpy(sname[nss_dssp],"ss_dssp");
 
@@ -1033,12 +1033,12 @@ HMM::ReadHMMer(FILE* dbf, char* filestr)
     {
       sname[k]=new(char[10]);
       strcpy(sname[k],"Consensus");
-      sname[k+1]=new(char[strlen(longname)+1]);
+      sname[k+1]=new char[strlen(longname)+1];
       strcpy(sname[k+1],longname);
-      seq[k]=new(char[L+2]); 
+      seq[k]=new char[L+2]; 
       seq[k][0]=' '; 
       seq[k][L+1]='\0'; 
-      seq[k+1]=new(char[L+2]); 
+      seq[k+1]=new char[L+2]; 
       seq[k+1][0]=' '; 
       seq[k+1][L+1]='\0'; 
       for (i=1; i<=L; ++i)
@@ -1056,11 +1056,11 @@ HMM::ReadHMMer(FILE* dbf, char* filestr)
     } 
   else 
     {
-      sname[k]=new(char[strlen(longname)+1]);
+      sname[k]=new char[strlen(longname)+1];
       /* FIXME valgrind says bytes get lost here during hmm iteration --
          fixed in HMM::ClobberGlobal(), I (FS) think */
       strcpy(sname[k],longname);
-      seq[k]=new(char[L+2]); 
+      seq[k]=new char[L+2]; 
       seq[k][0]=' '; 
       seq[k][L+1]='\0'; 
     }
@@ -1235,7 +1235,7 @@ HMM::ReadHMMer3(FILE* dbf, char* filestr)
                  if (nsa_dssp<0)
                      {
                          nsa_dssp=k++;
-                         seq[nsa_dssp] = new(char[/*MAXRES*/par.maxResLen+2]);
+                         seq[nsa_dssp] = new char[/*MAXRES*/par.maxResLen+2];
                          sname[nsa_dssp] = new(char[15]);
                          strcpy(seq[nsa_dssp]," ");
                          strcpy(sname[nsa_dssp],"sa_dssp");
@@ -1256,7 +1256,7 @@ HMM::ReadHMMer3(FILE* dbf, char* filestr)
                  if (nss_pred<0)
                      {
                          nss_pred=k++;
-                         seq[nss_pred] = new(char[/*MAXRES*/par.maxResLen+2]);
+                         seq[nss_pred] = new char[/*MAXRES*/par.maxResLen+2];
                          sname[nss_pred] = new(char[15]);
                          strcpy(seq[nss_pred]," ");
                          strcpy(sname[nss_pred],"ss_pred");
@@ -1277,7 +1277,7 @@ HMM::ReadHMMer3(FILE* dbf, char* filestr)
                  if (nss_conf<0)
                      {
                          nss_conf=k++;
-                         seq[nss_conf] = new(char[/*MAXRES*/par.maxResLen+2]);
+                         seq[nss_conf] = new char[/*MAXRES*/par.maxResLen+2];
                          sname[nss_conf] = new(char[15]);
                          strcpy(seq[nss_conf]," ");
                          strcpy(sname[nss_conf],"ss_conf");
@@ -1333,7 +1333,7 @@ HMM::ReadHMMer3(FILE* dbf, char* filestr)
 
                  ptr = strscn(line);
                  for (a=0; a<=D2D && ptr; ++a)
-                     tr[0][a] = log2((float) exp(-1.0*strflta(ptr,99999))); //store transition probabilites as log2 values
+                     tr[0][a] = Log2((float) exp(-1.0*strflta(ptr,99999))); //store transition probabilites as log2 values
                  // strinta returns next integer in string and puts ptr to first char
                  // after the integer. Returns -99999 if '*' is found.
                  // ptr is set to 0 if no integer is found after ptr. 
@@ -1347,7 +1347,7 @@ HMM::ReadHMMer3(FILE* dbf, char* filestr)
 
                  // Prepare to store DSSP states (if there are none, delete afterwards) 
                  nss_dssp=k++;
-                 seq[nss_dssp] = new(char[/*MAXRES*/par.maxResLen+2]);
+                 seq[nss_dssp] = new char[/*MAXRES*/par.maxResLen+2];
                  sname[nss_dssp] = new(char[15]);
                  strcpy(sname[nss_dssp],"ss_dssp");
 
@@ -1471,7 +1471,7 @@ HMM::ReadHMMer3(FILE* dbf, char* filestr)
 
                          ptr+=2;
                          for (a=0; a<=D2D && ptr; ++a)
-                             tr[i][a] = log2((float) exp(-1.0*strflta(ptr,99999))); //store transition prob's as log2-values 
+                             tr[i][a] = Log2((float) exp(-1.0*strflta(ptr,99999))); //store transition prob's as log2-values 
                          if (!ptr) return Warning(dbf,line,name);
                          if (v>=4)
                              {
@@ -1527,12 +1527,12 @@ HMM::ReadHMMer3(FILE* dbf, char* filestr)
      {
          sname[k]=new(char[10]);
          strcpy(sname[k],"Consensus");
-         sname[k+1]=new(char[strlen(longname)+1]);
+         sname[k+1]=new char[strlen(longname)+1];
          strcpy(sname[k+1],longname);
-         seq[k]=new(char[L+2]);
+         seq[k]=new char[L+2];
          seq[k][0]=' ';
          seq[k][L+1]='\0';
-         seq[k+1]=new(char[L+2]);
+         seq[k+1]=new char[L+2];
          seq[k+1][0]=' ';
          seq[k+1][L+1]='\0';
          for (i=1; i<=L; ++i)
@@ -1550,9 +1550,9 @@ HMM::ReadHMMer3(FILE* dbf, char* filestr)
      }
  else
      {
-         sname[k]=new(char[strlen(longname)+1]);
+         sname[k]=new char[strlen(longname)+1];
          strcpy(sname[k],longname);
-         seq[k]=new(char[L+2]);
+         seq[k]=new char[L+2];
          seq[k][0]=' ';
          seq[k][L+1]='\0';
      }
@@ -2107,7 +2107,7 @@ void
 HMM::InsertCalibration(char* infile)
 {
   char* line =  new(char[LINELEN]);    // input line
-  char** lines = new(char*[3*L+100000]);
+  char** lines = new char*[3*L+100000];
   int nline=0;
   int l;
   char done=0;   // inserted new 'EVD mu sigma' line?
@@ -2136,7 +2136,7 @@ HMM::InsertCalibration(char* infile)
 	  sprintf(lines[nline],"EVD   %-7.4f %-7.4f",lamda,mu);
 	  nline++;
 	}
-      lines[nline]=new(char[strlen(line)+1]); 
+      lines[nline]=new char[strlen(line)+1]; 
       if (!lines[nline]) MemoryError("space to read in HHM file for calibration");
       strcpy (lines[nline],line);
       nline++;
diff --git a/src/hhalign/hhmatrices-C.h b/src/hhalign/hhmatrices-C.h
index 38261fe..dacc65d 100644
--- a/src/hhalign/hhmatrices-C.h
+++ b/src/hhalign/hhmatrices-C.h
@@ -15,7 +15,7 @@
  ********************************************************************/
 
 /*
- * RCS $Id: hhmatrices-C.h 274 2012-04-24 23:28:24Z dave $
+ * RCS $Id: hhmatrices-C.h 316 2016-12-16 16:14:39Z fabian $
  */
 
 // Substitution matrices and their background frequencies
@@ -430,7 +430,7 @@ SetSubstitutionMatrix()
   //Precompute matrix R for amino acid pseudocounts:
   for (a=0; a<20; ++a)
     for (b=0; b<20; ++b)   
-      S[a][b] = log2(R[a][b]/pb[a]); // S[a][b] = log2(P(a,b)/P(a)/P(b))
+      S[a][b] = Log2(R[a][b]/pb[a]); // S[a][b] = log2(P(a,b)/P(a)/P(b))
   
   // Evaluate sequence identity underlying substitution matrix
   if (v>=3)
@@ -440,11 +440,11 @@ SetSubstitutionMatrix()
       float entropy_pb=0.0f;
       float mut_info=0.0f;
       for (a=0; a<20; ++a) id+=P[a][a];
-      for (a=0; a<20; ++a) entropy_pb-=pb[a]*log2(pb[a]);
+      for (a=0; a<20; ++a) entropy_pb-=pb[a]*Log2(pb[a]);
       for (a=0; a<20; ++a) 
 	  for (b=0; b<20; ++b) 
 	    {
-	      entropy-=P[a][b]*log2(R[a][b]);
+	      entropy-=P[a][b]*Log2(R[a][b]);
 	      mut_info += P[a][b]*S[a][b];
 	    }
       
@@ -538,7 +538,7 @@ SetRnaSubstitutionMatrix()
   //Precompute matrix R for amino acid pseudocounts:
   for (a=0; a<20; ++a)
     for (b=0; b<20; ++b)   
-      S[a][b] = log2(R[a][b]/pb[a]); // S[a][b] = log2(P(a,b)/P(a)/P(b))
+      S[a][b] = Log2(R[a][b]/pb[a]); // S[a][b] = log2(P(a,b)/P(a)/P(b))
   
   // Evaluate sequence identity underlying substitution matrix
   if (v>=3)
@@ -548,11 +548,11 @@ SetRnaSubstitutionMatrix()
       float entropy_pb=0.0f;
       float mut_info=0.0f;
       for (a=0; a<20; ++a) id+=P[a][a];
-      for (a=0; a<20; ++a) entropy_pb-=pb[a]*log2(pb[a]);
+      for (a=0; a<20; ++a) entropy_pb-=pb[a]*Log2(pb[a]);
       for (a=0; a<20; ++a) 
 	  for (b=0; b<20; ++b) 
 	    {
-	      entropy-=P[a][b]*log2(R[a][b]);
+	      entropy-=P[a][b]*Log2(R[a][b]);
 	      mut_info += P[a][b]*S[a][b];
 	    }
       
@@ -646,7 +646,7 @@ SetDnaSubstitutionMatrix()
   //Precompute matrix R for amino acid pseudocounts:
   for (a=0; a<20; ++a)
     for (b=0; b<20; ++b)   
-      S[a][b] = log2(R[a][b]/pb[a]); // S[a][b] = log2(P(a,b)/P(a)/P(b))
+      S[a][b] = Log2(R[a][b]/pb[a]); // S[a][b] = log2(P(a,b)/P(a)/P(b))
   
   // Evaluate sequence identity underlying substitution matrix
   if (v>=3)
@@ -656,11 +656,11 @@ SetDnaSubstitutionMatrix()
       float entropy_pb=0.0f;
       float mut_info=0.0f;
       for (a=0; a<20; ++a) id+=P[a][a];
-      for (a=0; a<20; ++a) entropy_pb-=pb[a]*log2(pb[a]);
+      for (a=0; a<20; ++a) entropy_pb-=pb[a]*Log2(pb[a]);
       for (a=0; a<20; ++a) 
 	  for (b=0; b<20; ++b) 
 	    {
-	      entropy-=P[a][b]*log2(R[a][b]);
+	      entropy-=P[a][b]*Log2(R[a][b]);
 	      mut_info += P[a][b]*S[a][b];
 	    }
       
@@ -739,7 +739,7 @@ SetSecStrucSubstitutionMatrix()
       for (B=0; B<NSSPRED; B++)
 	{
 	  P73[A][B][cf] = 1.-par.ssa + par.ssa*Ppred[cf*NSSPRED*NDSSP + B*NDSSP + A];
-	  S73[A][B][cf] = log2(P73[A][B][cf]);
+	  S73[A][B][cf] = Log2(P73[A][B][cf]);
 	}
 
   for (B=0; B<NSSPRED; B++)
@@ -750,7 +750,7 @@ SetSecStrucSubstitutionMatrix()
 	    sum=0;
 	    for (A=1; A<NDSSP; A++)
 	      sum += P73[A][B][cf] * P73[A][BB][ccf] * Pobs[A];
-	    S33[B][cf][BB][ccf] = log2(sum);
+	    S33[B][cf][BB][ccf] = Log2(sum);
 	  }  
 } /* this is the end of SetSecStrucSubstitutionMatrix() */
 
diff --git a/src/hhalign/hhutil-C.h b/src/hhalign/hhutil-C.h
index ddf81aa..b7b2981 100644
--- a/src/hhalign/hhutil-C.h
+++ b/src/hhalign/hhutil-C.h
@@ -15,7 +15,7 @@
  ********************************************************************/
 
 /*
- * RCS $Id: hhutil-C.h 290 2013-09-20 15:18:12Z fabian $
+ * RCS $Id: hhutil-C.h 315 2016-12-15 17:18:30Z fabian $
  */
 
 #define PARAMETERSFROMFILE 0
@@ -513,12 +513,12 @@ ReadDefaultsFile(int& argc_conf, char** argv_conf)
 	      if (*c=='\0' || *c=='\n' || *c=='#')         //Is end of line reached?
 		{
 		  *c='\0'; 
-		  argv_conf[argc_conf]=new(char[strlen(c_first)+1]);
+		  argv_conf[argc_conf]=new char[strlen(c_first)+1];
 		  strcpy(argv_conf[argc_conf++],c_first); 
 		  break;
 		}
 	      *c='\0'; 
-	      argv_conf[argc_conf]=new(char[strlen(c_first)+1]);
+	      argv_conf[argc_conf]=new char[strlen(c_first)+1];
 	      strcpy(argv_conf[argc_conf++],c_first);
 	      printf("Argument: %s\n",c_first);
 	      c++;
diff --git a/src/hhalign/util-C.h b/src/hhalign/util-C.h
index 224ce17..f3031f0 100644
--- a/src/hhalign/util-C.h
+++ b/src/hhalign/util-C.h
@@ -15,7 +15,7 @@
  ********************************************************************/
 
 /*
- * RCS $Id: util-C.h 309 2016-06-13 14:10:11Z fabian $
+ * RCS $Id: util-C.h 316 2016-12-16 16:14:39Z fabian $
  */
 
 // Utility subroutines
@@ -30,6 +30,7 @@
 #endif
 #include <sys/time.h>
 //#include "new_new.h" /* memory tracking */
+#include "../config.h"
 
 /////////////////////////////////////////////////////////////////////////////////////
 // Arithmetics
@@ -51,8 +52,11 @@ inline int iround(double x) {return int(floor(x+0.5));}
 inline double fmean(double x, double y, double d) { return pow( (pow(x,d)+pow(y,d))/2 ,1./d);}
 
 // log base 2
-inline float log2(float x)  {return (x<=0? (float)(-100000):1.442695041*log(x));}
-inline float log10(float x) {return (x<=0? (float)(-100000):0.434294481*log(x));}
+//#ifndef CLUSTAL_OMEGA_HAVE_LOG2
+//#ifndef HAVE_LOG2
+inline float Log2(float x)  {return (x<=0? (float)(-100000):1.442695041*log(x));}
+inline float Log10(float x) {return (x<=0? (float)(-100000):0.434294481*log(x));}
+//#endif
 
 
 /////////////////////////////////////////////////////////////////////////////////////
@@ -243,7 +247,7 @@ inline float NormalizeToX(float* array, int length, float x, float* def_array=NU
 inline char* sprintg(float val, int w)
 {
   static char str[100];
-  float log10val = log10(fabs(val));
+  float log10val = Log10(fabs(val));
   int neg = (val<0? 1: 0);
   if (log10val >= w-neg-1 || -log10val > 3) 
     {
diff --git a/src/squid/clustal.c b/src/squid/clustal.c
index 06f5400..650004a 100644
--- a/src/squid/clustal.c
+++ b/src/squid/clustal.c
@@ -14,7 +14,7 @@
  * formatted files. Derivative of msf.c; MSF is a pretty
  * generic interleaved format.   
  * 
- * RCS $Id: clustal.c 312 2016-07-14 16:57:39Z fabian $ (Original squid RCS Id: clustal.c,v 1.1 1999/07/15 22:26:53 eddy Exp)
+ * RCS $Id: clustal.c 315 2016-12-15 17:18:30Z fabian $ (Original squid RCS Id: clustal.c,v 1.1 1999/07/15 22:26:53 eddy Exp)
  */
 
 #include <stdbool.h>
@@ -291,12 +291,12 @@ WriteClustal(FILE *fp, MSA *msa)
 	      }
 	      /* printf("%*s") gives problems for unicode, FS, -> 290 */
 	      /*fprintf(fp, "%-*s\t%s\t%d\n", namelen+5, msa->sqname[idx], buf, piResCnt[idx]);*/
-	      fprintf(fp, "%s%*s %s\t%d\n", msa->sqname[idx], namelen+5-utf8len(msa->sqname[idx]), "", buf, piResCnt[idx]);
+	      fprintf(fp, "%s%*s %s\t%d\n", msa->sqname[idx], (int)(namelen+5-utf8len(msa->sqname[idx])), "", buf, piResCnt[idx]);
 	    }
 	    else {
 	      /* printf("%*s") gives problems for unicode, FS, -> 290 */
 	      /*fprintf(fp, "%-*s\t%s\n", namelen+5, msa->sqname[idx], buf);*/
-	      fprintf(fp, "%s%*s %s\n", msa->sqname[idx], namelen+5-utf8len(msa->sqname[idx]), "", buf);
+	      fprintf(fp, "%s%*s %s\n", msa->sqname[idx], (int)(namelen+5-utf8len(msa->sqname[idx])), "", buf);
 	    }
 #else
 	    fprintf(fp, "%*s %s\n", namelen, msa->sqname[idx], buf);
diff --git a/src/squid/hsregex.c b/src/squid/hsregex.c
index 52d4898..aaaeaf8 100644
--- a/src/squid/hsregex.c
+++ b/src/squid/hsregex.c
@@ -494,7 +494,7 @@ int *flagp;
 	register char *ret;
 	register char *chain;
 	register char *latest;
-	int flags;
+	int flags = 0;
 	register int c;
 
 	*flagp = WORST;				/* Tentatively. */
@@ -535,7 +535,7 @@ int *flagp;
 	register char *ret;
 	register char op;
 	register char *next;
-	int flags;
+	int flags = 0;
 
 	ret = regatom(cp, &flags);
 	if (ret == NULL)
diff --git a/src/squid/msf.c b/src/squid/msf.c
index 6b59f91..b322441 100644
--- a/src/squid/msf.c
+++ b/src/squid/msf.c
@@ -14,7 +14,7 @@
  * formatted files. Designed using format specifications
  * kindly provided by Steve Smith of Genetics Computer Group.
  * 
- * RCS $Id: msf.c 217 2011-03-19 10:27:10Z andreas $ (Original squid RCS Id: msf.c,v 1.4 2001/04/23 00:35:33 eddy Exp)
+ * RCS $Id: msf.c 316 2016-12-16 16:14:39Z fabian $ (Original squid RCS Id: msf.c,v 1.4 2001/04/23 00:35:33 eddy Exp)
  */
 
 #include <stdio.h>
@@ -80,9 +80,9 @@ ReadMSF(MSAFILE *afp)
 {
   MSA    *msa;
   char   *s;
-  int     alleged_alen;
-  int     alleged_type;
-  int     alleged_checksum;
+  int     alleged_alen = 0;
+  int     alleged_type = 0;
+  int     alleged_checksum = 0;
   char   *tok;
   char   *sp;
   int     slen;

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/debian-med/clustalo.git



More information about the debian-med-commit mailing list